3315|4

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EVC中picturebox绘图后刷新的问题,在VC6.0下没问题,EVC4.0下即使强制重绘也不显示,请各位大侠帮忙看看。 [复制链接]

软件通过串口读取数据,然后根据数据绘制图形。由于界面大小受限制,所以PictureBox有时会不显示,显示时就绘制图形。简单代码如下:

void CZongHeCeLiang::OnPaint()
{
CPaintDC cdc(this); // device context for painting
CPaintDC dc(&m_xlt);
CBrush*  pNewBrush;
CBrush*  pOldBrush;
  CString strdy,strdl,strtemp;
float fltdy,fltdl,jiaodu1,jiaodu2,jiaodu3;
CPoint m_center;
BOOL m_paintyn;
pNewBrush=new CBrush;

CRect rect,rect2;
CWnd *m_pic=GetDlgItem(IDC_lbXLT);
    m_pic->GetWindowRect(&rect);
m_left=0;
m_top=0;
m_height=rect.Height();
m_width=rect.Width();
m_right=rect.left+rect.Width();
m_bottom=rect.top+rect.Height();
m_center.x=(m_left+m_right)/2;
m_center.y=(m_top+m_height)/2;
m_center_x=m_center.x;
m_center_y=m_center.y;

if( pNewBrush->CreateSolidBrush( RGB(0,0,0)))
{
  pOldBrush = dc.SelectObject( pNewBrush );
  dc.Rectangle(m_left,m_top,m_right,m_bottom);
  m_r=100;
  dc.SelectObject( pOldBrush );
  delete pNewBrush;
}//绘制背景,还有其他代码,由于较多就不写了,能说明问题就可以。

}

程序启动后绘制背景。

//显示picturebox控件

void CZongHeCeLiang::OnButton1()
{
// TODO: Add your control notification handler code here
m_xlt.ShowWindow(1);
}

//刷新,强制重绘
void CZongHeCeLiang::OnBtnRefresh()
{
Invalidate();
}

//隐藏picturebox控件

void CZongHeCeLiang::OnBtnEnd()
{
m_xlt.ShowWindow(0);
}

问题出在picturebox控件重新显示后,即使我强制重绘,picturebox上也没有图形。但是相同的代码在VC6.0里没有问题。请各位帮我看看哪里的问题???

最新回复

In Windows CE, you have to pass a valid RECT pointer in the lpRect parameter. Windows 98 and Windows NT invalidate and redraw the entire window if the lpRect parameter is set to NULL. This is not supported in Windows CE. 看看这个。  详情 回复 发表于 2008-5-28 16:56
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
RedrawWindow
用这个试试?
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
GetDlgItem(IDC_STATIC_PIC)->InvalidateRect(FALSE);
GetDlgItem(IDC_STATIC_PIC)->GetParent()->RedrawWindow(NULL,NULL,RDW_UPDATENOW |RDW_ALLCHILDREN);

供参考~~~
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢楼上的两位,用sunrain_hjb的方法就可以了。但是我发现一个问题,这种方法中,窗体一直处于绘制状态。我理解的窗体只有发生变化时才会出现重绘,楼上的能解释下吗。谢谢。
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

5
 
In Windows CE, you have to pass a valid RECT pointer in the lpRect parameter. Windows 98 and Windows NT invalidate and redraw the entire window if the lpRect parameter is set to NULL. This is not supported in Windows CE.

看看这个。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表