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;
}

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

0

Решение

Стивен,

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

0

Другие решения

Это будет проверять флажок, когда 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);
}
0