尝试使用Windows 7中的任务栏缩略图中的closuresbutton尝试closures窗口时(“要保存”)-dialog(使用aero peek激活)。
处理WM_CLOSE时使用MessageBox()不起作用。 在缩略图之外移动鼠标光标之前,MessageBox将不会显示,因此禁用了aero peek。
很多应用程序都有这个bug的行为,所以它可能是Windows 7的devise缺陷,但对于一些程序(Word,记事本,Visual Studio,…),所以我想知道他们正在使用什么技巧(或什么需要以编程方式“退出”航空偷看模式)。
Windows 7附带的小型“录音机”应用程序具有相同的问题(如果您已经logging了一些内容,并尝试使用缩略图closuresbuttonclosures它)…
我放了一个小应用程序来重现这个问题。 在调用MessageBox之前,我可以通过调用SetForegroundWindow来成功获取消息框。
case WM_SYSCOMMAND: if (wParam == SC_CLOSE) { SetForegroundWindow(hWnd); MessageBox(hWnd, L"Are you sure you want to exit", L"Close Window", MB_OK); } else { return DefWindowProc(hWnd, message, wParam, lParam); } break;
我将实现WM_SYSCOMMAND的处理程序,并使SC_CLOSE行为发布应用程序定义的消息,该消息将显示您的UI,并在用户想要退出时将WM_CLOSE发布到原始窗口。
或者,记事本似乎使用任务对话框 ,而不是消息框。 你尝试过吗?