winapi - 如何在MFC中捕获WM_SHOWWINDOW命令

标签 winapi mfc

每当显示对话框时,我都会尝试执行一些操作。就像我们有无模式对话框,并且我们在单击某些按钮时隐藏/显示对话框。但是每当显示对话框时我们都需要执行一些操作。我已添加 WM_SHOWWINDOW 消息,但控件未进入 OnShowWindow(BOOL bShow, UINT nStatus) 函数内部。

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

提前致谢

穆克什

最佳答案

我使用记事本和 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 的标志。

关于winapi - 如何在MFC中捕获WM_SHOWWINDOW命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281511/

相关文章:

php - 是发送错误还是接收错误?未发送完整消息或消息未正确解码

c++ - 为所有版本的 win 在 c++ win32 中获取操作系统?

c++ - 如何更改任务管理器中的应用程序图标

c++ - MFC 应用程序在启动时关闭

c++ - 为什么 Visual Studio 显示多线程,即使我的 MFC 应用程序不是多线程的?

c++ - 创建一个没有复选框的弹出式 CMenu

创建文件和读取文件

opengl - SetPixelFormat() 中的 PIXELFORMATDESCRIPTOR 参数是做什么用的?

C++/MFC 如何从 PC 复制多个文件到 WinCE(移动设备)?

c++ - 使用 CString 转换 int 并发送到控制台