zoukankan      html  css  js  c++  java
  • vc++_MFC设置窗口置顶_最顶层

    vs2015,放在OnInitDialog()里面
    this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);

    其它方法:
    设置置顶显示

    ::SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

    取消不置顶显示

    ::SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

    详细说明:
    函数名: SetWindowPos
    头文件: winuser.h
    函数原型:
    BOOL SetWindowPos ( HWND hWnd, //窗口句柄 HWND hWndInsertAfter, //排列顺序的句柄 int X, //水平坐标 int Y, //垂直坐标 int cx, //宽 int cy, //高 UINT uFlags //窗口定位标识 );
    说明:
    这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。

    返回值:
    BOOL,如果返回值非零表示成功,返回零表示失败。错误信息请参看GetLastError函数。
    参数表:
    参数 类型及说明

    hwnd HWND,欲定位的窗口句柄

    hWndInsertAfter HWND,置于hwnd前面的窗口句柄。这个参数必须是窗口的句柄或是下面的值之一: HWND_BOTTOM 将窗口置于其它所有窗口的底部

    HWND_NOTOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的后面。如果这个窗口非顶部窗口,这个标记对该窗口并不产生影响

    HWND_TOP 将窗口置于它所有窗口的顶部

    HWND_TOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的前面。即使这个窗口不是活动窗口,也维持最顶部状态
    wFlags:
    UINT,指定窗口状态和位置的标记。这个参数使用下面值的组合: SWP_DRAWFRAME 围绕窗口画一个框 SWP_FRAMECHANGED 发送一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有发生改变。如果不指定这个参数,消息WM_NCCALCSIZE只有在窗口大小发生改变时才发送

    SWP_HIDEWINDOW 隐藏窗口

    SWP_NOACTIVATE 不激活窗口

    SWP_NOCOPYBITS 屏蔽客户区域

    SWP_NOMOVE 保持当前位置(X和Y参数将被忽略)

    SWP_NOOWNERZORDER 不改变所有窗口的位置和排列顺序

    SWP_NOREDRAW 窗口不自动重画

    SWP_NOREPOSITION 与SWP_NOOWNERZORDER标记相同

    SWP_NOSENDCHANGING 防止这个窗口接受WM_WINDOWPOSCHANGING消息

    SWP_NOSIZE 保持当前大小(cx和cy会被忽略)

    SWP_NOZORDER 保持窗口在列表的当前位置(hWndInsertAfter将被忽略)

    SWP_SHOWWINDOW 显示窗口
    ————————————————
    版权声明:本文为CSDN博主「txwtech」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/txwtech/article/details/115366657

    置顶方法2:

    SetTimer(100,2000,NULL);//放在按钮点击事件里面

    xp或者2000试试这种方法,不要最小化,点击其它窗口界面,会自动跳转到程序界面:

    置顶代码放在on timer里面:

     TODO: 在此添加消息处理程序代码和/或调用默认值
        if(nIDEvent==100)
        {
            if (this != GetForegroundWindow())
            {
                
                
                HWND hCurwnd = NULL;
                hCurwnd = ::GetForegroundWindow();
                DWORD threadID = ::GetCurrentThreadId();
                DWORD threadprocessid = ::GetWindowThreadProcessId(hCurwnd, &threadID);
                ::AttachThreadInput(threadID, threadprocessid, TRUE);
                
                this->SetForegroundWindow();
                ::AttachThreadInput(threadID, threadprocessid, FALSE);
            }
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    南京师范大学2021年高等代数考研试卷
    有限阶全图边图两种颜色后同色三角形数量最少为?(2019年清华大学丘成桐数学英才班)
    关于三个变元的正整数解(2019年清华大学丘成桐数学英才班)
    [Oracle工程师手记]归档日志产生量太大时的简易分析手段
    [Oracle 工程师手记] 如何查看 FRA 的使用率
    [Oracle数据库工程师手记] Data Guard broker 与 ORA-32701
    [Oracle工程师手记]CRSD 进程与 password 文件
    [oracle 工程师手记]RMAN duplicate 发生ORA-19504、ORA-17502、ORA-15001、ORA-27140 错误的解决过程
    [Oracle工程师手记] 备份恢复双城记(三)
    [Oracle工程师手记] 备份恢复双城记(二)
  • 原文地址:https://www.cnblogs.com/txwtech/p/15257660.html
Copyright © 2011-2022 走看看