< ºñÆ®¸Ê ¹öư >

WTLÀº Ç¥ÁØ ÄÁÆ®·ÑÀ̳ª °ø¿ë ÄÁÆ®·Ñ ¿Ü¿¡  µ¶ÀÚÀûÀÎ ÄÁÆ®·Ñ ¿ë Ŭ·¡½º¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù.

¡¡
ºñÆ®¸Ê ¹öưÀº  ºñÆ®¸Ê È­»óÀ¸·ÎºÎÅÍ ¹öưÀÇ ¿Ü°üÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Â ¹öư ÄÁÆ®·ÑÀÔ´Ï´Ù.  WTLÀº ºñÆ®¸Ê ¹öưÀ» ÀÛ¼ºÇϱâ À§Çؼ­ CBitmapButton ¶ó°í Çϴ Ŭ·¡½º¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù.  MFC¿¡µµ µ¿¸íÀÇ Å¬·¡½º°¡ ÀÖ½À´Ï´Ù¸¸ ±×°Í°ú´Â »ç¿ë ¹æ¹ýÀÌ ´Ù¸¨´Ï´Ù.

CBitmapButton Ŭ·¡½º´Â CButton Ŭ·¡½º·ÎºÎÅÍ ÆÄ»ýÇϰí ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CBitmapButton Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ ÀÔ´Ï´Ù.  ¾Æ·¡ÀÇ ±×¸²°ú °°ÀÌ Èò ¹öưÀ» ÀÛ¼ºÇÕ´Ï´Ù.

 

// 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>  // CBitmapButtonŬ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ

                      

 

// maindlg.h

class CMainDlg : public CDialogImpl<CMainDlg>

{

public:

    enum { IDD = IDD_MAINDLG };

 

    CBitmapButton m_button_bmp;     // ºñÆ®¸Ê ¹öư

 

    // ¸Þ¼¼Áö ¸Ê

    BEGIN_MSG_MAP_EX(CMainDlg)

        MSG_WM_INITDIALOG(OnInitDialog)

        COMMAND_ID_HANDLER_EX(IDC_BUTTON_BMP, OnButtonBmp)

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

 

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

        CImageList il;

        il.CreateFromImage(IDB_BITMAP_BUTTON, 64, 1,

            CLR_NONE, IMAGE_BITMAP, LR_CREATEDIBSECTION);

 

        m_button_bmp.SubclassWindow(GetDlgItem(IDC_BUTTON_BMP));

        m_button_bmp.SetImageList(il);

        m_button_bmp.SetImages(0, 1, 2, 3);

        m_button_bmp.SetToolTipText(_T("ºñÆ® ¸Ê ¹öư"));

        m_button_bmp.CenterWindow();

 

        return TRUE;

    }

 

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

        MessageBox(_T("À̰ÍÀº ºñÆ®¸Ê ¹öưÀÔ´Ï´Ù. "));

    }

 

    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_BUTTON_BMP


±×¸®°í  ÇÁ·ÎÁ§Æ®¿¡ ´ÙÀ½°ú °°Àº ºñÆ®¸Ê ¸®¼Ò½º¸¦ IDB_BITMAP_BUTTON À̶ó°í ÇÏ´Â IDÀ¸·Î Ãß°¡ÇÕ´Ï´Ù.



ÀÌ ºñÆ®¸ÊÀº ¹öưÀÇ 4°³ »óÅÂ(Åë»ó »óÅ , ´­¸° »óÅ , Æ÷Ä¿½º¸¦ °®°í ÀÖ´Â »óÅ , »ç¿ë ºÒ°¡ »óÅÂ) ¸¦ ³ªÅ¸³»´Â ÇϳªÀÇ ±×¸² ÀÔ´Ï´Ù.

¡¡
´ÙÀ½¿¡ stdafx.h ¿¡¼­´Â CBitmapButton Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ­ atlctrls.h Çì´õ¿Í atlctrlx.h Çì´õ¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù. µ¡ºÙ¿© atlctrls.h Çì´õ¸¦ ¸ÕÀú Æ÷ÇÔ ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

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

