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 消息, 从而执行那段代码.
总之, 一般情况下可以不要这段代码, 它的特殊用途我也不是很了解, 但是我们至少可以知道它是怎么样工作的.
来源: http://www.bubuko.com/infodetail-2585187.html