MFC--窗口样式

获取窗口信息 

复制代码
    CWnd* pWnd = GetDlgItem(IDC_STATIC1);
    HWND hWnd = pWnd->GetSafeHwnd();//CWnd*转化为HWND
    LONG n = ::GetWindowLong(hWnd, GWL_STYLE); //获取指定窗口的信息
    //参数1::窗口句柄HWND
    //参数2: 指定要检索的基于0的的偏移量
    //       GWL_STYLE=-16    获得窗口风格(样式)
    //       GWL_EXSTYLE=-20  获取扩展窗口样式
    //    GWL_HINSTANCE=-6      获取应用实例句柄
    //    GWL_HWNDPARENT=-8    获取所有者窗口句柄
    //    GWL_ID=-12      获取窗口ID
    //    GWL_USERDATA=-21   获取用户设置的32位数据,其值默认为0
    //    GWL_WNDPROC=-4    获取窗口过程地址或句柄。必须使用CallWindowProc函数调用获取的窗口过程。

    //返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0

    CString str;
    str.Format(_T("%d"), n);
    MessageBox(str);
复制代码

 

设置窗体样式 

SetWindowLong

复制代码
    HWND hWnd = GetSafeHwnd();//获取代码所在顶级窗口的句柄
    ::SetWindowLong(hWnd, GWL_STYLE, WS_CAPTION | WS_SIZEBOX | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU);//设置窗体样式
    //具有标题栏   可以调整大小  有最大化和最小化按钮  [需要什么样式就往里添加什么样式]
    //参数1:窗口句柄HWND
    //参数2:GWL_STYLE   设置窗口样式
    //参数3:窗口样式
    //      说明:SS(Static Style)开头的表示只能用于CStatic控制。以"WS"(Window Style)开头的常数表示可适用于所有窗口,
    //               它们定义在CWnd对象中。CWnd中还有很多以“WS"样式常数。你可以在MFC文档中的CWnd:Create函数中找到它们。
    //       SS_BITMAP  此风格用于位图,该风格将忽略静态控件的高度和宽度,静态控件将根据位图的大小自动调节自身的尺寸
    //       SS_BLACKFRAME     建立一个黑色的边框
    //       SS_BLACKRECT      建立一个黑色的矩形
    //       SS_CENTER         使文字在静态控件中水平居中
    //       SS_RIGHT    使文字在静态控件中右对齐
    //       SS_LEFT    使文字在静态控件中左对齐
    //       SS_LEFTNOWORDWRAP   在缺省情况下,静态控件把’/n’和’/t’都作为换行标记。只有在设置本风格后,静
    //
    //       SS_CENTERIMAGE   当静态控件用于显示文本时,该风格将使文本在静态控件中垂直居中。当静态控件用于
    //                  显示位图或图标时,该风格将使位图或图标在静态控件中垂直居中
    //                  当位图或图标小于静态控件时,静态控件将使用位图或图标左上角的点的颜色填充空白处
    //       SS_ENHMETAFILE    指定在静态控件中显示一个增强型图元文件。
    //                  该风格将不会忽略静态控件的高度和宽度,而图元文件将调节自身的大小来适应静态控件的尺寸
    //       SS_ETCHEDFRAME    建立一个浮雕边框
    //       SS_ETCHEDHORZ    建立一个边框,并将顶端边框设置为浮雕风格
    //       SS_ETCHEDVERT    建立一个边框,并将左侧边框设置为浮雕风格
    //       SS_GRAYFRAME     建立一个灰色的边框。
    //       SS_GRAYRECT      建立一个灰色的矩形
    //       SS_ICON    指定在静态控件中显示一个被定义在资源文件中的图标。
    //                 该风格将忽略静态控件的高度和宽度,静态控件将根据位图的大小自动调节自身的尺寸
    //       SS_LEFTNOWORDWRAP   在缺省情况下,静态控件把’/n’和’/t’都作为换行标记。只有在设置本风格后,静
    //                         态控件才把’/t’看作是制表键(缺省时制表键的宽度为8个字符的宽度)
    //       SS_NOPREFIX   该标志表示终止对前缀字符的处理。通常,本成员函数将前缀助记符’& ’解释为一个指
    //                     令,即在’& ’后面的字符下面划一下划线。并且将’&& ’解释成一个单个的’& ’指令
    //                         。通过指令指定该标志,这种处理就不再进行了
    //       SS_NOTIFY    在缺省情况下,静态控件是不响应鼠标事件的。只有在设置该风格后,当用户单击静态
    //                    控件时,静态控件才向父窗口发送STN_CLICKED通知
    //       SS_OWNERDRAW  在指定该风格后,当静态控件在视觉外观发生变化时,该静态控件的父窗口将响应WM_DRAWITEM消息
    //       SS_SIMPLE     只显示一行文本,文本不能被剪切或替换(父窗口不能处理CTLCOLOR消息)
    //       SS_SUNKEN     设置一个下沉的静态控件,当静态控件为一个方框时,方框的四边下沉;当静态控件为一个矩形时,整个矩形下沉
    //       SS_USERITEM   建立一个用户自定义项目。
    //       SS_WHITEFRAME   建立一个白色的边框。
    //        SS_WHITERECT    建立一个白色的矩形
    // 
    //       WS_BORDER   有一个边框
    //       WS_CAPTION  具有标题栏的窗口(隐含WS_BORDER风格),不能使用的WS_DLGFRAME风格
    //       WS_CHILD    创建一个子窗口,不能使用WS_POPUP风格
    //       WS_CHILDWINDOW  与WS_CHILD风格相同
    //       WS_CLIPCHILDREN不包括绘制在父窗口的子窗口,当你占用的面积
    //       WS_DISABLED    窗口最初是被禁用的
    //       WS_DLGFRAME    双边框,但没有标题
    //       WS_HSCROLLm    具有水平滚动条的窗口
    //       WS_VSCROLL     具有垂直滚动条的窗口
    //       WS_MINIMIZE    窗口最初是最小化的
    //       WS_ICONIC      与WS_MINIMIZE
    //       WS_MAXIMIZE     最大化
    //       WS_MAXIMIZEBOX   有一个“最大化”按钮,必须设置WS_SYSMENU
    //       WS_MINIMIZEBOX   有一个“最小化”按钮,必须设置WS_SYSMENU
    //       WS_POPUP      弹出式窗口,不能使用WS_CHILD风格
    //       WS_SIZEBOX   有一个可调整边框
    //       WS_SYSMENU    在其标题栏中,有一个控制菜单框
    //       WS_TABSTOP   指定一个任意数量的控制,通过它,用户可以使用TAB键移动
    //       WS_TILED    一个重叠的窗口
    //       WS_VISIBLE    窗口最初是可见的
复制代码

 

 

还有个别样式看:https://blog.csdn.net/skdkjzz/article/details/17072265   

 

ModifyStyle

复制代码
    HWND hWnd = GetSafeHwnd();//获取代码所在顶级窗口的句柄
    ModifyStyle(hWnd, WS_CAPTION , 0, 0);//设置窗体样式--去除标题栏
    //参数1:窗口句柄hWnd
    //参数2:要去除的窗风格
    //参数3:要增加的窗风格
    //参数4:nFlags 该参数将被传给SetWindowPos,否则为0, 如果SetWindowPos不被调用的话,一般该参数默认值
    //返回值:如果该函数成功调用返回一个非0值,否则返回0;
    //        如果nFlags不为0, ModifyStyle将调用Windows API 函数SetWindowPos并且结合nFlags和以下四个预先布置好的标志重画该窗口。
    //        SWP_NOSIZE 保持当前大小。
    //         SWP_NOMOVE 保持当前位置.。
    //      SWP_NOZORDER 保持当前的Z次序。
    //        SWP_NOACTIVATE 不激活该窗口
    //示例:
    
    
    ModifyStyle(hWnd, 0, WS_CAPTION, 0);  //增加标题栏
    ModifyStyle(hWnd, 0, WS_MAXIMIZEBOX, 0); //增加最大按钮
    ModifyStyle(hWnd, WS_SIZEBOX,0, 0); //不能调整大小
复制代码

 

 

 

 

 

 

posted @   天子骄龙  阅读(205)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-12-04 qt5-摄像头
2021-12-04 克拉默法则
2020-12-04 photoshop--移动变形工具
2019-12-04 PyHook3----键盘鼠标操作
点击右上角即可分享
微信分享提示

目录导航