LinMinquan's Blog

Experience technology to change life

对Dialog上的控件进行布局,IsWindow(),Sizer类

想要在Dialog的size变化,或窗口移动时,对Dialog中控件进行重新布局。

其实主要是在OnSizer里加一reLayout函数,但是在第一次进入OnSizer时,界面上的按钮控件等还没有创建,hWnd都是NULL,在运行完OnInitDialog后才创建。

之前的解决办法是加一个bool的成员变量,在OnInitDialog时标记为true,然后在OnSizer里判断。老查同学看了觉得不好,给出了以下办法:

  1. 创建一个Sizer类,作为该Dialog类的成员变量,在OnInitDialog时new出来,在OnSizer时判断Sizer指针对象是否存在。Sizer类在还负责布局控件,在其构造函数时,把父窗口句柄,和窗口上的控件指针都传进去。这样就把布局和对话框独立开来。

2.老罗同学给了一个也很简单的办法,就是在OnSizer时对按钮等对象用IsWindow进行判断。http://msdn.microsoft.com/en-us/library/y840ts89.aspx


Share