对Dialog上的控件进行布局,IsWindow(),Sizer类
想要在Dialog的size变化,或窗口移动时,对Dialog中控件进行重新布局。
其实主要是在OnSizer里加一reLayout函数,但是在第一次进入OnSizer时,界面上的按钮控件等还没有创建,hWnd都是NULL,在运行完OnInitDialog后才创建。
之前的解决办法是加一个bool的成员变量,在OnInitDialog时标记为true,然后在OnSizer里判断。老查同学看了觉得不好,给出了以下办法:
- 创建一个Sizer类,作为该Dialog类的成员变量,在OnInitDialog时new出来,在OnSizer时判断Sizer指针对象是否存在。Sizer类在还负责布局控件,在其构造函数时,把父窗口句柄,和窗口上的控件指针都传进去。这样就把布局和对话框独立开来。
2.老罗同学给了一个也很简单的办法,就是在OnSizer时对按钮等对象用IsWindow进行判断。http://msdn.microsoft.com/en-us/library/y840ts89.aspx