在基于对话框的程序中,如果你派生了对话框的OnPaint函数,然后你把ClassWiziad自动生成的那个声明语句:CPaintDC dc(this);删除的话,当对话框显示后,会发现资源占用率为100%,程序老在那儿重绘。就因为这个原因,昨天害的我一下午调试,一个语句一个语句的注释,最后发现竟然是这个原因。所以,提醒一下,如果你重载了OnPaint函数,一定不要把那个声明语句去掉,不管你后面用不用那个dc。
解决方案 »
- COM 中 Invoke 回调只执行一次
- 关于VS 2005 获得窗口句柄后 如何获得句柄所指的窗口尺寸大小
- msdn里说的module 和process是怎么样一种关系啊? (100分)
- 请教各位高手一个简单的问题
- 主线程中怎么调用UI线程中的函数?
- 如何在对话框的Picture控件中显示一幅从硬盘上读到的图像?
- 请帮忙呀,什么是打包解包呀?
- 问有关对话消息发送的问题!
- 高分急救,装不了vs6了,我的系统是win2k,(及微软专家在吗)
- logfont和Createfont,我该用哪一个
- 种子算法,现在问题是算法能达到要求,但有BUG,附源码
- 在ATL和MFC混合编程中,如何在MFC继承的类中调用ATL接口中声明的方法。
因此这也不是BUG.
{
ASSERT_VALID(pWnd);
ASSERT(::IsWindow(pWnd->m_hWnd)); if (!Attach(::BeginPaint(m_hWnd = pWnd->m_hWnd, &m_ps)))
AfxThrowResourceException();
}CPaintDC::~CPaintDC()
{
ASSERT(m_hDC != NULL);
ASSERT(::IsWindow(m_hWnd)); ::EndPaint(m_hWnd, &m_ps);
Detach();
}你自己处理WM_PAINT消息,就要调用BeginPaint和EndPaint,CPaintDC为你做了。
你把它删除了,WM_PAINT消息得不到处理,当然出问题。
我在OnPaint中会获取另一个dc来绘图的
+++++++++++++++++++++++++++++++++++++++
这不是画蛇添足是什么?