¡¡
´ÙÀ½¿¡ WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯¿¡¼­´Â ºñÆ®¸Ê ¸®¼Ò½º(ID:IDB_BITMAP_BUTTON)À¸·ÎºÎÅÍ À̹ÌÁö ¸®½ºÆ®¸¦ ÀÛ¼ºÇØ ±×°ÍÀ» SetImageList()¿¡ ÀÇÇØ ºñÆ®¸Ê ¹öưÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.  À̹ÌÁö ¸®½ºÆ®¸¦ ¼³Á¤ÇÑ ÈÄ´Â SetImages()¿¡ ÀÇÇØ À̹ÌÁö ¸®½ºÆ®ÀÇ À妽º¿Í ¹öư »óŸ¦ °ü·Ã Áþ½À´Ï´Ù.  SetImages()´Â Á¦1Àμö·ÎºÎÅÍ ¼ø¼­·Î Åë»ó »óÅÂ,  ´©¸¥ »óÅÂ, Æ÷Ä¿½º¸¦ °®°í ÀÖ´Â »óÅÂ, »ç¿ë ºÒ°¡ »óÅÂÀÇ À̹ÌÁö ¸®½ºÆ®ÀÇ À妽º¸¦ ¹Þ½À´Ï´Ù. °Ô´Ù°¡ ºñÆ®¸Ê ¹öư¿¡´Â SetToolTipText()¿¡ ÀÇÇØ Åø ÆÁÀ» ¼³Á¤ÇØ ÀÖ½À´Ï´Ù.

¡¡
¸¶Áö¸·À¸·Î ¸®¼Ò½º ID°¡ IDC_BUTTON_BMPÀÇ  Ä¿¸àµå ¸Þ¼¼Áö Çڵ鷯·Î¼­ OnButtonBmp()¸¦ Ãß°¡ÇÕ´Ï´Ù. ÀÌ Çڵ鷯¿¡¼­´Â ´ÜÁö ¸Þ½ÃÁö ¹Ú½º¸¦ Ç¥½ÃÇϰí ÀÖÀ» »ÓÀÔ´Ï´Ù.

¡¡
ÀÌ¿Í °°ÀÌ MFCÀÇ ºñÆ®¸Ê ¹öư¿¡¼­´Â ¹öư »óÅ º°ÀÇ 4°³ ºñÆ®¸Ê ¸®¼Ò½º¸¦ ÁغñÇØ¾ß Çϴµ¥ ´ëÇØ WTLÀÇ ºñÆ®¸Ê ¹öưÀº À̹ÌÁö ¸®½ºÆ®·ÎºÎÅÍ ¹öưÀÇ ¿Ü°üÀ» ÀÛ¼ºÇÕ´Ï´Ù.

¡¡WTL
ÀÇ ºñÆ®¸Ê ¹öưÀº µ¶ÀÚÀûÀÎ È®Àå ½ºÅ¸ÀÏÀ» ÁغñÇØ ÀÖ½À´Ï´Ù.

¸¶¿ì½º Ä¿¼­°¡ ºñÆ® ¸Ê ¹öư À§¸¦ Áö³ª¸é Æ÷Ä¿½º°¡ ¸ÂÀº »óÅÂÀÇ È­»óÀ» Ç¥½ÃÇÕ´Ï´Ù.

 

È­»óÀÇ ÁÖÀ§¿¡ 3DÀÇ °æ°è¼±À» ¹¦È­ ÇÕ´Ï´Ù.

 

BMPBTN_AUTO3D_SINGLE º¸´Ù Á¶±Ý ±½Àº °æ°è¼±À» ¹¦È­ ÇÕ´Ï´Ù.

 

È­»óÀÇ Å©±â¿¡ ¸Âµµ·Ï  ºñÆ®¸Ê ¹öưÀÇ »çÀÌÁ ÀÚµ¿ÀûÀ¸·Î º¯°æÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº µðÆúÆ®·Î ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.

 

ºñÆ®¸Ê ¹öưÀÇ ¿ÀºêÁ§Æ®°¡ ÆÄ±âµÇ¾îµµ  ºñÆ®¸Ê ¹öưÀ¸·Î ¼³Á¤µÈ À̹ÌÁö ¸®½ºÆ®ÀÇ ¿ÀºêÁ§Æ®´Â ÆÄ±âÇÏÁö ¾Ê½À´Ï´Ù.

 

ºñÆ®¸Ê ¹öưÀ» °è¼Ó ´©¸£¸é ¹Ýº¹WM_COMMAND ¸Þ¼¼Áö¸¦ ¹ß»ý½Ãŵ´Ï´Ù.


ÀÌ·¯ÇÑ È®Àå ½ºÅ¸ÀÏÀº SetBitmapButtonExtendedStyle()¿¡ ÀÇÇØ ¼³Á¤ÇÕ´Ï´Ù.