如何在MFC中捕获WM_SHOWWINDOW命令

时间:2011-09-02 09:24:39

标签: winapi mfc

每当显示对话框时,我都会尝试执行某些操作。它就像我们有无模式对话框,我们正在点击/显示对话框点击按钮。但是我们需要在显示对话框时执行某些操作。我添加了WM_SHOWWINDOW消息,但控件不在OnShowWindow(BOOL bShow,UINT nStatus)函数中。

我们正在使用ShowWindow(SW_HIDE)和ShowWindow(SW_SHOW)函数来隐藏/显示对话框 请建议一些指针如何实现。

提前致谢

穆克什

1 个答案:

答案 0 :(得分:3)

我使用记事本和Spy ++使用以下代码对其进行了测试:

#include <Windows.h>

int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
  HWND hwnd = FindWindow(NULL, L"Untitled - Notepad");
  ShowWindow( hwnd, SW_HIDE );
  Sleep(4000);
  ShowWindow( hwnd, SW_SHOW );
  return ERROR_SUCCESS;
}

为了隐藏窗口,你应该得到WM_SHOWWINDOW,WM_WINDOWPOSCHANGING,然后是WM_WINDOWPOSCHANGED。

为了显示窗口,目标没有收到WM_SHOWWINDOW,但仍然有WM_WINDOWPOSCHANGING和WM_WINDOWPOSCHANGED。

您可以处理WM_WINDOWPOSCHANGED并检查WINDOWPOS中SWP_HIDEWINDOW / SWP_SHOWWINDOW的标志。