Отсутствует WM_WINDOWPOSCHANGING в диалоге VS 2012 MFC

Я пытаюсь реализовать Эта статья
Но когда я просматриваю все сообщения, которые мой диалог «имеет» в представлении ресурсов (на вкладке сообщений), я не вижу это сообщение.
Любая идея, как его поймать (это доступно? Это проблема IDE?)
Спасибо,
Дани

0

Решение

Мастер классов MFC не показывает сообщения, для которых обработчик сообщений уже реализован в CWnd Базовый класс. Обрабатывать WM_WINDOWPOSCHANGING все, что вам нужно сделать, это переопределить CWnd::OnWindowPosChanging.

Обновление: я только что проверил, и моя установка Visual Studio 2012 (обновление 3) делает список WM_WINDOWPOSCHANGING для диалогового класса. Если он не отображается для вас, возможно, вы выбрали неправильный класс из Имя класса выпадающий список.

Если сообщение не отображается в мастере классов по какой-либо причине, вы все равно можете реализовать его вручную. Мастер классов — это просто удобство, а не требование. MFC реализует свою обработку сообщений, создавая Карта сообщений что вы можете расширить, добавив обработчики сообщений через Макросы карты сообщений.

Объявите обработчик сообщения с правильной подписью и именем в вашем диалоговом классе. Обратите внимание, что afx_msg макрос ничего не раскрывает и просто служит для документирования того, что это обработчик сообщений MFC.

afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);

Добавьте обработчик сообщений на карту сообщений вашего диалога:

BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
...
ON_WM_WINDOWPOSCHANGING()
END_MESSAGE_MAP()

Вы можете найти как макрос для использования, так и подпись функции и имя в WM_ сообщения: T — Z. Благодаря этому вы можете реализовать свой обработчик сообщений:

void CMyDialog::OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
CDialogEx::OnWindowPosChanging(lpwndpos);

// TODO: Add your message handler code here
}

Обратите внимание, что реализация мастера классов (VS 2010 и выше) больше не требует специально отформатированных комментариев в исходном коде (как это было в VS6). Добавление обработчиков сообщений вручную не нарушает функциональности мастера классов.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]