Как связать оконную процедуру с моим существующим диалоговым окном - PullRequest
0 голосов
/ 06 сентября 2018

У меня был проект на основе диалогового окна Windows, который автоматически генерируется VS 2013. Теперь я хочу добавить код для обнаружения вставки USB-устройства. Я прочитал пример кода см. 1 . Это оконная процедура может обрабатывать сообщения. Я также знаю, что мне нужно было связать этот WinProc с объектом WNDCLASS и вызвать RegisterClass, например, пример кода , относящийся к 2 .

Однако мой код, сгенерированный VS 2013, похоже, не соответствует действительности. Например, я не могу найти WinMain, например , см. 2 . Он начинается с глобального объекта CWinApp :: MyApp и в MyApp :: InitInstance () создает и открывает мое главное диалоговое окно. Я реализую детали в диалоговой реализации.

Я не знаю, как связать оконную процедуру с моим основным диалогом. Или как мне это сделать в главном диалоговом окне, когда USB вставил Main_OnDeviceChange (HWND hwnd, WPARAM wParam, LPARAM lParam) в см. 1 будет вызываться автоматически.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Я нашел решение 2 шага в главном диалоговом классе.

  1. Добавить ON_WM_DEVICECHANGE () между BEGIN_MESSAGE_MAP и END_MESSAGE_MAP

  2. Добавить afx_msg BOOL OnDeviceChange (UINT nEventType, DWORD dwData); и реализовать его.

OnDeviceChange - это имя по умолчанию. Он не работает, если изменить имя.

0 голосов
/ 06 сентября 2018

Мне не удалось получить доступ к ссылкам примеров, но, как я понимаю из вашего вопроса, образцы написаны с использованием Windows APIS, в то время как ваше приложение является приложением на основе MFC Dialog.

Я думаю, что вам нужно только переопределитьметод WindowProc в диалоговом классе

LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{       
    return CWnd::WindowProc(uMsg, wParam, lParam);
}
...