我有一个用WinAPI编写的程序。 我有登录窗口,然后是实际的程序窗口。 我要摧毁的登录窗口,并创建新的窗口..销毁当前窗口并创建一个新窗口
我一直在使用这样的:
破坏程序:
DestroyWindow(MainHwnd);
和窗口的WndProc(中MainHwnd窗口):
LRESULT Client::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
break;
case WM_COMMAND:
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(1);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
而且在这里StackOverflow的人告诉我,在我刚才的问题,我目前a'int销毁窗口,而我造成A S大头钉溢出结束窗口被销毁的地方(程序仍然运行 - 因此它看起来像所有东西都按照计划运行),但是我不想使用不好的编程(特别是导致堆栈溢出来破坏窗口哈哈)
那么,我该如何正确销毁一个窗口?
而且,有些时候,当我用DestroyWindow(MainHwnd)
它变得既WM_DESTROY
和WM_CLOSE
内(在当前的WndProc我上面贴)..这是关系到堆栈溢出问题?
顺便说一句 - 我也知道如何使用#C Windows窗体,我想写类似: this.Close();
其关闭当前窗口(也许这使我的问题更清晰)...
谢谢!
我相信你必须回到'返回DefWindowProc函数(HWND,味精,wParam中,lParam的);'和'中的情况下wm_destroy'是'PostQuitMessage(0);返回0;' –
DestroyWindow没问题。如何SSCCE而不是描述。 –
但有人告诉我这里'DestroyWindow'调用'WM_CLOSE',而在'WM_CLOSE'中我再次调用'DestroyWindow' ......是不是一个无限循环? 另外,什么是SSCCE? – Amit