请问如何创建透明的CRichEditCtrl对象

samsun2000 2006-05-16 10:10:20
先声明 网上有一些例子用类似于以下的代码
HBRUSH CTESTDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if((nCtlColor == CTLCOLOR_EDIT) && (pWnd->GetDlgCtrlID()==IDC_EDIT))
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
}
这种方法在我的环境下不太适用。可能因为他的对象是CEdit类,而我的是CRichEditCtrl
也可能因为它的父窗口是CDialog,而我的是CWnd.还有可能是我的CRichEditCtrl或父窗口CMyWnd的Create参数有问题。

总之 我在程序中加了这个方法,而这个方法从来不被调用。有朋友知道怎么解决这个问题吗?我的程序写了不少代码了,要把CWnd换成CDialog或把CRichEditCtrl换成CEdit都不太现实。

求助
...全文
148 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
samsun2000 2006-05-18
解决了,谢谢各位
回复
samsun2000 2006-05-18
to psbeond(psbeyond): 消息映射宏是有的,我刚才只是简单的把CRichEditCtrl换成了CEdit类,就可以透明了,莫名其妙哦。但使用CEdit又有其他问题。

现在的情况是这样的:
我的需求是 在窗口上创建一个透明的文本控件,右击控件会有“字体设置”菜单,弹出系统的字体选择框,然后设置文本控件的字体为用户选择的。

我的问题是:
如果用CEdit,用上面的代码可实现透明,用http://topic.csdn.net/t/20041030/21/3506790.html上面的方法可改变显示,但光标的属性却不跟着变,就是说原来每个字符如果宽是10,后来我选择的字体,每个字符宽是50,显示是用新字体显示(没错),可光标移动、换行等操作 仍然以每个字符是10来计算。就是说如果我输入了2个字符,合理情况光标应该在100的地方闪烁,可现在光标在20的地方闪,真别扭哦!

如果我用CRichEditCtrl,设置字体就没什么问题,可又没办法实现透明。

请高人们指点指点,解决那个问题都行,只要让我能实现期望的目标即可。
回复
蒋晟 2006-05-17
create a windowless richedit
回复
wanghailei 2006-05-17
消息映射宏是什么东东啊
回复
psbeond 2006-05-17
消息映射宏加了吗?
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2006-05-16 10:10
社区公告
暂无公告