每当显示对话框时,我都会尝试执行一些操作。就像我们有无模式对话框,并且我们在单击某些按钮时隐藏/显示对话框。但是每当显示对话框时我们都需要执行一些操作。我已添加 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/