关于VC OnPaint函数重载的问题
我在onpaint函数的else后面加了如下代码else{CDC*dc;CPenNewPen,*pOldPen;NewPen.CreatePen(PS_SOLID,1,R...
我在onpaint函数的else后面加了如下代码
else
{
CDC *dc;
CPen NewPen,*pOldPen;
NewPen.CreatePen(PS_SOLID,1,RGB(0,0,0));
dc=GetDlgItem(IDC_SHOW)->GetDC();
pOldPen=dc->SelectObject(&NewPen);
CPoint cPt;
cPt=dc->GetViewportOrg();
long cx,cy;
cx=cPt.x;
cy=cPt.y;
CString str;
str.Format("%d",cx);
MessageBox(str);
dc->MoveTo(0,0);
dc->LineTo(200,200);
ReleaseDC(dc);
CDialog::OnPaint();
}
其中有一个就是弹出当前原点坐标的消息对话框,但是一启动,对话框就一直弹出,我认为是onpaint函数一直在重载,不知道我想的对不对,请大神们给指导一下,不尽感谢! 展开
else
{
CDC *dc;
CPen NewPen,*pOldPen;
NewPen.CreatePen(PS_SOLID,1,RGB(0,0,0));
dc=GetDlgItem(IDC_SHOW)->GetDC();
pOldPen=dc->SelectObject(&NewPen);
CPoint cPt;
cPt=dc->GetViewportOrg();
long cx,cy;
cx=cPt.x;
cy=cPt.y;
CString str;
str.Format("%d",cx);
MessageBox(str);
dc->MoveTo(0,0);
dc->LineTo(200,200);
ReleaseDC(dc);
CDialog::OnPaint();
}
其中有一个就是弹出当前原点坐标的消息对话框,但是一启动,对话框就一直弹出,我认为是onpaint函数一直在重载,不知道我想的对不对,请大神们给指导一下,不尽感谢! 展开
展开全部
你理解的完全正确,onpaint函数由系统调用的,当窗体刷新动作时都会调用这个函数,如果你只是想看调试结果,可以把MessageBox(str);换成TRACE(str);在output窗口中会打印出信息。
更多追问追答
追问
谢谢您的及时回答,我想再请教下:
1、窗体用鼠标拖动,会不会重载函数
2、窗体其它按钮的点击会不会产生重载
3、为什么我只是点了弹出对话框,只没有对窗体进行操作,怎么会产生重载呢
谢谢了
追答
1、2、3都会,不是重载,是系统会回调该函数,只要窗体状态改变都会导致窗体进行重绘,都会调用OnPaint()函数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询