< ÇÏÀÌÆÛ ¸µÅ© >

ÇÏÀÌÆÛ ¸µÅ© ÄÁÆ®·ÑÀº Web ÆäÀÌÁöÀÇ ÇÏÀÌÆÛ ¸µÅ©¿Í °°Àº ÄÁÆ®·ÑÀÔ´Ï´Ù.  WTLÀº ÇÏÀÌÆÛ ¸µÅ© ÄÁÆ®·ÑÀ» ÀÛ¼ºÇϱâ À§Çؼ­ CHyperLink ¶ó°í Çϴ Ŭ·¡½º¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù.

ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CHyperLink Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ÀÔ´Ï´Ù.

 

// stdafx.h

#include <atlbase.h>

#include <atlapp.h>

extern CAppModule _Module;

#include <atlwin.h>

 

#include <atlcrack.h>

#include <atlmisc.h>

#include <atlctrls.h>

#include <atlctrlx.h>  // CHyperLinkŬ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ

                      

 

// maindlg.h

class CMainDlg : public CDialogImpl<CMainDlg>

{

public:

    enum { IDD = IDD_MAINDLG };

 

    CHyperLink m_link_google;     // ÇÏÀÌÆÛ ¸µÅ©

 

    // ¸Þ¼¼Áö ¸Ê

    BEGIN_MSG_MAP_EX(CMainDlg)

        MSG_WM_INITDIALOG(OnInitDialog)

        COMMAND_ID_HANDLER_EX(IDOK, OnOK)

        COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)

    END_MSG_MAP()

 

    LRESULT OnInitDialog(HWND hWnd, LPARAM lParam){

        // ½ºÅ©¸°ÀÇ Áß¾Ó¿¡ ¹èÄ¡

        CenterWindow();

 

        // Å« ¾ÆÀÌÄÜ ¼³Á¤

        HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR,

            ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON));

        SetIcon(hIcon, TRUE);

       

        // ÀÛÀº ¾ÆÀÌÄÜ ¼³Á¤

        HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR,

            ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));

        SetIcon(hIconSmall, FALSE);

 

        // ÄÁÆ®·Ñ ¼³Á¤

        m_link_google.SubclassWindow(GetDlgItem(IDC_STATIC_LINK));

        m_link_google.SetLabel(_T("google"));

        m_link_google.SetHyperLink(_T("http://www.google.com/"));

 

        return TRUE;

    }

 

    void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){

        EndDialog(nID);

    }

 

    void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){

        EndDialog(nID);

    }

};

                      

 

// Control.cpp

#include "stdafx.h"

 

#include "resource.h"

 

#include "maindlg.h"

 

CAppModule _Module;

 

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, int nCmdShow)

{

    HRESULT hRes = ::CoInitialize(NULL);

    ATLASSERT(SUCCEEDED(hRes));

 

    ::DefWindowProc(NULL, 0, 0, 0L);

 

    AtlInitCommonControls(ICC_COOL_CLASSES | ICC_WIN95_CLASSES);

 

    hRes = _Module.Init(NULL, hInstance);

    ATLASSERT(SUCCEEDED(hRes));

 

    int nRet = 0;

    // BLOCK: ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà

    {

        CMainDlg dlgMain;

        nRet = dlgMain.DoModal();

    }

 

    _Module.Term();

    ::CoUninitialize();

 

    return nRet;

}

                      


¡¡
¿ì¼±  ¸®¼Ò½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.  ´ÙÀ̾ó·Î±×¿¡ ½ºÅÂÆ½ ÄÁÆ®·ÑÀ» ¹èÄ¡ÇØ ¸®¼Ò½º ID¸¦ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù.

ÄÁÆ®·Ñ¸í

¸®¼Ò½º ID

½ºÅÂÆ½

IDC_STATIC_LINK


¡¡
CMainDlgŬ·¡½º¿¡¼­´Â ¿ì¼± CHyperLink Ŭ·¡½ºÀÇ  ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼­ ¼±¾ðÇÕ´Ï´Ù.  À̰ÍÀ» »ç¿ëÇϱâ À§Çؼ­´Â WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯·Î ¼­ºê Ŭ·¡½ºÈ­ ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

¡¡
´ÙÀ½¿¡ WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯¿¡¼­´Â ÇÏÀÌÆÛ ¸µÅ© ÄÁÆ®·Ñ¿¡ ¶óº§°ú ¸µÅ©¸¦ ¼³Á¤ÇÕ´Ï´Ù.

