MFC Rich Edit Control 2.0 получает событие нажатия

Я надеялся, что кто-то там поможет мне в моем затруднительном положении, с которым я столкнулся. По сути, у меня есть флажок и RichEditControl рядом друг с другом. Я хочу знать, когда пользователь щелкнул мой RichEditControl, чтобы я мог отправить сообщение на свой флажок, чтобы пометить его и выключить.

Сначала я попытался наложить свой флажок на пустой текст, чтобы он служил "пустым" фоном для моего RichEditControl, чтобы мне не пришлось беспокоиться об отправке сообщений влево и вправо. Независимо от того, что я пробовал, "пустой" фон перекрывал бы текст RichEditControl и оставлял бы его полностью пустым.

Я искал здесь некоторую помощь, и я обнаружил, что это именно то, с чем я столкнулся. Я понимаю, что он говорит, но не обладаю знаниями, чтобы реализовать то, что они сказали.

Прямо сейчас я играю с EN_LINK, чтобы попытаться захватить сообщение, чтобы я мог сказать своему флажку пометить себя.

BEGIN_MESSAGE_MAP(TempInit, CDialog)
ON_NOTIFY(EN_LINK, IDC_TempInitMsg, &TempInit::OnEnLinkTempinitmsg)
END_MESSAGE_MAP()

void TempInit::OnEnLinkTempinitmsg(NMHDR *pNMHDR, LRESULT *pResult)
{
ENLINK *pEnLink = reinterpret_cast<ENLINK *>(pNMHDR);
// TODO: Add your control notification handler code here
    // TODO: Add your control notification handler code here
    radioClicked = !radioClicked;
    if (radioClicked == true)
    {
        GetParent()->SendMessage(WM_MYRADIOCLICKED, CHECKENABLED, 0);
    }
    else
    {
        GetParent()->SendMessage(WM_MYRADIOCLICKED, CHECKDISABLED, 0);
    }
}
*pResult = 0;
}

Я заранее извиняюсь, если это абсолютно неправильный путь. Я гуглил несколько часов и пришел с пустыми руками. Если у кого-то есть другой метод, пожалуйста, помогите мне, если это возможно. Я могу опубликовать больше кода, если то, что у меня есть выше, не достаточно.

2 ответа

Стивен,

Один из способов сделать это - справиться с EN_MSGFILTER уведомление от элемента управления rich edit. Я не могу предоставить вам какой-либо код, чтобы показать вам, как сделать это от руки, но вот документация для уведомлений, которые генерирует элемент управления Rich edit. Просто сделайте это так же, как вы делаете это с помощью переключателя.

Это будет проверять флажок, когда Rich Edit Ctrl имеет фокус и снимать флажок, когда он теряет фокус.

BEGIN_MESSAGE_MAP(TempInit, CDialogEx)
  ON_EN_SETFOCUS(IDC_RICHEDIT21, &TempInit::OnEnSetfocusRichedit21)
  ON_EN_KILLFOCUS(IDC_RICHEDIT21, &TempInit::OnEnKillfocusRichedit21)
END_MESSAGE_MAP()

void CMFCApplication1Dlg::OnEnSetfocusRichedit21()
{
  CButton* pCheckBox = (CButton*)GetDlgItem(IDC_CHECK1);
  pCheckBox->SetCheck(1);
}

void CMFCApplication1Dlg::OnEnKillfocusRichedit21()
{
  CButton* pCheckBox = (CButton*)GetDlgItem(IDC_CHECK1);
  pCheckBox->SetCheck(0);
}
Другие вопросы по тегам