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);
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM