请问这段代码有什么用?

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前面,调试了好几次都没有运行到断点,不管是最大化,最小化,还是失去焦点等。
...全文
173 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吗
内容概要:本文围绕不确定环境下的多式联运路径优化问题展开研究,提出并实现了基于AFO算法、遗传算法(GA)和粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力和稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化问题时展现出更快的收敛效率和更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划问题提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标函数设计、约束条件处理及参数敏感性分析部分,可通过调整问题规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。
内容概要:本文研究了基于QLearning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,通过Matlab代码实现了控制算法的仿真验证。该方法融合强化学习的在线自适应能力与传统PID控制的稳定性优势,利用QLearning算法动态优化PID控制器的比例、积分、微分参数,以应对水下复杂流体环境、模型不确定性及外部干扰等挑战,从而提升AUV轨迹跟踪的精度、鲁棒性与动态响应性能。文中系统阐述了AUV的六自由度非线性动力学建模过程、QLearning算法的状态空间与动作空间设计、奖励函数构造及训练机制,并详细说明了PID参数自整定的闭环控制架构。仿真结果表明,相较于传统固定参数PID控制器,该智能控制策略在多种工况下均展现出更优的控制效果,有效抑制了超调,加快了响应速度,并增强了抗干扰能力。; 适合人群:具备自动控制理论、强化学习基础及Matlab/Simulink仿真能力,从事水下机器人、智能控制、海洋工程、自动化等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于AUV、UUV等无人水下平台的高精度自主导航与运动控制;②为解决非线性、强耦合、时变系统的控制器参数自适应整定问题提供智能化解决方案;③作为强化学习与经典控制理论深度融合的技术范例,推动智能控制算法在海洋装备中的工程化应用。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点剖析QLearning的状态-动作-奖励机制设计、PID参数更新逻辑及仿真对比实验结果,有条件者可在更复杂的动力学模型或实际硬件平台上进一步验证与优化算法性能。

16,550

社区成员

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

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

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