当前位置:C++技术网 > 资讯 > ModifyStyle函数自定义调整对话框的大小

ModifyStyle函数自定义调整对话框的大小

更新时间:2016-02-06 16:32:54浏览次数:1+次

我们习惯上利用VS的对话框属性表来实现对话框大小的调节。对话框属性->Border->Resizing就可以了。不过在这里,我们不利用属性表中的选项来设置,而是我们自己写。我们利用ModifyStyle函数来写,关于这个函数的解释请看《 利用ModifyStyle函数创建MFC封装默认的滚动轮》下面,我们来看看。调整对话框的大小无非就是对边框的控制,我们来看看windows给我们安排的几个边框样式:
WS_BORDER- Thin-line border,不能调整大小;   
 WS_DLGFRAME -dialog box typical border,不能调整大小;    WS_SIZEBOX -sizing border,可以调整大小;   
 WS_THICKFRAME - 同WS_SIZEBOX
具体的你可以查MSDN。
于是,我们就可以写代码了:
this->ModifyStyle(0 ,WS_THICKFRAME ,0);
这是在对话框类的初始化函数中写的。就简单的一句代码,但是你运行之后就会发现,当我们的鼠标出现在边框时,只会出现双箭头的鼠标,并不会改变并调整对话框的大小。这是为什么?经过查询,我发现是因为对话框属性表中的SystemMenu这个选项搞的鬼!当我们创建一个对话框时,MFC默认会给我们的对话框style中的SystemMenu设置为TRUE。SystemMenu是指系统菜单。当你右键单击图标时,就会弹出一个菜单,同时在对话框的工具栏上,“x”按钮(取消掉整个对话框)也是系统菜单的一部分,还有最大化最小化按钮,也是哦!既然我们说过,靠手写代码来实现调节对话框的大小,就不在对话框属性表中设置System Menu为false了。而是直接写代码实现:因此上面的代码就可以改为:
this->ModifyStyle(WS_SYSMENU ,WS_THICKFRAME ,0);
还有一种方法,就是设置对话框属性表中的最大化或最小化为TRUE就行了。