设置WS_EX_CLIENTEDGE窗口风格

关于该风格要注意几点的是:

  1. WS_EX_CLIENTEDGE窗口风格并不是对所有窗口都有效,只有窗口有客户区的时候才有效,这样当它用在比如button,combox,tab无客户区的控件时,它是无效的。
  2. 通过对话框模版创建的控件ListCtrl,如果你指定了WS_BORDER,这时WS_BORDER将被拿掉,而WS_EX_CLIENTEDGE会被设置上。但是如果你通过create手动创建则不会出现这种情况。
  3. 当WS_EX_CLIENTEDGE设置上,在控件边缘和客户区之间将有2个像素大小的空隙,与其他做比较:WS_BORDER,一个像素,WS_EX_WINDOWEDGE为3个象素;WS_EX_STATICEDGE为1个像素,当WS_EX_CLIENTEDGE|WS_EX_WINDOWEDGE,有5个像素,而WS_EX_CLIENTEDGE|WS_EX_STATICEDGE|WS_EX_STATICEDGE还是5个像素,说明有像素重在一起的时候。
  4. WS_EX_CLIENTEDGE只在创建时设定有效,如果在创建之后设定,必须跟上另一个参数,SWP_DRAWFRAME或SWP_FRAMECHANGED,实际上这两者值完全一样。如下是通过create创建并添加WS_EX_CLIENTEDGE风格的例子:

    [cpp] view
    plain
    copy

    1. m_list.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT,CRect(0,0,100,100),this,0);
    2. m_list.ModifyStyleEx(0,WS_EX_CLIENTEDGE,SWP_FRAMECHANGED);

    原因在于当添加WS_EX_CLIENTEDGE实际上要重设客户区大小才能起作用,而重设客户区只能通过WM_NCCALCSIZE来设定,但是这个消息只有才创建时才会触发,单纯修改WGL_EXSTYLE属性并不会触发,添加SWP_FRAMECHANGED正是为了触发该消息。

设置WS_EX_CLIENTEDGE窗口风格

时间: 2024-08-24 15:37:05

设置WS_EX_CLIENTEDGE窗口风格的相关文章

一个简单的记事本编辑框的实现以及搜集的一些窗口风格的预定义

这是一个简单的记事本的窗口过程 1 WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 2 3 LOCAL winRect:RECT 4 LOCAL editWidth:DWORD 5 LOCAL editHeight:DWORD 6 7 .IF uMsg==WM_DESTROY 8 invoke PostQuitMessage,NULL 9 .ELSEIF uMsg==WM_CREATE 10 ;创建一个编辑框 11

窗口风格

窗口风格(Window style) WS_BORDER   有边框窗口 WS_CAPTION   必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用.指示窗口包含标题要部分. WS_CHILD   说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP). WS_CHILDWINDOW   同WS_CHILD. WS_CLIPCHILDREN   绘制父窗口时,不绘制子窗口的裁剪区域.使用在建立父窗口时. WS_CLIPSIBLINGS 剪裁相关的子窗口,这意味

MFC窗口风格 WS_style/WS_EX_style(超详细)

窗口风格(Window style) WS_BORDER   有边框窗口 WS_CAPTION   必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用.指示窗口包含标题要部分. WS_CHILD   说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP). WS_CHILDWINDOW   同WS_CHILD. WS_CLIPCHILDREN   绘制父窗口时,不绘制子窗口的裁剪区域.使用在建立父窗口时. WS_CLIPSIBLINGS 剪裁相关的子窗口,这意味

MFC窗口风格 WS Window Styles中文说明及在c#中的定义使用

窗口风格(Window style) WS_BORDER 有边框窗口 WS_CAPTION 必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用.指示窗口包含标题要部分. WS_CHILD 说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP). WS_CHILDWINDOW 同WS_CHILD. WS_CLIPCHILDREN 绘制父窗口时,不绘制子窗口的裁剪区域.使用在建立父窗口时. WS_CLIPSIBLINGS 剪裁相关的子窗口,这意味着,当一个特定的子窗

窗口风格详解

上面一句是扩展窗口风格,下面一句是窗口风格扩展窗口风格: WS_EX_ACCEPTFILES 指明用这个风格创建的窗口能够接受拖放文件.  · WS_EX_CLIENTEDGE 指明窗口具有3D外观,这意味着,边框具有下沉的边界.  · WS_EX_CONTEXTHELP 在窗口的标题条中包含问号.当用户单击问号时,鼠标光标的形状变为带指针的问号.如果用户随后单击一个子窗口,子窗口将接收到一个WM_HELP消息.  · WS_EX_CONTROLPARENT 允许用户用TAB键遍历窗口的子窗口.

MFC窗口风格 WS_style/WS_EX_style

窗口风格(Window style) WS_BORDER   有边框窗口 WS_CAPTION   必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用.指示窗口包含标题要部分. WS_CHILD   说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP). WS_CHILDWINDOW   同WS_CHILD. WS_CLIPCHILDREN   绘制父窗口时,不绘制子窗口的裁剪区域.使用在建立父窗口时. WS_CLIPSIBLINGS 剪裁相关的子窗口,这意味

PYQT窗口风格

setWindowFlags(Qt.WindowFlags)函数,Qt.WindowFlags类如下: 1.窗口类型 Qt.Qt.Widget#插件默认窗口,有最小化.最大化.关闭按钮 Qt.Qt.Window#普通窗口,有最小化.最大化.关闭按钮 Qt.Qt.Dialog#对话框窗口,有问号和关闭按钮 Qt.Qt.Popup#弹出窗口,窗口无边框化 Qt.Qt.ToolTip#提示窗口,窗口无边框化,无任务栏窗口 Qt.Qt.SplashScreen#飞溅屏幕,窗口无边框化,无任务栏窗口 Qt

Android_Dialog_设置Dialog窗口的大小

/** * 设置Dialog窗口的大小 */ private void setWindowSize() { DisplayMetrics dm = new DisplayMetrics(); WindowManager m = getWindowManager(); m.getDefaultDisplay().getMetrics(dm); // 为获取屏幕宽.高 WindowManager.LayoutParams p = getWindow().getAttributes(); // 获取对

windows界面程序设计,设置一个窗口始终在屏幕最前,SetWindowPos函数

有时这种需求还是很必须的,比如现在做的一个登录验证系统,如果在windows登录界面点击到窗口外面,那窗口就会永远隐藏掉没法再启用了.这种情况必须设置该窗口一直在最前. 使用函数SetWindowPos. 例如: SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE); 首先第一个参数是窗口句柄. 之后是设置窗口层级: 然后设置窗口坐标和新的高度宽度. 最后一个参数: 这个函数的使用的位置,就是在CreateWindow函数之后,立即调用即可. hW