请教高手~~~

wind363636 2008-10-11 10:58:28
我用的类继承CEdit类,但是CEdit类没办法改行间距,我就改成了CRichEditCtrl类,这样行间距就改好了,但是原来的WM_CTLCOLOR消息触发不了了,该如何处理?
...全文
109 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞行兔子 2008-10-12
  • 打赏
  • 举报
回复
可以试试‘伪造’一个 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);
}
wind363636 2008-10-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cnzdgs 的回复:]
调用CRichEditCtrl类的SetBackgroundColor函数设置背景色。
[/Quote]
恩,这个我实现了~~~但是HBRUSH CSeatViewDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)
实现了别的功能~~~最好能触发这个消息~~~
cnzdgs 2008-10-11
  • 打赏
  • 举报
回复
调用CRichEditCtrl类的SetBackgroundColor函数设置背景色。
wind363636 2008-10-11
  • 打赏
  • 举报
回复
或者能不能在CEdit里面改变行间距???我查了,好象不行~~~
wind363636 2008-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yxz_lp 的回复:]
作为控件类,应该响应反射消息
ON_WM_CTLCOLOR_REFLECT()
。。。。。。。。。
HBRUSH CXXXXEdit::CtlColor(CDC* pDC, UINT nCtlColor)
[/Quote]
刚才没说清楚,我在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,就可以调用到~~~
csucdl 2008-10-11
  • 打赏
  • 举报
回复
我不是传说中的高手。。。
yxz_lp 2008-10-11
  • 打赏
  • 举报
回复
作为控件类,应该响应反射消息
ON_WM_CTLCOLOR_REFLECT()
。。。。。。。。。
HBRUSH CXXXXEdit::CtlColor(CDC* pDC, UINT nCtlColor)

wind363636 2008-10-11
  • 打赏
  • 举报
回复
功能就是修改行间距,背景色和字体颜色,我都实现了~~~
wind363636 2008-10-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnzdgs 的回复:]
RichEdit不发WM_CTLCOLOR消息。你想实现什么功能?看看CRichEditCtrl类中是否提供了相关函数。
[/Quote]
恩~~~我知道~~~我把WM_CTLCOLOR消息的里面实现的功能提出来做了个函数·~~~但是原来触发WM_CTLCOLOR的地方太多,我怕修改遗漏了~~~
cnzdgs 2008-10-11
  • 打赏
  • 举报
回复
RichEdit不发WM_CTLCOLOR消息。你想实现什么功能?看看CRichEditCtrl类中是否提供了相关函数。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