저는 최근에 C++에서 Windows API를 사용하여 창 클래스를 만들려고했습니다. 그러나 ShowWindow를 호출 할 때마다이 함수는 마지막 오류를 1400 (ERROR_INVALID_WINDOW_HANDLE)로 설정합니다. 잠시 동안 시도 후, 나는 다음과 같은 예를 통해 발견 : http://blogs.msdn.com/b/oldnewthing/archive/2005/04/22/410773.aspx#commentsShowWindow invalid window handle
에도 새 프로젝트 (I 2008 MSVC Express를 사용)를 생성하고 (내가 싫어하는) 정확하게 코드를 복사, 내가 발견, 그 동안
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은 위의 링크에서 발견 된 코드에서 발췌 한 것입니다 누군가가 윈도우 변수를 멤버 변수로 처리하는 방법에 대한 아이디어가 있다면 ShowWindow에서 오류 1400을받지 않고 클래스를 작성한 경우, 도움을 많이 주시면 감사하겠습니다.
이것은 사소한 것처럼 들릴지 모르지만 유효한 창 핸들로 설정되도록 GetHWND() 반환 값을 확인 했습니까? 만약 당신이 링크 한 코드 (정직하게 쓰여졌을 때 이미 구식이었고 시간이 아무런 도움이되지 않았다)은 WM_NCCREATE를 다음과 같이 처리하는 것에 달려있다. (예 :! :: IsWindow (prw-> GetHWND() 이 작업이 올바르게 수행되지 않았거나 오류가 발생하면 창 핸들이 유효하지 않습니다. – WhozCraig
제안 된대로 코드를 추가하려고 시도했지만 IsWindow가 1을 반환하여 창 핸들을 나타냅니다. 기존 창을 식별합니다. [microsoft.com : IsWindow() 함수 참조] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633528%28v=vs.85%29.aspx) – Mmarss