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