界面重画的问题,高手指点一二

wanyyl2353406 2011-01-25 11:23:40
继承自CWnd的子类,重写OnPaint方法,用一个单选框去控制其重画,我的想法是,当单击选中后,画出界面。当不选中后,则不画出来。现在的情况是选中后可以画出,但是不选中单选按钮,我调用了Invalidate并没有让我的界面的内容消失。

void CPointLineSpan::OnPaint()
{
//不选中单选按钮......
if (m_IsEnabled == FALSE)
{
return;
}
//选中单选按钮...
画出我的界面;
}
这样子并不能实现我想要的效果,选中出来,不选中消失的结果
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengxuxing 2011-01-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 wanyyl2353406 的回复:]
继承自CWnd的子类,重写OnPaint方法,用一个单选框去控制其重画,我的想法是,当单击选中后,画出界面。当不选中后,则不画出来。现在的情况是选中后可以画出,但是不选中单选按钮,我调用了Invalidate并没有让我的界面的内容消失。

void CPointLineSpan::OnPaint()
{
//不选中单选按钮......
if (m_IsEnabled == FALSE……
[/Quote]

不错!
Eleven 2011-01-25
  • 打赏
  • 举报
回复

// 类似这样就可以了,测试代码
BOOL bDraw = FALSE;

void CXXDlg::OnPaint()
{
CPaintDC dc(this);

if(bDraw)
{
CString str(_T("Hello, World!"));
dc.DrawText(str, CRect(0, 0, 100, 100), DT_CENTER);
}

}

void CXXDlg::OnButton1()
{
// TODO: Add your control notification handler code here
bDraw = TRUE;
Invalidate();
}

void CXXDlg::OnButton2()
{
// TODO: Add your control notification handler code here
bDraw = FALSE;
Invalidate();
}

lgxing 2011-01-25
  • 打赏
  • 举报
回复
不选中时,需要清空原来的显示,不能直接返回

15,979

社区成员

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

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