麻烦给分析一下新建工程中系统自动生成的OnPaint()各条语句的意思!
void CTestDlg::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();
}
}
问题点数:40、回复次数:4Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-03-19 16:02:11 得分 25
if (IsIconic())
{
//如果窗口最小化了,显示Icon
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的默认处理
CDialog::OnPaint();
}
Top
2 楼xiaoxinxin7(上帝啊!)回复于 2006-03-19 16:20:42 得分 0
那这个显示ICON有什么实际意义呢?
请详细说明哈Top
3 楼soaroc(会飞的猪)回复于 2006-03-19 16:26:15 得分 15
就是窗口最小化时所显示的图标。Top
4 楼xiaoxinxin7(上帝啊!)回复于 2006-03-19 17:12:38 得分 0
但是如果没有这段语句,窗口最小化时仍然会显示图标,那要这个有什么用?Top




