我希望那里有人会帮助我解决我遇到的困境。基本上我有一个Checkbox和一个RichEditControl彼此相邻。我希望能够知道用户何时点击我的RichEditControl,这样我就可以向我的复选框发送一条消息来打开和关闭它。
首先,我尝试用空文本覆盖我的复选框以充当"空白"我的RichEditControl的背景,所以我不必担心左右发送消息。无论我尝试了什么"空白"背景将与RichEditControl文本重叠并使其完全空白。
我在这里搜索了一些帮助,我找到了this,这正是我遇到的。我明白他在说什么,但不知道如何实施他们所说的话。
现在我正在玩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 :(得分:0)
史蒂芬,
解决此问题的一种方法是处理来自富编辑控件的EN_MSGFILTER
通知。我无法向您提供任何代码,以向您展示如何执行此操作,但here's Rich编辑控件生成的通知消息的文档。只需像使用单选按钮一样处理它。
答案 1 :(得分: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);
}