Winシェルからコマンドを実行するには、必要でした
ShellExecuteA(NULL, "open", "http://stackoverflow.com", NULL, NULL, SW_SHOWNORMAL);
そして今、私はForgers Win32チュートリアルを進めていますが、画面にゴミが印刷されないようにするために必要なAサフィックスを見つけています。これは、OSのデフォルトの文字形式と関係があることを私は知っています。2番目の例で使用する*A関数の数に関係なくNULLが返されるため、OSを「正規化」できれば、これが最善の解決策になる可能性がありますRegisterClassExA
(* Aサフィックスのllloottttssssを追加して以下に再現)
#include <windows.h>
const wchar_t g_szClassName[] = L"myWindowClass";
// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{/*...*/
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
//Step 1: Registering the Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, L"Window Registration Failed!", L"Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 2: Creating the Window...
return Msg.wParam;
}
上記のコードを再検討してForgers(* Aを削除)のようL""
にし、代わりに文字列初期化子を使用しましたが、割り当て中にエラーが発生しますconst char g_szClassName[] = L"myWindowClass";
エラーC2053:'g_szClassName':ワイド文字列の不一致
に置き換えるchar
と、認識されたタイプではないwchar
ことを示すコンパイラエラーメッセージが生成されます。wchar
_編集_
L""
私は文字列指定子が好ましい解決策であり、私が追求したいものであることを収集します。私の質問が茂みの周りを打ち負かしているようであれば申し訳ありませんが、私は提案を受け入れています。
そのコードを現在使用しているものに更新し、到達できないものを切り取りました。
_編集_
wchar_t
エラーコードは87、無効なパラメータなので、パラメータ( )の割り当ては結局間違っていると思い wc.lpszClassName = g_szClassName;
ます...:@(
_編集_
間違っていると思いますか?!const LPCTSTR g_szClassName = L"myWindowClass";
物事を修正(または破壊)しませんでした。