프로그래밍

👨‍💻 [MFC] MFC에서 윈도우 창이 최상단에 표시되고 있는지 확인하려면 어떻게 해야 하나요?

밝음의기둥 2024. 12. 20. 23:35
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

MFC에서 윈도우 창이 최상단에 표시되고 있는지 확인하려면 어떻게 해야 하는지 간략히 알아보았습니다.


질문 >

MFC에서 윈도우 창이 최상단에 표시되고 있는지 확인하려면 어떻게 해야 하나요?

답변 >

MFC에서 윈도우 창이 최상단에 표시되고 있는지를 확인하려면 CWnd 클래스의 GetWindow 및 GetWindowLong 메서드를 활용할 수 있습니다. 윈도우가 최상단에 있는지는 윈도우 스타일에 WS_EX_TOPMOST 확장 스타일이 설정되어 있는지를 확인함으로써 알 수 있습니다.

다음은 MFC에서 이를 확인하는 방법의 예제 코드입니다:

코드 예제

#include <afxwin.h>bool IsWindowTopMost(CWnd* pWnd)
{
    if (pWnd == nullptr || !::IsWindow(pWnd->GetSafeHwnd()))
        return false;

    // HWND 핸들 가져오기
    HWND hwnd = pWnd->GetSafeHwnd();

    // 윈도우 확장 스타일 가져오기
    LONG exStyle = ::GetWindowLong(hwnd, GWL_EXSTYLE);

    // WS_EX_TOPMOST 스타일 확인
    return (exStyle & WS_EX_TOPMOST) != 0;
}

// 사용 예
void CheckIfWindowIsTopMost()
{
    CWnd* pMyWindow = AfxGetMainWnd(); // 메인 창 핸들 가져오기
    if (pMyWindow != nullptr)
    {
        if (IsWindowTopMost(pMyWindow))
        {
            AfxMessageBox(_T("이 창은 최상단에 있습니다."));
        }
        else
        {
            AfxMessageBox(_T("이 창은 최상단에 있지 않습니다."));
        }
    }
}

설명

  1. ::GetWindowLong
    • 지정된 윈도우의 스타일 정보를 가져옵니다. 여기서 GWL_EXSTYLE을 사용하여 확장 스타일 정보를 확인합니다.
  2. WS_EX_TOPMOST
    • 창이 최상단에 있을 경우 이 스타일 플래그가 활성화됩니다.
  3. MFC 사용
    • CWnd 객체의 GetSafeHwnd를 사용하여 유효한 HWND 핸들을 가져옵니다.

참고

만약 프로그램 내에서 특정 창을 최상단으로 설정하거나 해제하려면 ::SetWindowPos 함수를 사용할 수 있습니다. 예를 들어:

pWnd->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

위 코드로 창을 최상단에 설정할 수 있으며, &wndNoTopMost를 사용하면 최상단 설정을 해제할 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌 1인 게

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형