zoukankan      html  css  js  c++  java
  • MFC窗口去边框、置顶、全屏、激活

    静态移除长提边框非常easy,直接设置“Border”属性为"none"就可以

    "Maximize Box", “Minimize Box” 设置是否显示 最大化/最小化button。

    “System Menu” 设置 是否显示 关闭button;


    1. 代码中动态移除窗口边框的方法

    DWORD dwStyle = GetStyle(); //等价于GetWindowLong(m_hWnd, GWL_STYLE);
    DWORD dwNewStyle = WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
    dwNewStyle &= ~dwStyle;
    SetWindowLong(m_hWnd, GWL_STYLE, dwNewStyle);
    或者

    LONG nStyle = GetWindowLong(m_hWnd, GWL_STYLE);
    LONG newStyle = nStyle & (~(WS_CAPTION | WS_BORDER | WS_THICKFRAME));  //移除属性 WS_EX_CLIENTEDGE
    SetWindowLong(m_hWnd, GWL_STYLE, newStyle);
    ::SetWindowPos(m_hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);  //SWP_FRAMECHANGED确保马上生效

    2. 设置窗口为最底层窗口的方法

    SetWindowPos(&wndBottom, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
    或者
    ::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);

    3. 设置窗口为最顶层窗口的办法

    SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
    或者
    ::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
    

    备注(1): 

    wndBottom和 wndTopMost为基类CWnd的静态成员,定义例如以下:

    static AFX_DATA const CWnd wndTop;       // SetWindowPos's pWndInsertAfter
    static AFX_DATA const CWnd wndBottom;    // SetWindowPos's pWndInsertAfter
    static AFX_DATA const CWnd wndTopMost;   // SetWindowPos pWndInsertAfter
    static AFX_DATA const CWnd wndNoTopMost; // SetWindowPos pWndInsertAfter

    备注(2):

    SWP_DRAWFRAME       环绕窗体画一个框 
    SWP_FRAMECHANGED    发送一条WM_NCCALCSIZE消息进入窗体,即使窗体的大小没有发生改变.假设不指定这个參数,消息WM_NCCALCSIZE仅仅有在窗体大小发生改变时才发送 
    SWP_HIDEWINDOW      隐藏窗体 
    SWP_SHOWWINDOW      显示窗体 
    SWP_NOREDRAW        窗体不自己主动重画 
    <span style="color:#ff0000;">SWP_NOACTIVATE      不激活窗体(避免抢焦点)</span>
    SWP_NOCOPYBITS      屏蔽客户区域 
    <span style="color:#ff0000;">SWP_NOMOVE          保持当前位置(X和Y參数将被忽略)
    SWP_NOSIZE          保持当前大小(cx和cy參数会被忽略)  </span>
    <span style="color:#ff0000;">SWP_NOZORDER        保持窗体在列表的当前位置(hWndInsertAfter參数将被忽略) 
    SWP_NOOWNERZORDER   不改变全部窗体的位置和排列顺序 </span>
    SWP_NOREPOSITION    与SWP_NOOWNERZORDER标记同样 
    SWP_NOSENDCHANGING  防止这个窗体接受WM_WINDOWPOSCHANGING消息 

    4. 设置窗口全屏显示

    int cxScreen,cyScreen; 
    cxScreen=GetSystemMetrics(SM_CXSCREEN);
    cyScreen=GetSystemMetrics(SM_CYSCREEN);
    SetWindowPos(&wndTopMost,0,0,cxScreen,cyScreen,SWP_SHOWWINDOW);







  • 相关阅读:
    Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
    python 对数函数
    Python使用os.listdir()函数来得目录内容的介绍
    Linux下基于HTTP协议带用户认证的GIT开发环境设置
    在python中如何设置当前工作目录
    Python 获得命令行参数的方法
    Python time mktime()方法
    linux中怎样从底部向上查看log文件
    python基础之使用os.system来执行系统命令
    python datetime处理时间
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6903107.html
Copyright © 2011-2022 走看看