MFC 鼠标移到静态文本框出现下划线,移走则消除

各位大大,求问关于MFC的问题。我在做MFC对话框界面的时候,继承CStatic类创建CMyStatic类,当鼠标移入的时候将下划线设置为有,以下为下划线代码。voidC... 各位大大,求问关于MFC的问题。

我在做MFC对话框界面的时候,继承CStatic类创建CMyStatic类,当鼠标移入的时候将下划线设置为有,以下为下划线代码。
void CMyStatic::SetUnderline(BOOL flag)
{
LOGFONT lf;
m_pFont->GetLogFont(&lf);
lf.lfUnderline = flag;
m_pFont->DeleteObject();
m_pFont->CreateFontIndirect(&lf);
this->SetFont(m_pFont);
}
这样可以实现鼠标移入出现下划线,但是移出的时候(WM_MOUSELEAVE)我调用SetUnderline(false),却无法消除下划线了。我尝试在鼠标移出的发送消息到父窗口,然后父窗口调用Invalidate(false),发现有的CMyStatic类静态框能消除下划线,有的却消除不了。
设置断点测试后发现与1.文本框的透明属性 2.文本框背后有绘制的背景
这两个问题有关,但不明白。。
请懂的大神不吝赐教!帮我解决这个下划线的问题!
展开
 我来答
lgao622
2013-06-07 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6550
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
m_pFont->CreateFontIndirect(&lf);
ShowWindow(SW_HIDE);
this->SetFont(m_pFont);
ShowWindow(SW_SHOW);
进行 隐藏与可见 切换
追问
这个对于某些可以,但对于某些却不可以,蓝色背景上的字可以消除下划线并重新将文本框变成透明,但是白色背景上的静态文本框却不再透明,变成对话框的底色,真是搞不懂,我明明是平等创建的,代码都差不多。。。

我用了别的方法解决了这个问题,就是把文本框背景色跟它所处的背景颜色搞得相同,但是觉得不是很正统,唉。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式