窗口的属性

来源:互联网 发布:大数据市场调查报告 编辑:程序博客网 时间:2024/05/21 16:42
 

在MFC创建的单文档界面中:

在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中添加下面的代码可以固定窗口大小

cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX;// | WS_THICKFRAME;
cs.style &= ~WS_BORDER;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
int iWinBorderX = GetSystemMetrics(SM_CXBORDER);
int iWinBorderY = GetSystemMetrics(SM_CYBORDER);
int iCaptionY = GetSystemMetrics(SM_CYCAPTION);
int iMenuY = GetSystemMetrics(SM_CYMENU);
int iStausY = GetSystemMetrics(SM_CYMENU);
cs.cx = 510 + iWinBorderX ;
cs.cy = 530 + iWinBorderY + iCaptionY + iStausY + iMenuY;

    在上面的代码中:

    前三行确定窗口风格。“|”表示添加风格,“&~”表示去掉风格。四到八行用函数GetSystemMetrics获取一些系统数据,以像素为单位。最后计算窗口的宽和高。

 

 

    style:

    WS_OVERLAPPED  有标题

    WS_SYSMENU  有系统菜单:最小化、最大化和关闭

    WS_MINIMIZEBOX   可以最小化窗口

    WS_THICKFRAME   可以拖动改变窗口大小

    WS_BORDER   带黑色边框

    WS_MAXIMIZEBOX 可以最大化窗口

 

 

    dwExStyle:

    WS_EX_CLIENTEDGE    扩展属性,带阴影边框

 

 

    GetSystemMetrics参数:

    SM_CMOUSEBUTTONS  返回值为系统支持的鼠标键数,返回0,则系统中没有安装鼠标。

  SM_CXBORDER、SM_CYBORDER  返回以像素值为单位的Windows窗口边框的宽度和高度,如果Windows的为3D形态,则等同于SM_CXEDGE参数

  SM_CXCURSOR、SM_CYCURSOR  返回以像素值为单位的标准光标的宽度和高度

  SM_CXDLGFRAME、SM_CYDLGFRAME  等同与SM_CXFIXEDFRAME and SM_CYFIXEDFRAME

  SM_CXDOUBLECLK、SM_CYDOUBLECLK  以像素值为单位的双击有效的矩形区域

  SM_CXEDGE、SM_CYEDGE  以像素值为单位的3D边框的宽度和高度

  SM_CXFIXEDFRAME、SM_CYFIXEDFRAME  围绕具有标题但无法改变尺寸的窗口(通常是一些对话框)的边框的厚度

  SM_CXFRAME、SM_CYFRAME  等同于SM_CXSIZEFRAME and SM_CYSIZEFRAME

  SM_CXFULLSCREEN、SM_CYFULLSCREEN  全屏幕窗口的窗口区域的宽度和高度

  SM_CXHSCROLL、SM_CYHSCROLL  水平滚动条的高度和水平滚动条上箭头的宽度

  SM_CXHTHUMB  以像素为单位的水平滚动条上的滑动块宽度

  SM_CXICON、SM_CYICON  系统缺省的图标的高度和宽度(一般为32*32)

  SM_CXICONSPACING、SM_CYICONSPACING  以大图标方式查看Item时图标之间的间距,这个距离总是大于等于


  SM_CXMAXIMIZED、SM_CYMAXIMIZED  处于顶层的最大化窗口的缺省尺寸

  SM_CXMAXTRACK、SM_CYMAXTRACK  具有可改变尺寸边框和标题栏的窗口的缺省最大尺寸,如果窗口大于这个尺寸,窗口是不可移动的。

  SM_CXMENUCHECK、SM_CYMENUCHECK  以像素为单位计算的菜单选中标记位图的尺寸

  SM_CXMENUSIZE、SM_CYMENUSIZE  以像素计算的菜单栏按钮的尺寸

  SM_CXMIN、SM_CYMIN  窗口所能达到的最小尺寸

  SM_CXMINIMIZED、SM_CYMINIMIZED  正常的最小化窗口的尺寸

  SM_CXMINTRACK、SM_CYMINTRACK  最小跟踪距离,当使用者拖动窗口移动距离小于这个值,窗口不会移动。

    SM_CXSCREEN、SM_CYSCREEN  以像素为单位计算的屏幕尺寸。

  SM_CXSIZE、SM_CYSIZE  以像素计算的标题栏按钮的尺寸

  SM_CXSIZEFRAME、SM_CYSIZEFRAME  围绕可改变大小的窗口的边框的厚度

  SM_CXSMICON、SM_CYSMICON  以像素计算的小图标的尺寸,小图标一般出现在窗口标题栏上。

  SM_CXVSCROLL、SM_CYVSCROLL  以像素计算的垂直滚动条的宽度和垂直滚动条上箭头的高度

  SM_CYCAPTION  以像素计算的普通窗口标题的高度

  SM_CYMENU  以像素计算的单个菜单条的高度

  SM_CYSMCAPTION  以像素计算的窗口小标题栏的高度

  SM_CYVTHUMB  以像素计算的垂直滚动条中滚动块的高度

  SM_DBCSENABLED  如果为TRUE或不为0的值表明系统安装了双字节版本的USER.EXE,为FALSE或0则不是。

  SM_DEBUG  如果为TRUE或不为0的值表明系统安装了debug版本的USER.EXE,为FALSE或0则不是。

  SM_MENUDROPALIGNMENT  如果为TRUE或不为0的值下拉菜单是右对齐的否则是左对齐的。

  SM_MOUSEPRESENT  如果为TRUE或不为0的值则安装了鼠标,否则没有安装。

  SM_MOUSEWHEELPRESENT  如果为TRUE或不为0的值则安装了滚轮鼠标,否则没有安装。(Windows NT only)

  SM_SWAPBUTTON  如果为TRUE或不为0的值则鼠标左右键交换,否则没有

原创粉丝点击