首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

非模态显示的子窗口中,为何不能在它的OnPaint()中对窗口中控件的DC进行绘图?附代码,解决马上结贴!请进!解决办法

2012-03-27 
非模态显示的子窗口中,为何不能在它的OnPaint()中对窗口中控件的DC进行绘图?附代码,解决马上结贴!请进!!我

非模态显示的子窗口中,为何不能在它的OnPaint()中对窗口中控件的DC进行绘图?附代码,解决马上结贴!请进!!
我用非模态方式显示出一个子对话框窗口,上面有个静态文本框控件IDC_NORMAL用来绘图。我想在这个窗口的WM_PAINT消息响应函数OnPaint()中加上如下的代码绘图:

void   CToolbarDialog::OnPaint()  
{
CPaintDC   dc(this);   //   device   context   for   painting
//   TODO:   Add   your   message   handler   code   here

CDC   *pDC;
pDC=GetDlgItem(IDC_NORMAL)-> GetDC();
CPen   *pen=pDC-> SelectObject(&m_penGray);//保存原来的画笔
pDC-> MoveTo(0,31);
pDC-> LineTo(0,0);
pDC-> LineTo(31,0);
pDC-> LineTo(31,31);
pDC-> LineTo(0,31);
pDC-> SelectObject(&pen);//把原来的画笔选回DC中
ReleaseDC(pDC);//释放对DC控制

//   Do   not   call   CDialog::OnPaint()   for   painting   messages
}
上面的代码没有用,窗口被其他窗口遮住后,原来绘制的图形就不见了,好象没有进行重绘啊!如果直接在这个子对话框窗口的客户区中或是在主窗口中倒是可以重绘,而在静态文本控件中就不能重绘。请问这是为什么?
另外,同样的问题在窗口的初始化函数OnInitDialog()也存在。

[解决办法]
重载控件,在控件的OnPaint()中绘图。

热点排行