最近、C++ で Windows API を使用してウィンドウ クラスを作成しようとしています。ただし、ShowWindow を呼び出そうとすると、関数は最後のエラーを 1400 (ERROR_INVALID_WINDOW_HANDLE) に設定します。しばらく試した後、次の例を見つけました: http://blogs.msdn.com/b/oldnewthing/archive/2005/04/22/410773.aspx#comments
新しいプロジェクトを作成し (私は MSVC Express 2008 を使用しています)、コードを正確にコピーしても (これは私はやりたくないことです)、コードがウィンドウを正常に作成しているにもかかわらず、ShowWindow 関数が依然としてエラー 1400 を報告することを発見しました。上記のリンクにあるコード:
int PASCAL
WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, int nShowCmd)
{
g_hinst = hinst;
if (SUCCEEDED(CoInitialize(NULL))) {
InitCommonControls();
RootWindow *prw = RootWindow::Create();
if (prw) {
ShowWindow(prw->GetHWND(), nShowCmd);
int error = GetLastError(); //Line added by me, error gets set to 1400.
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
CoUninitialize();
}
return 0;
}
(完全なコードは上記のリンクにあります)
ShowWindow でエラー 1400 を受け取ることなく、ウィンドウ ハンドルをクラスのメンバー変数として持つ方法について誰かがアイデアを持っている場合は、助けていただければ幸いです。