码迷,mamicode.com
首页 > Windows程序 > 详细

delphi IsIconic

时间:2018-05-03 10:24:56      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:代码   例子   int   任务   delphi   ESS   icon   不显示   bee   

IsIconic()作用是判断窗口是否处于最小化状态(点击了最小化按钮之后)。 
对于普通的对话框来说,如果你在if (IsIconic()) 下面加入AfxMessageBox("haha") ,你会发现消息框并不会弹出。
原因是,if (IsIconic()) 这段代码是在OnPaint()函数内,当你最小化了对话框之后,虽然IsIconic()的值是TRUE,但是OnPaint()函数并不会运行。
因为OnPaint()响应的是WM_PAINT消息,而WM_PAINT消息是针对客户区的。
一个最小化了的窗口不需要重绘客户区。
为了验证这一点,可以设置一定时器,在OnTimer()函数里写上 if(IsIconic()) MessageBeep(MB_OK); 当你点击最小化按钮后,你会听见嘟嘟声。
那么这段代码究竟有什么用?它是不是永远不会被执行呢?当然不是。
举两个例子。 第一,如果你强行发送WM_PAINT消息,它会执行。 第二,特殊的对话框。比如一个ToolBox风格的对话框。
这个对话框不显示在任务栏,在最小化之后它会变成一个很小的一条显示在桌面上。这时如果它被遮挡,就会出发WM_PAINT消息,从而执行那段代码。
总之,一般情况下可以不要这段代码,它的特殊用途我也不是很了解,但是我们至少可以知道它是怎么样工作的。

delphi IsIconic

标签:代码   例子   int   任务   delphi   ESS   icon   不显示   bee   

原文地址:https://www.cnblogs.com/yangxuming/p/8983872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!