猿问

请问关于CView某个函数里加入CDC* pDC=GetDC()后画图问题?

CView某个函数里加入CDC* pDC=GetDC()后画图,为什么界面大小一变图就消失了?


收到一只叮咚
浏览 577回答 3
3回答

LEATH

界面大小改变,会发送窗口区无效的命令,也就是WM_PAINT,然后会导致窗口进行重绘。然后系统响应这个消息的顺序通常是:先调用OnPaint(消息处理函数),然后在OnPaint里面调用OnDraw(不是消息相应函数)函数,所以如果你想让窗口改变以后你的图像还在,那么你应该讲绘图的命令写在OnDraw函数里面,或者说干脆直接重载一遍OnDraw函数,然后根据自己的意愿任意绘图

森栏

你如何添加的 ,是不是下面这样子,没问题啊void CTestzhidaodlgDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}static int i=0;CDC *pDC=GetDC();if(i==1)pDC->Rectangle(0,0,100,100);i++;ReleaseDC(pDC);}
随时随地看视频慕课网APP
我要回答