¡¡
ÀÌ¿Í °°ÀÌ ÇÏÀÌÆÛ ¸µÅ© ÄÁÆ®·ÑÀ» ÀÛ¼ºÇϱâ À§Çؼ­´Â ½ºÅÂÆ½ ÄÁÆ®·ÑÀ» ¼­ºê Ŭ·¡½ºÈ­ ÇÕ´Ï´Ù.  ±×¸®°í Create()¸¦ »ç¿ëÇØµµ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

¡¡WTL
ÀÇ ÇÏÀÌÆÛ ¸µÅ© ÄÁÆ®·ÑÀº µ¶ÀÚÀûÀÎ È®Àå ½ºÅ¸ÀÏÀ» ÁغñÇØ ÀÖ½À´Ï´Ù.

¹ØÁÙÀ» Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº µðÆúÆ®·Î ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.

 

¹ØÁÙÀ» Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù.

 

¸¶¿ì½º Ä¿¼­°¡ ÇÏÀÌÆÛ ¸µÅ© À§¸¦ Áö³¯ ¶§¿¡  ¹ØÁÙÀ» Ç¥½ÃÇÕ´Ï´Ù.

 

Ŭ¸¯ÇßÀ» ¶§(Navigate()°¡ ºÒ·Á °¬À» ¶§ )¿¡ ºÎ¸ð À©µµ¿ì¿¡ WM_COMMAND¸Þ¼¼Áö¸¦ º¸³À´Ï´Ù. ÀÚµ¿ÀûÀ¸·Î ºê¶ó¿ìÀú¸¦ ±âµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

 

Ŭ¸¯ÇßÀ» ¶§(Navigate()°¡ ºÒ·Á °¬À» ¶§ )¿¡ ºÎ¸ð À©µµ¿ì¿¡ WM_NOTIFY ¸Þ¼¼Áö¸¦ º¸³À´Ï´Ù. ÀÚµ¿ÀûÀ¸·Î ºê¶ó¿ìÀú¸¦ ±âµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

 

¶óº§ ³»ÀÇ <A>ű׿¡ µÑ·¯½ÎÀΠij¸¯ÅÍ ¶óÀÎÀ» ¸µÅ©È­ÇÕ´Ï´Ù. ¸µÅ© ij¸¯ÅÍ ¶óÀÎÀº ÀÚµ¿ÀûÀ¸·Î ¿ÞÂÊ ¸ÂÃ㠵˴ϴÙ.

 

¶óº§ ³»ÀÇ <A>ű׿¡ µÑ·¯½ÎÀΠij¸¯ÅÍ ¶óÀÎÀ» ±½Àº ±Û¾¾·Î ¸µÅ©È­ÇÕ´Ï´Ù. ¸µÅ© ij¸¯ÅÍ ¶óÀÎÀº ÀÚµ¿ÀûÀ¸·Î ¿ÞÂÊ ¸ÂÃ㠵˴ϴÙ. ÀÌ ½ºÅ¸ÀÏÀ» »ç¿ëÇϸé HLINK_UNDERLINED ½ºÅ¸ÀÏÀº ¹«½ÃµË´Ï´Ù.

 

Åø ÆÁÀ» Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù.


ÀÌ·¯ÇÑ È®Àå ½ºÅ¸ÀÏÀº SetHyperLinkExtendedStyle()¿¡ ÀÇÇØ ¼³Á¤ÇÕ´Ï´Ù.  µ¡ºÙ¿© ÀÌ ¸â¹ö ÇÔ¼ö´Â ¼­ºê Ŭ·¡½ºÈ­ Çϱâ Àü¿¡ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡ ³ªÅ¸³»´Â °ÍÀº HLINK_USETAGS ½ºÅ¸ÀÏÀ» Ãß°¡ÇØ ¶óº§ ³»¿¡¼­ <A>ű׸¦ »ç¿ëÇÏ´Â ¿¹ÀÔ´Ï´Ù.

 

LRESULT OnInitDialog(HWND hWnd, LPARAM lParam){

    ...

    ...

   

    // ÄÁÆ®·Ñ ¼³Á¤

    m_link_google.SetHyperLinkExtendedStyle(HLINK_USETAGS);  // È®Àå ½ºÅ¸ÀÏ ¼³Á¤

    m_link_google.SubclassWindow(GetDlgItem(IDC_STATIC_LINK));

    m_link_google.SetLabel(_T("<a>google</a>¿¡ Á¡ÇÁ"));

    m_link_google.SetHyperLink(_T("http://www.google.com/"));

 

    return TRUE;

}