Как захватить команду WM_SHOWWINDOW в MFC - PullRequest
2 голосов
/ 02 сентября 2011

Я пытаюсь выполнить какое-либо действие, когда отображается диалоговое окно. Это похоже на то, что у нас диалоговое окно не модальное, и мы скрываем / показываем диалог одним нажатием кнопки. Но нам нужно выполнить какое-то действие всякий раз, когда отображается диалог. Я добавил сообщение WM_SHOWWINDOW, но управление не приходит внутри функции OnShowWindow (BOOL bShow, UINT nStatus).

Мы используем функцию ShowWindow (SW_HIDE) и ShowWindow (SW_SHOW), чтобы скрыть / показать диалоговое окно Пожалуйста, предложите некоторый указатель, как этого достичь.

Заранее спасибо

Мукеш

1 Ответ

3 голосов
/ 02 сентября 2011

Я проверил это с помощью блокнота и 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...