У меня есть диалоговое окно (CFormview
), отображаемое в mainFrame (CFrameWnd
). Все работает правильно, кроме вертикальной прокрутки трекпада двумя пальцами:
введите описание изображения здесь
Поведение программы
Зеленая зона соответствует размеру диалогового окна, которое было создано в файле ресурсов
- Если курсор мыши расположен в зеленой зоне, он работает
- Если курсор мыши находится в красной зоне, он не работает.
Исследования
Когда я прокручиваю в красной области, инструмент Spy ++ показывает следующие сообщения:
<00918> 00250870 S WM_MOUSEACTIVATE hwndTopLevel:001903FE nHittest:HTCLIENT uMsg:WM_NULL
<00919> 00250870 R WM_MOUSEACTIVATE fuActivate:MA_ACTIVATE
Мое альтернативное решение
Чтобы он работал в красной зоне я должен щелкнуть элемент (например, Cedit). Итак, я добавил это событие щелчка в функцию OnInitializeDialog()
:
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_MY_EDIT_1);
if ( pEdit != NULL )
{
pEdit->SetFocus();
pEdit->SetSel(0,-1);
pEdit->SetSel(-1);
}
Question Есть ли другое решение, которое позволяет мне прокручивать красную зону БЕЗ активации элемента в моем диалоговом окне?