请问这段代码有什么用?

zhaozidong86 2011-01-28 02:27:14
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();
}
我放了一个断点在else前面,调试了好几次都没有运行到断点,不管是最大化,最小化,还是失去焦点等。
...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
alangsos 2011-01-28
  • 打赏
  • 举报
回复
d在onpaint下断点是看不什么的,因为断下来的时候窗口不见了,再要显示窗口时又唉断下了!这样你怎么分析?
辰岡墨竹 2011-01-28
  • 打赏
  • 举报
回复
默认情况下系统是不会给不可见窗口绘制消息的,现在来说这个代码不是很重要。这个代码是从Win3.x继承过来的,那个时候没有任务栏,窗口最小化会显示一个图标,程序要响应WM_PAINT来绘制它,不过多数程序都是直接让默认的系统窗口过程去做。Win95也可以选择安装为3.x界面风格,为了兼容性考虑而需要这个。
此外Windows其实会将最小化窗口移动到特别的坐标去,Win9x会将窗口放到(3000,3000)坐标,WinNT则会放到(-32000,-32000)坐标。如果你将一个接有三台17寸液晶的Win98显示器对角线放置,就会看到所有最小化的窗口在右下角了。也就是说最小化的窗口也被看到的可能,画个图标来区分也是有意义的吧。
之所以会选择移动窗口,还是旧的16位Win3.x程序的兼容问题,因为有些程序对待不可见(Hide)和最小化(Show)是有区别的。
这个代码在MFC的SDI和MDI程序里会被框架自动完成的,只有对话框程序会自动产生这个额外代码,不过现在一般都用不到它,删掉也没关系。
coorell 2011-01-28
  • 打赏
  • 举报
回复
ONPANT 函数
是绘制窗体的意思

if (IsIconic())

这个条件就需要的窗体有图标,有的话才会绘制图标 ,没有的话 你在IF里面下断点 是无用的 因为程序不会执行进去

很易懂的告诉了你,给分吧
yiruirui0507 2011-01-28
  • 打赏
  • 举报
回复
楼主可以把问题说清楚点,就上面几句还看不出来问题,当最大化的时候if条件为假,肯定会跳动ELSE哪里的,把代码都贴出来吧。。。。。。。呵呵
stonewater 2011-01-28
  • 打赏
  • 举报
回复
OnPaint是消息触发的,在最小化时系统不会发送重绘的消息,所以导致基本上不会执行到

任务栏中一直点你的应用让它最大化最小化不停的切换,在最大化时,WM_PAINT发出后,立即让它最小化,确保在OnPaint之前,你已经完成了最小化:这样就能触发了
lyingbo 2011-01-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tigermaydo 的回复:]
不就是画icon吗
[/Quote]

就是画一个icon啊
tigerMayDo 2011-01-28
  • 打赏
  • 举报
回复
不就是画icon吗

16,472

社区成员

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

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

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