私はWindowsプログラミングの経験はあまりありませんが、このコードの何が問題なのかを明確に見ることはできません。時には必ずしもそうとは限りませんが、タスクマネージャで開いていることもありますので、クラスを登録してウィンドウを作成していると思いますが、問題はShowWindow()関数にあります。しかし、私は肯定的ではありません。Windowsプログラミング、ウィンドウが開いていない、ビルドエラーがありません
私の理解では、プログラムの流れは: ウィンドウは登録されたクラスで作成されます。 ウィンドウが表示されます。 ウィンドウProcで処理されるメッセージを継続して検索します。
私はこれらすべてのことをやったように感じるので、私の理解は間違っているか、コードに何か不足していますか?
ありがとうございました。
ソースコード:
#include <Windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_DESTROY)
{
PostQuitMessage(0);
return 0;
}
DefWindowProc(hwnd, uMsg, wParam, lParam);
}
int WINAPI wWinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
//Variable for message loop.
MSG msg;
//Setting up the window class.
WNDCLASSEX windowClass;
windowClass.cbSize = sizeof(windowClass);
windowClass.style = CS_HREDRAW | CS_VREDRAW | CS_PARENTDC;
windowClass.lpfnWndProc = WindowProc;
windowClass.hInstance = hinstance;
windowClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
windowClass.lpszClassName = "WindowClass";
RegisterClassEx(&windowClass);
HWND windowHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "WindowClass", "My Program", WS_OVERLAPPEDWINDOW, 500, 200, 800, 500, NULL, NULL, hinstance, 0);
if (!windowHandle)
return FALSE;
ShowWindow(windowHandle, nCmdShow);
// Start the message loop.
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// Return the exit code to the system.
return msg.wParam;
}
API呼び出しの失敗をチェックし、GetLastErrorが何を示すかを確認します。 –
私は 'WNDCLASSEX windowClass = {};'を使って、構造体のすべての要素がゼロに初期化されていることを確認します。 –
ありがとうございます。私はそれをし、それは働いた。 – kazama