直接这样使用CPaintDC是不合适的,因为它在构造时和析构时分别需要调用CWnd::BeginPaint和CWnd::EndPaint,所以只应该用于响应WM_PAINT消息的地方,一般是OnPaint消息处理函数,因为在这时候,系统已经帮我们完成了CWnd::BeginPaint的调用。建议您在代码中改用CDC* pDC = GetDC()这一句。 CPaintDC dc(this);
HICON hicon;
hicon=AfxGetApp()->LoadIcon(IDI_ICON1); 
CRect rect;
GetClientRect(&rect);

CDC* pDC = GetDC();
// Draw the icon.
//dc.SetBkColor(RGB(200,200,200)); 
//BOOL iRet=dc.DrawIcon(rect.left,rect.top , hicon);
pDC->SetBkColor(RGB(200,200,200)); 
BOOL iRet=pDC->DrawIcon(rect.left,rect.top , hicon);
如果需要进一步的信息,您可以查看http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cpaintdc.asp等有关的信息。- 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。