CFrameWnd°¡ ¾Æ´Ñ À©µµ¿ì¿¡¼­ Åø¹ÙÀÇ ÅøÆÁ Ãâ·ÂÇϱâ


1.¿ä¾à

CFrameWnd¿¡¼­ ToolBar¸¦ »ý¼ºÇÏ¸é ±× ToolBarÀÇ ToolTipÀÌ Ãâ·ÂµÇ´Âµ¥ CFrameWnd°¡ ¾Æ´Ñ ´Ù¸¥ À©µµ¿ì°¡ ºÎ¸ðÀÎ ToolBar´Â ToolTipÀÌ Ãâ·ÂµÇÁö ¾Ê½À´Ï´Ù.


2.º»¹®

À̰ÍÀº MFC¿¡¼­ CFrameWnd¿¡¼­¸¸ ToolTipÀÌ Ãâ·ÂµÇ´Â Äڵ尡 µé¾îÀֱ⠶§¹®Àε¥...´Ù¸¥ À©µµ¿ì¿¡¼­µµ ToolTipÀÌ ³ª¿Àµµ·Ï ÇÒ·Á¸é CFrameWndÀÇTooltipÀ» Ãâ·ÂÇÏ´Â ºÎºÐÀ» ±×´ë·Î ³Ö¾î ÁÖ¸éµË´Ï´Ù.


3.¿¹Á¦


// Header¿¡ Ãß°¡ 

afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult); 





// CPP¿¡ Ãß°¡ 

int AFXAPI AfxLoadString(UINT nID, LPTSTR lpszBuf, UINT nMaxBuf = 256); 

#define _countof(array) (sizeof(array)/sizeof(array[0])) 

#define _AfxGetDlgCtrlID(hWnd)          ((UINT)(WORD)::GetDlgCtrlID(hWnd)) 



BEGIN_MESSAGE_MAP(CMyWnd, CWnd) 

    //{{AFX_MSG_MAP(CMyWnd) 

        ... 

    //}}AFX_MSG_MAP 

    ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText) 

    ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText) 

END_MESSAGE_MAP() 



BOOL CMyWnd::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult) 

{ 

    ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW); 



    // need to handle both ANSI and UNICODE versions of the message 

    TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR; 

    TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR; 

    TCHAR szFullText[256]; 

    CString strTipText; 

    UINT nID = pNMHDR->idFrom; 

    if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) || 

        pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND)) 

    { 

        // idFrom is actually the HWND of the tool 

        nID = _AfxGetDlgCtrlID((HWND)nID); 

    } 



    if (nID != 0) // will be zero on a separator 

    { 

        // don't handle the message if no string resource found 

        if (AfxLoadString(nID, szFullText) == 0) 

            return FALSE; 



        // this is the command id, not the button index 

        AfxExtractSubString(strTipText, szFullText, 1, '\n'); 

    } 

#ifndef _UNICODE 

    if (pNMHDR->code == TTN_NEEDTEXTA) 

        lstrcpyn(pTTTA->szText, strTipText, _countof(pTTTA->szText)); 

    else 

        _mbstowcsz(pTTTW->szText, strTipText, _countof(pTTTW->szText)); 

#else 

    if (pNMHDR->code == TTN_NEEDTEXTA) 

        _wcstombsz(pTTTA->szText, strTipText, _countof(pTTTA->szText)); 

    else 

        lstrcpyn(pTTTW->szText, strTipText, _countof(pTTTW->szText)); 

#endif 

    *pResult = 0; 



    // bring the tooltip window above other popup windows 

    ::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0, 

        SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); 



    return TRUE;    // message was handled 

} 


4.Âü°í

MFC ¼Ò½º : WINFRM.CPP



- 2001.08.13 Smile Seo -