鼠标改变对话框大小
VC对话框运行后不能改变大小的问题收藏
今天建立了个基于对话框的mfc工程,运行后发现对话框不能改变大小,而且没有最大化最小化按钮。
进寻找后发现:通过对话框的属性的maxize和minize可以设置是否具有最大化和最小化按钮,但是仍然不能改变大小。
但是经过一番搜索,发现在对话框的Oninitdialog 加一句
ModifyStyle( NULL, WS_THICKFRAME);
可以设置对话框能够改变大小。
时候总结发现,要想让对话框具有改变大小的功能需要在两个地方进行设置,一个是在OnInitDialog中加一句ModifyStyle( NULL, WS_THICKFRAME);另外一个就是必须在对话框属性里设置对话框具有最大化按钮,否则对话框运行后将鼠标移动到边界处虽然能够出现改变大小的图标,但是并不能改变大小
此时的窗口运行后,就能够通过鼠标拖动改变大小。不过,只要你足够细心,就能够发现:当拖动窗口达到最小之后,再继续拖动鼠标,此时就会出现一个错误(即bug)。为什么?
解决方法如下:
在WM_SIZE消息响应函数,即OnSize(UINT nType, int cx, int cy)函数添加如下代码:
if(cx == 0 || cy == 0) return;
此条语句的目的很明显!^_^ 附注:
CWnd::ModifyStyle()函数说明: 1.作用:
调用这个函数修改窗口的风格 2.函数原型: BOOL ModifyStyle (
DWORD dwRemove, DWORD dwAdd, UINT nFlags=0 );
3.参数含义:
dwRemove 指定修改时要删除的窗风格。 dwAdd 指定修改时将要增加的窗口风格。
nFlags 该参数将被传给SetWindowPos,否则为0,如果SetWindowPos不被调用的话,一般该参数默认值
4.返回值:
如果该函数成功调用返回一个非0值,否则返回0;