继承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......是不是因为不能多次调用啊?
CMyDialog::OnPaint()
{if(...)
{}
else
{
CPaintDC dc(this); // 用于绘制的设备上下文
CDialog::OnPaint();
}
而CDialog::OnPaint的代码为:void CDialog::OnPaint()
{
CPaintDC dc(this);
if (PaintWindowlessControls(&dc))
return;
Default();
}
我听人说,红色的那句必须去掉,为什么啊?CPaintDC的构造函数就是调用BeginPaint......是不是因为不能多次调用啊?
解决方案 »
- 如何增加ActiveX的属性页
- 奇怪问题,请帮忙
- 关于枚举系统字体的问题
- 我的对话框上放一个CListCtrl空间,当我按win+d组合健后,该CListCtrl控件变灰色,要重新拉一下才恢复,可以看到!
- 好久没用过win98了,大家来帮我看看98下CreateFile怎么回事
- BSTR在使用过程中为什么会内存泄露呢?
- 新手......VC在加载Access的库时可不可以使用其中的多个表?先谢了!
- 网页打不开???????????
- 取得当前时间,如何插入数据库,COleDateTime oleDateStart = COleDateTime::GetCurrentTime();
- 那位大虾有计算 线性回归方程的函数?或者请给写一个?分数不成问题!!!
- 看贴有分,驱动编程的好教程,全部奉送。
- CImage如何加个滑块调节图层的透明度
第一次调用BeginPaint后窗口的无效区域已经被清空了,也就是说后续的BeginPaint调用得到的dc根本没有绘制区域,在其上的所有绘制操作都会被裁掉
再请教一个问题,如果在这样的情况下去掉,有后果吗?一个主窗口上 create了一个对话框, 此时,我们处理CMyDialog::OnPaint,就相当与子类化 对话框了。对吧 ? 父窗口是父亲,对话框是子。
else
{
CPaintDC dc(this); // 用于绘制的设备上下文
//CDialog::OnPaint();
}
能够绘制对话框?如果可以的话,我猜测也是 某个消息绘制的,而不是wm_paint
你说的是0楼的,还是2楼的啊?CDialog::OnPaint里却是有个CPaintDc dc(this);不就重复了BeginPaint 了吗?
我发代码:
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint() CRect rect;
GetClientRect(&rect);
if(GetUpdateRect(rect))
{
CDialog::OnPaint();
}
加上CDialog::OnPaint这一句,很可能出问题,尽管msdn没有说~!
还有第2楼,帮忙看看thanks
如果不需要绘制父窗口肯定不能去掉OnPaint
否则窗口不会画出来
GetUpdateRect放在CPaintDC或BeginPaint后面,GetUpdateRect总是返回0
PaintWindowlessControls? 貌似是DirectUI系统提供的对话框类本来就没在WM_PAINT画出什么来;背景是在WM_ERASEBKGND刷出来的
{
CPaintDC dc(this); // 如果要自绘,就不要 下句
CDialog::OnPaint();// 如果要 这句,就不要 上句
}
{
CPaintDC dc(this); // 用于绘制的设备上下文
//CDialog::OnPaint();
}
能够绘制对话框?
如果可以的话,我猜测也是 某个消息绘制的,而不是wm_paint
-----------------------
标准对话框WM_PAINT处理一般的BeginPaint,EndPaint就完了,中间没有其他代码,因为对话框一般通过其上的控件来体现功能的,而控件的绘制那是控件自己的事儿了,不在对话框的WM_PAINT消息处理中
这句的作用是:
1。擦除背景。
2。使客户区有效。
没有这句
CDialog::OnPaint();
有也有这句。有这句后CDialog::OnPaint();
里的CPaintDC dc(this); 蒋没有如何 作用。因为:
1。背景已擦除。
2。客户区已有效。