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

Beginpaint的应用(80分)

2013-01-11 
Beginpaint的使用(80分)继承CDialog类CMyDialog::OnPaint(){if(...){}else{CPaintDC dc(this) // 用于绘

Beginpaint的使用(80分)
继承CDialog类


CMyDialog::OnPaint()
{

if(...)
{

}
else
{
CPaintDC dc(this); // 用于绘制的设备上下文
CDialog::OnPaint();
}


而CDialog::OnPaint的代码为:

void CDialog::OnPaint()
{
CPaintDC dc(this);
if (PaintWindowlessControls(&dc))
   return;
Default();
}


我听人说,红色的那句必须去掉,为什么啊?

CPaintDC的构造函数就是调用BeginPaint......

是不是因为不能多次调用啊?




[解决办法]

引用:
void CDialog::OnPaint()
{
CPaintDC dc(this);
if (PaintWindowlessControls(&dc))
   return;
Default();
}


PaintWindowlessControls? 貌似是DirectUI

系统提供的对话框类本来就没在WM_PAINT画出什么来;背景是在WM_ERASEBKGND刷出来的

[解决办法]
else
{
CPaintDC dc(this); // 如果要自绘,就不要 下句
CDialog::OnPaint();// 如果要 这句,就不要 上句
}

[解决办法]
else
{
CPaintDC dc(this); // 用于绘制的设备上下文
//CDialog::OnPaint();
}
能够绘制对话框?
如果可以的话,我猜测也是 某个消息绘制的,而不是wm_paint
-----------------------
标准对话框WM_PAINT处理一般的BeginPaint,EndPaint就完了,中间没有其他代码,因为对话框一般通过其上的控件来体现功能的,而控件的绘制那是控件自己的事儿了,不在对话框的WM_PAINT消息处理中

热点排行