去除windows自带的border

    技术2022-05-20  31

    最近在做一个自建的非模态对话框,首先我在内存中申请了资源,然后建立了一个对话框,但这个对话框是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


    最新回复(0)