3 回答
TA贡献1783条经验 获得超4个赞
界面大小改变,会发送窗口区无效的命令,也就是WM_PAINT,然后会导致窗口进行重绘。然后系统响应这个消息的顺序通常是:先调用OnPaint(消息处理函数),然后在OnPaint里面调用OnDraw(不是消息相应函数)函数,所以如果你想让窗口改变以后你的图像还在,那么你应该讲绘图的命令写在OnDraw函数里面,或者说干脆直接重载一遍OnDraw函数,然后根据自己的意愿任意绘图。
TA贡献1795条经验 获得超7个赞
你如何添加的 ,是不是下面这样子,没问题啊
void CTestzhidaodlgDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int 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 icon
dc.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);
}
- 3 回答
- 0 关注
- 777 浏览
添加回答
举报