'Child윈도우 Popup'에 해당되는 글 1건

  1. 2007.10.26 Child윈도우를 Popup시키는 방법




Child윈도우를 Popup시키는 방법


1.요약

Child윈도를 POPUP시키는 방법을 소개하겠습니다. 이것은 Toolbar가 Main Frame에서 Docking되고
Floating되는 원리와 같습니다.


2.본문

단순히 WS_CHILD속성의 윈도를 WS_POPUP속성을 주면 되지 않는다는 건 아시죠. 생성될때
 WS_CHILD속성이 정해지면 변경이 불가능합니다. 그러면 어떻게 POPUP시킬 것인가?
원리는 간단합니다. 새로운 POPUP 윈도를 하나만들고 POPUP시키고자하는 윈도의 부모를
새로 만든 POPUP 윈도로 바꿔버리는 됩니다.


3.예제

void MyWnd::PopupWindow(BOOL bPopup) 

{ 

    if (!bPopup) 

    { // Docking 

        if (m_pFloatSiteWnd) 

        { 

            m_wndChild.SetParent(this); 

            delete m_pFloatWnd; 

            m_pFloatSiteWnd = NULL; 

        } 

    } 

    else 

    { // Floating 

        if (!m_pFloatSiteWnd) 

        { 

            CRect rc; 

            m_wndChild.GetWindowRect(&rc); 

            rc.bottom += ::GetSystemMetrics(SM_CYSMCAPTION); 

            m_pFloatSiteWnd = new CWnd; 

            m_pFloatSiteWnd->CreateEx(WS_EX_TOOLWINDOW, 

                ::AfxRegisterWndClass(0, 0, (HBRUSH)COLOR_BTNFACE + 1), 

                NULL, WS_POPUP | WS_CAPTION | WS_VISIBLE, 

                rc, this, 0); 

            m_wndChild.SetParent(m_pFloatSiteWnd); 

        } 

    } 

} 











Posted by 명혀니
,