去除windows自带的border

来源:互联网 发布:二战后的英国知乎 编辑:程序博客网 时间:2024/05/16 17:06

最近在做一个自建的非模态对话框,首先我在内存中申请了资源,然后建立了一个对话框,但这个对话框是windows默认格式的对话框,包括蓝色的标题栏,3d edge等边框,而我不想用这种形式,在网上搜了很久,终于找到一种可行的方法来消除它。

       windows 的border有很多种,包括WS_BORDER,   WS_THICKFRAME,   WS_SIZEBOX等,仅用~(DS_MODALFRAME   |   WS_POPUP   |   WS_CAPTION);未必能去除所有的border; 当时我只是去除了WS_BORDER和WS_EX_CLIENTEDGE,WS_CAPTION,但是去除了标题栏以后,周围还是有白色的边框等,证明我们没有完全去年边框。
在下面的链接里我们需要用到SetWindowLong,并调用SetWindowPos这个函数来通知系统当前窗口风格已经修改。
 

直接
SetWindowLong(hWnd,   GWL_STYLE,   WS_POPUP);
SetWindowLong(hWnd,   GWL_EXSTYLE,0);
SetWindowPos(hWnd,   NULL,   0,   0,   0,   0,   SWP_NOMOVE   |   SWP_NOSIZE   |   SWP_NOZORDER   |   SWP_FRAMECHANGED);

调用以上代码,经测试可以达到属性中border为none的效果。

http://topic.csdn.net/u/20070827/13/fd79bd7f-bddc-490f-a2ca-6082622d3e74.html

原创粉丝点击