是否有一个范围问题分配我的类窗口句柄在InitInstance()与WinProc()的全局?



在下面的代码中,从调用CreateWindowW()返回的句柄的全局赋值似乎超出了范围。我无法在InitInstance()之外访问它。当我将赋值移到WinProc()时,它仍然在我访问的其他函数的作用域中。

HWND hWndTop;                                   // Handle to top window
.
.
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
.
.
HWND hWnd = CreateWindowW(szWindowClass,....
hWndTop = hWnd;   // This did not work.
.
.
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
hWndTop = hWnd;    // This did work.
.
.
}

…只是你的WndProcInitInstance可以设置其值之前试图使用hWndTop。换句话说,问题不是"我给hWndTop的任务被撤销了"。问题是"我给hWndTop的分配还没有发生"。——陈志强

CreateWindow()将在退出InitInstance()之前向WndProc()发送一些消息,例如WM_(NC)CREATE,WM_GETMINMAXINFO等。因此,hWndTop还没有为WndProc()接收到的每条消息设置- Remy Lebeau

相关内容

  • 没有找到相关文章

最新更新