您的位置:首页 > 其它

去除windows自带的border

2011-03-02 11:44 106 查看
最近在做一个自建的非模态对话框,首先我在内存中申请了资源,然后建立了一个对话框,但这个对话框是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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: