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.文本框背后有绘制的背景
这两个问题有关,但不明白。。
请懂的大神不吝赐教!帮我解决这个下划线的问题! 展开
我在做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.文本框背后有绘制的背景
这两个问题有关,但不明白。。
请懂的大神不吝赐教!帮我解决这个下划线的问题! 展开
1个回答
2013-06-07 · 知道合伙人软件行家
关注
展开全部
m_pFont->CreateFontIndirect(&lf);
ShowWindow(SW_HIDE);
this->SetFont(m_pFont);
ShowWindow(SW_SHOW);
进行 隐藏与可见 切换
ShowWindow(SW_HIDE);
this->SetFont(m_pFont);
ShowWindow(SW_SHOW);
进行 隐藏与可见 切换
追问
这个对于某些可以,但对于某些却不可以,蓝色背景上的字可以消除下划线并重新将文本框变成透明,但是白色背景上的静态文本框却不再透明,变成对话框的底色,真是搞不懂,我明明是平等创建的,代码都差不多。。。
我用了别的方法解决了这个问题,就是把文本框背景色跟它所处的背景颜色搞得相同,但是觉得不是很正统,唉。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询