CDialog DoModal (диалог открывается с фокусом клавиатуры, но не с фокусом мыши)
У меня есть окно CDialog (CDrafter), которое содержит элемент управления CRichEditCtrl.
Я переопределил CDrafter::PreTranslateMessage и CDrafter::OnNotify, чтобы позволить мне щелкать мышью по специальным словам в RichTextEdit с помощью мыши, которая, в свою очередь, открывает другое диалоговое окно (MyDialog).
* ПРИМЕЧАНИЕ: я сделал это, так как мне не нравились ограничения стиля EN_LINK.*
Итак, внутри CDrafter::PreTranslateMessage у меня есть:
Он просто определяет, где и по какому слову щелкнули (больше ничего) (ждет, пока OnNotify что-то с ним сделает).
Так что внутри CDrafter::OnNotify у меня есть:
BOOL CSTANAGMessageDrafterDlg::OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult )
{
BOOL r = CDialog::OnNotify(wParam, lParam, pResult);
//if (::PreTranslateMessage found a word clicked on ) {
MyDialog dialog;
dialog.DoModal();
//}
//Awesome my dialog opened and I can start editing the form (via the keyboard) no problems.
//BUG: There is a problem as the mouse curser is still showing the
// move carpet position icon as if it is still focused on the RichTextEdit control.
// If I click the mouse anywhere (in the MyDialog, or within the parent dialog)
// the mouse icon, and focus correctly changes to MyDialog, then I can click OK or CANCEL.
return r;
}
Я пробовал вызов "CDialog::OnNotify(wParam, lParam, pResult)" после MyDialog::DoModal - все еще вижу ту же проблему. MyDialog:: DoModal вызывается в том же потоке, что и родительский диалог.
Я ожидал, что смогу сделать следующее:
нажмите на слово, и MyDialog откроется, нажмите кнопку MyDialog:: Cancel и диалоговое окно закроется.
Но есть проблема, так как это моя последовательность:
нажмите на слово, и MyDialog откроется, нажмите кнопку MyDialog:: Cancel (она не работает - меняется только значок мыши), нажмите кнопку MyDialog:: Cancel и диалоговое окно закроется
Мне нужно (сначала щелкнуть) мышью, чтобы получить какой-либо элемент управления мышью во вновь открытом диалоге. т.е. событие наведения курсора на кнопках и т. д. ничего не делает, пока я не нажму.