C++ 错误\u CreateWindowEx()中的无效\u窗口\u句柄
当CreateWindowEx()在我的程序中失败时,我得到错误\u无效\u窗口\u句柄。我使用的是本地Win32 API的C++。 我不知道为什么,我尝试过在CreateWindowEx中使用一些参数,但每次都会产生完全相同的错误 我还尝试将C++ 错误\u CreateWindowEx()中的无效\u窗口\u句柄,c++,winapi,user-interface,window,C++,Winapi,User Interface,Window,当CreateWindowEx()在我的程序中失败时,我得到错误\u无效\u窗口\u句柄。我使用的是本地Win32 API的C++。 我不知道为什么,我尝试过在CreateWindowEx中使用一些参数,但每次都会产生完全相同的错误 我还尝试将W添加到随机函数和数据类型中,希望UNICODE版本能够以某种方式工作……当然,没有任何变化 这是调用CreateWindowEx()的函数: 这是主要的方法: static HWND mainhwnd; void main() { DWORD t
W
添加到随机函数和数据类型中,希望UNICODE版本能够以某种方式工作……当然,没有任何变化
这是调用CreateWindowEx()的函数:
这是主要的方法:
static HWND mainhwnd;
void main()
{
DWORD time;
time = GetTickCount();
MSG msg;
WNDCLASSEXW wnd = { 0 };
NOTIFYICONDATA nid;
InitMainWindow( &mainhwnd, &wnd, MainWndProc );
InitNotifyIcon( &mainhwnd, &nid );
ShowWindow( mainhwnd, true );
UpdateWindow( mainhwnd );
time = ( GetTickCount() - time );
std::cout << "Time: " << time << "\r\n" << std::endl;
for( ; ; ) //message loop
{
while( GetMessage( &msg, NULL, 0, 0 ) )
{
if( WM_CLOSE == msg.message ) //reassign close button to minimize to tray
{
printf("close\r\n");
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
/*if( !IsDialogMessage( hwndListDialog, &msg ) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}*/
}
Sleep( 5 );
}
}
我想问题出在您调用DefWindowProc 尝试更改行:
return DefWindowProc( mainhwnd, uMsg, wParam, lParam );
为此:
return DefWindowProc( hwnd, uMsg, wParam, lParam );
我刚刚在这里编译了您的代码,它可以正常工作。我想说调用了您的
MainWndProc
,问题是您将mainhwnd
作为DefWindowProc参数传递,而它仍然没有初始化。你应该做的是:
return DefWindowProc( hwnd, uMsg, wParam, lParam );
1.
RegisterClassEx调用的结果是什么<代码>2。是否调用过您的窗口进程?@Mr.com我确实调用了GetLastError(),因此我知道我得到了错误\u无效\u窗口\u句柄。@romar。我刚刚把我的Windows程序添加到问题中。它从未被调用。在WM_上返回0
是否会创建更改任何内容?@pezcode不幸的是,它没有。CreateWindowEx()函数本身失败,这意味着它无法首先到达Wndproc。谢谢!那是一个愚蠢的错误,我不是故意键入mainhwnd的。
return DefWindowProc( hwnd, uMsg, wParam, lParam );
return DefWindowProc( hwnd, uMsg, wParam, lParam );