MFC生成对话框程序中onpaint()中的初始代码什么意思?

nonowhy 2004-06-20 01:48:40
好象是设置这个icon?这个icon是什么?

void CMyTestDlg::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();
}
}
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonowhy 2004-06-20
  • 打赏
  • 举报
回复
这里:
CRect rect;
GetClientRect(&rect); //获取客户区域吧 最小化了客户区是哪个??;
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; //这两句什么用?x y是那里坐标?

lianglp 2004-06-20
  • 打赏
  • 举报
回复
楼上大哥说的很清楚了。
vcforever 2004-06-20
  • 打赏
  • 举报
回复
void CMyTestDlg::OnPaint()
{
if (IsIconic())//如果对话框最小化了
{
CPaintDC dc(this); // 取得对话框的PaintDC
//向该对话框发送WM_ICONERASEBKGND消息,该消息的详细含义可以通过
//MSDN获得
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;//计算ICON左上角的X坐标
int y = (rect.Height() - cyIcon + 1) / 2;//计算ICON左上角的Y坐标

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);//绘制图标
}
else//在对话框非最小化的时候调用
{
CDialog::OnPaint();
}
}


希望对你有所帮助!
wqs_qiu_shi 2004-06-20
  • 打赏
  • 举报
回复
这个意思是,如果系统最小化时.用来画图标的.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