OnQueryDragIcon()
{
return NULL;
}OnPaint()
{
if (!IsIconic())
CDialog::OnPaint()
}
我把他们改成上面那样,与不改没有任何区别,至少目前我还没发现区别,那么原来MFC自动生成的那些代码有什么用呢?
附:上面两个函数的MFC自动产生的代码:
OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}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();
}
}
{
return NULL;
}OnPaint()
{
if (!IsIconic())
CDialog::OnPaint()
}
我把他们改成上面那样,与不改没有任何区别,至少目前我还没发现区别,那么原来MFC自动生成的那些代码有什么用呢?
附:上面两个函数的MFC自动产生的代码:
OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}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();
}
}
if (IsIconic())
{
///...
}
这段代码的作用是用来绘制窗口最小化的时候得图标(ICON)的。OnQueryDragIcon是在窗口最小化的时候返回窗口的图标句柄。
根本就没有执行,因为没有它的消息,就象你单击鼠标右键一样,只有你单击了右键,系统程序才会响应OnRButtonDowm(...)的
OnQueryDragIcon()
{
return NULL;
}OnPaint()
{
if (!IsIconic())
CDialog::OnPaint()
}
与原来的没有任何区别,图标还是我自己定义的图标,还是我请手画的。
另外,删除默认代码还不如你自己写点其他代码有效。因为系统默认的操作可能和删掉代码的结果差不多。查查MSDN吧,你会有收获的。