关于对话框的问题 为啥WM_SIZE会在WM_INITDIALOG之前发生?这导致我在动态调整控件布局时崩溃... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是确定窗口的大小的。你下次改变窗口大小时还会发送WM_SIZE消息的。 设置个信号量bCreated不就行了OnInitDialog里控件初始化完毕后,bCreated = TRUE;OnSize()里,if (bCreated)//然后再调整布局,第一次初始化时先不调整布局 palmax(南宫煌)的方法不可取,有时初始化完后不走OnSize的,OnSize只在大小改变时执行。 几个函数的运行顺序是这样的: Create => OnCreate => OnSize => OnInitDialog楼上的调查了再发言 请问楼上,如果lz把它的布局方法写在了OnSize里,照你那样做,同时按照你的说法,先走OnSize,再OnInit,窗口打开后能看的到初始化布局么?(如果控件最初摆放也是用MoveWindow的话)不知道我说了什么就使得你给这几个方法排了个序。不否认,你没搞错,在一般情况下,先OnSize再OnInit窗口就出来了,可是如果初始化后又调了MoveWindow之类的方法,窗口会在你看到它之前再走N次OnSize的。这种情况太常见了。我说的是这个意思。所以,如果按照你的说法,lz需在OnInit里初始化布局,再在OnSize里面调整布局。我这样可以把它们都放进OnSize归为一个方法,也比你少一个变量,明白? 呵呵,我们都没有说错什么,只是大家都不知道楼主具体是怎么实现的,如果对MFC的机制比较熟悉的话,应该不会犯你说的那种错误 我只是不同意你说的 "有时初始化完后不走OnSize的"请你证明你一下什么时候不走? 好久了才想起这个,谢谢各位。因为我要得到各个控件的位置就得有控件窗体句柄,所以,即使对话框的窗体句柄有效,控件的也不一定有效(对话框刚刚创建,然后OnSize)。所以不能在OnSize中使用GetSafeHwnd这种方法,只能在OnInitDialog中设个标记。 求位平面分解的函数 UDP通讯如何获得接收网卡设定的IP 如何监测ip地址已经修改? 如何将浮点数转变为字符串 网络程序中,已知进程的ID,进程的名称,怎样获得该进程的端口号? 有关切分窗格对应不同的视的问题? 怎么给CListCtl的表头变一下颜色?very thank 如何控制工具栏上按钮的显示和隐藏? 初学VC者的提问 如何使用条形码扫描器 请问在哪里能看到我使用的VC6.0是什么版本?标准版、企业板等?还有,我打了VC6.0的补丁,在哪里能看到我已经成功安装了补丁? 100分求解文件下载的问题!
你下次改变窗口大小时还会发送WM_SIZE消息的。
OnInitDialog里控件初始化完毕后,bCreated = TRUE;
OnSize()里,
if (bCreated)
//然后再调整布局,第一次初始化时先不调整布局
Create => OnCreate => OnSize => OnInitDialog
楼上的调查了再发言
请你证明你一下什么时候不走?
因为我要得到各个控件的位置就得有控件窗体句柄,所以,即使对话框的窗体句柄有效,控件的也不一定有效(对话框刚刚创建,然后OnSize)。
所以不能在OnSize中使用GetSafeHwnd这种方法,只能在OnInitDialog中设个标记。