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();
}
}
展开
 我来答
匿名用户
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();//调用父窗口的绘制函数
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式