请教高手~~~ 我用的类继承CEdit类,但是CEdit类没办法改行间距,我就改成了CRichEditCtrl类,这样行间距就改好了,但是原来的WM_CTLCOLOR消息触发不了了,该如何处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 作为控件类,应该响应反射消息ON_WM_CTLCOLOR_REFLECT()HBRUSH CXXXXEdit::CtlColor(CDC* pDC, UINT nCtlColor) 刚才没说清楚,我在View类里面的使用ON_WM_CTLCOLOR()。HBRUSH CSeatViewDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)在View类的另外一个地方((CSeatTransferEdit *)m_aSeatEditArray.GetAt(i))->SetWindowText("");((CSeatTransferEdit *)m_aSeatEditArray.GetAt(i))->SetWindowText(strTitle);CSeatTransferEdit 继承CRichEditCtrl,就不调用OnCtlColor。要是改成继承CEdit,就可以调用到~~~ 或者能不能在CEdit里面改变行间距???我查了,好象不行~~~ 调用CRichEditCtrl类的SetBackgroundColor函数设置背景色。 恩,这个我实现了~~~但是HBRUSH CSeatViewDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor) 实现了别的功能~~~最好能触发这个消息~~~ RichEdit不发WM_CTLCOLOR消息。你想实现什么功能?看看CRichEditCtrl类中是否提供了相关函数。 恩~~~我知道~~~我把WM_CTLCOLOR消息的里面实现的功能提出来做了个函数·~~~但是原来触发WM_CTLCOLOR的地方太多,我怕修改遗漏了~~~ 可以试试‘伪造’一个 WM_CTLCOLOREDIT 消息:★第一步:先设置 RichEdit 的 EN_CHANGE 事件掩码,可以重载 控件的 PreSubclassWindow 虚函数,如下:void CMyRichEditCtrl::PreSubclassWindow(){ SetEventMask(ENM_CHANGE); CRichEditCtrl::PreSubclassWindow();}★第二步:在 EN_CHANGE 事件中伪造 WM_CTLCOLOREDIT 消息,然后在 OnEnChange 中加入如下代码:void CMyRichEditCtrl::OnEnChange(){ CDC * pDC = GetDC(); HBRUSH hBrush = (HBRUSH)GetParent()->SendMessage(WM_CTLCOLOREDIT,(WPARAM)pDC->m_hDC,(LPARAM)this); // ★ 在这里尝试通过 hBrush 和 pDC 获得你在父窗口的 OnCtlColor() 函数中设置的颜色,祝你好运:) ReleaseDC(pDC);} CScrollView重绘背景 怎么不行了啊???????? CFileDialog 获取的路径 出问题 关于WC_TABCONTROL的使用 菜鸟提问 关于画图的问题 dtd ENTITY问题 两个非模态对话框之间如何用自定义消息传递信息? 关于ADO在98下面的奇怪问题. 高手请进:关于cda文件的抓取问题! 如何判断用户输入的账号和密码是否win2000的合法用户? string 取字符串问题 cedit 的焦点如何获得?其父窗口为clistCtrl jpeg 图像的二值化问题
ON_WM_CTLCOLOR_REFLECT()
HBRUSH CXXXXEdit::CtlColor(CDC* pDC, UINT nCtlColor)
ON_WM_CTLCOLOR()
。
HBRUSH CSeatViewDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)
在View类的另外一个地方
((CSeatTransferEdit *)m_aSeatEditArray.GetAt(i))->SetWindowText("");
((CSeatTransferEdit *)m_aSeatEditArray.GetAt(i))->SetWindowText(strTitle);CSeatTransferEdit 继承CRichEditCtrl,就不调用OnCtlColor。
要是改成继承CEdit,就可以调用到~~~
实现了别的功能~~~最好能触发这个消息~~~
先设置 RichEdit 的 EN_CHANGE 事件掩码,可以重载 控件的 PreSubclassWindow 虚函数,如下:void CMyRichEditCtrl::PreSubclassWindow()
{
SetEventMask(ENM_CHANGE); CRichEditCtrl::PreSubclassWindow();
}
★第二步:
在 EN_CHANGE 事件中伪造 WM_CTLCOLOREDIT 消息,然后在 OnEnChange 中加入如下代码:void CMyRichEditCtrl::OnEnChange()
{
CDC * pDC = GetDC();
HBRUSH hBrush = (HBRUSH)GetParent()->SendMessage(WM_CTLCOLOREDIT,(WPARAM)pDC->m_hDC,(LPARAM)this); // ★ 在这里尝试通过 hBrush 和 pDC 获得你在父窗口的 OnCtlColor() 函数中设置的颜色,祝你好运:) ReleaseDC(pDC);
}