我的问题是WM_ENDSESSION消息。也就是说,我想从应用程序(WindowProc中)当WM_ENDSESSION消息发送的主循环退出......所以,我写了这样的事情:WM_ENDSESSION消息存在问题
LRESULT CALLBACK windowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
//...
case WM_QUERYENDSESSION: return TRUE;
case WM_ENDSESSION:
if(wParam) PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
return 0;
}
...,但它不”将不起作用 - 应用程序不退出主循环...
我读到WM_QUERYENDSESSION WM_ENDSESSION和MSDN上,但我无法找到任何有用的信息...
任何想法,这里是错误的?
有趣的是,我注意到了,我认为这只是我。我的目标是在接收WM_QUERYENDSESSION/WM_ENDSESSION时保存数据并优雅退出,尽管我的程序从未保存过任何内容。它总是被冷死。 – Damon 2011-04-20 18:25:57
显示你的事件循环代码。我想这是在你的'main'函数中。 – 2011-04-20 18:46:59
顺便说一句如何试图触发WM_QUERYENDSESSION/WM_ENDSESSION事件?关掉?注销?你的'windowProc'是一个顶级窗口的窗口过程吗? – 2011-04-20 18:53:31