Прокрутка двумя пальцами не работает, если курсор находится за пределами области диалогового окна - PullRequest
0 голосов
/ 04 августа 2020

У меня есть диалоговое окно (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 Есть ли другое решение, которое позволяет мне прокручивать красную зону БЕЗ активации элемента в моем диалоговом окне?

...