MFC C++初学,ONPAINT函数谁能逐句解释下 谢谢
voidCMyDlgOpenGLDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//用于绘制的设备上下文SendMessag...
void CMyDlgOpenGLDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
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;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
} 展开
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
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;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
} 展开
2014-05-21
展开全部
void CMyDlgOpenGLDlg::OnPaint()
{
if(IsIconic()) //如果需要绘制图标
{
CPaintDCdc(this); // 获取绘图设备上下文
SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0);
//请求重画图标背景
intcxIcon = GetSystemMetrics(SM_CXICON);//获取图标宽度
intcyIcon = GetSystemMetrics(SM_CYICON);//获取图标高度
CRectrect;
GetClientRect(&rect);//获取窗口客户区的尺寸
//下面两行是计算图标居中显示的位置
intx = (rect.Width() - cxIcon + 1) / 2;//图标位置x坐标
inty = (rect.Height() - cyIcon + 1) / 2;// 图标位置y坐标
//绘制图标
dc.DrawIcon(x,y, m_hIcon);
}
else
{
CDialogEx::OnPaint();//调用父窗口的绘制函数
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询