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 и диалоговое окно закроется

Мне нужно (сначала щелкнуть) мышью, чтобы получить какой-либо элемент управления мышью во вновь открытом диалоге. т.е. событие наведения курсора на кнопках и т. д. ничего не делает, пока я не нажму.

0 ответов

Другие вопросы по тегам