°¡. Åø¹Ù ¸¸µé±â

Åø¹Ù´Â ¸Þ´º ¹Ù·Î ¾Æ·¡ÂÊ¿¡ ÀÖÀ¸¸ç ¸Þ´º Ç׸ñ Áß ÀÚÁÖ »ç¿ëµÇ´Â Ç׸ñÀ» Á» ´õ »¡¸® ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. ¸Þ´º´Â ÆË¾÷À» ÆîÄ£ ÈÄ ¿øÇÏ´Â Ç׸ñÀ» ¼±ÅÃÇØ¾ß ÇÏÁö¸¸ Åø¹Ù´Â Ç×»ó º¸À̱⠶§¹®¿¡ ¸¶¿ì½º¸¦ Çѹø¸¸ Ŭ¸¯ÇÏ¿© ¸í·ÉÀ» ³»¸± ¼ö ÀÖ´Ù. ¹Ýµå½Ã ¸Þ´º¿Í ÀÏ´ëÀÏ·Î ´ëÀÀµÇ¾î¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï¸ç ¸Þ´º¿¡ ¾ø´Â ¸í·ÉÀ» Åø¹Ù¿¡ ³ÖÀ» ¼öµµ ÀÖ´Ù.

¿ö³« Æí¸®ÇÏ°í º¸ÆíÈ­µÇ¾î Àֱ⠶§¹®¿¡ ¿äÁò ³ª¿À´Â ÇÁ·Î±×·¥Ä¡°í Åø¹Ù°¡ ¾ø´Â ÇÁ·Î±×·¥Àº °ÅÀÇ ¾ø´Ù. Win32 ÀÌÀü¿¡´Â Â÷Àϵå À©µµ¿ì¸¦ ¸¸µé°í ±× ¾È¿¡ ¹öư ÄÁÆ®·ÑÀ» ¹èÄ¡ÇÏ¿© Åø¹Ù¸¦ ¸¸µé¾úÁö¸¸ Win32¿¡¼­´Â Åø¹Ù°¡ ÄÁÆ®·Ñ·Î Á¦°øµÇ¹Ç·Î ¾ÆÁÖ ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ±×·¯³ª ¸¸µé±â¸¸ ½±Áö »ç¿ëÇϱâ´Â ´Ù¼Ò ±î´Ù·Î¿î ÆíÀÌ¸ç Æ¯È÷ API ÇÔ¼ö¸¦ Á÷Á¢ È£ÃâÇØ¼­ »ç¿ëÇϱ⿡´Â ¼ÖÁ÷È÷ ½Å°æ½á ÁÖ¾î¾ß ÇÒ ºÎºÐÀÌ ³Ê¹« ¸¹´Ù.

¿Ö³ÄÇϸé Á¦°øÇÏ´Â ±â´ÉÀÌ »ó´çÈ÷ ¸¹À¸¸ç °í±Þ ±â´ÉµéÀ̱⠶§¹®¿¡ ÇÁ·Î±×·¡¹ÖÇϱ⵵ ¾î·Æ±â ¶§¹®ÀÌ´Ù. ÇÏÁö¸¸ ¸Þ´º ´ëü¿ë Á¤µµÀÇ °£´ÜÇÑ ¿ëµµ·Î¸¸ »ç¿ëÇÑ´Ù¸é ±×¸® ¾î·ÆÁöµµ ¾Ê´Ù. ToolBar1 ¿¹Á¦´Â Åø¹Ù ÄÁÆ®·ÑÀ» ¸¸µå´Â µÎ°¡Áö ¹æ¹ýÀ» º¸¿©ÁØ´Ù. ¸®¼Ò½º¿¡´Â ³×°³ÀÇ ¹öư À̹ÌÁö¸¦ °¡Áö´Â ºñÆ®¸ÊÀÌ Á¤ÀǵǾî ÀÖ´Ù.

Åø ¹öư Çϳª´ç Çϳª¾¿ÀÇ ºñÆ®¸ÊÀ» ¸¸µå´Â °ÍÀÌ ¾Æ´Ï¶ó Åø¹Ù Çϳª¿¡ ºñÆ®¸Ê Çϳª¸¦ ¸¸µç´Ù. ¼¼·Î ³ôÀÌ´Â ¹öư ÇϳªÀÇ ³ôÀÌ·Î ÇÏ°í °¡·ÎÆøÀº ¹öư Æø*¹öư °³¼ö·Î ÇÑ ÈÄ ÀÌ ºñÆ®¸Ê¿¡ ¿¬¼ÓÀûÀ¸·Î ¹öưÀÇ ¸ð¾çÀ» ±×¸®¸é µÈ´Ù. ToolBar1 ¿¹Á¦ÀÇ Åø ¹öưÀº 16*16Å©±â¸¦ °¡Áö¸ç 4°³ÀÇ Åø ¹öưÀÌ ÀÖÀ¸¹Ç·Î ºñÆ®¸ÊÀº 48*16Å©±âÀÌ¸é µÈ´Ù. Àüü ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.

 

#include <commctrl.h>

#include "resource.h"

#define ID_TOOLBAR 100

HWND hToolBar;

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

   TBBUTTON ToolBtn[5]={

      {0,10,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0},

      {1,11,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0},

      {5,0,0,TBSTYLE_SEP,0,0,0,0},

      {2,12,TBSTATE_ENABLED | TBSTATE_CHECKED,TBSTYLE_CHECKGROUP,0,0,0,0},

      {3,13,TBSTATE_ENABLED,TBSTYLE_CHECKGROUP,0,0,0,0}

   };

 

   switch(iMessage) {

   case WM_CREATE:

      InitCommonControls();

//* ¹æ¹ý 1

      hToolBar=CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE | WS_BORDER,

          ID_TOOLBAR, 4, g_hInst, IDB_BITMAP1, ToolBtn, 5,

          16,16,16,16,sizeof(TBBUTTON));

//*/

 

/* ¹æ¹ý 2

      hToolBar=CreateWindow(TOOLBARCLASSNAME,NULL,WS_CHILD | WS_VISIBLE | WS_BORDER,

          0,0,0,0,hWnd,(HMENU)ID_TOOLBAR,g_hInst,NULL);

      SendMessage(hToolBar,TB_BUTTONSTRUCTSIZE,(WPARAM)sizeof(TBBUTTON),0);

      TBADDBITMAP ab;

      ab.hInst=g_hInst;

      ab.nID=IDB_BITMAP1;

      SendMessage(hToolBar,TB_ADDBITMAP,4,(LPARAM)&ab);

      SendMessage(hToolBar,TB_ADDBUTTONS,(WPARAM)5,(LPARAM)ToolBtn);

//*/

      return 0;

   case WM_COMMAND:

      switch (LOWORD(wParam)) {

      case 10:

          MessageBox(hWnd,"ù¹øÂ° ¹öưÀ» ¼±ÅÃÇß½À´Ï´Ù","¾Ë¸²",MB_OK);

          break;

      case 11:

          MessageBox(hWnd,"µÎ¹øÂ° ¹öưÀ» ¼±ÅÃÇß½À´Ï´Ù","¾Ë¸²",MB_OK);

          break;

      }

      return 0;

   case WM_SIZE:

      SendMessage(hToolBar,TB_AUTOSIZE,0,0);

      return 0;

   case WM_DESTROY:

      PostQuitMessage(0);

      return 0;

   }

   return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

½ÇÇà½ÃÄÑ º¸ÀÚ. ÀÛ¾÷¿µ¿ªÀÇ »ó´Ü¿¡ Åø¹Ù°¡ ³ªÅ¸³ª¸ç Åø ¹öưÀ» ´©¸£¸é ¸Þ½ÃÁö ¹Ú½º¸¦ º¸¿© ÁÙ °ÍÀÌ´Ù.

Åø¹Ù´Â µÎ°¡Áö ¹æ¹ýÀ¸·Î ¸¸µé ¼ö Àִµ¥ ToolBar1 ¿¹Á¦´Â µÎ°¡Áö ¹æ¹ý¿¡ ´ëÇÑ Äڵ尡 ¸ðµÎ ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç ¹æ¹ý2´Â ÁÖ¼®À¸·Î µÇ¾î ÀÖ´Ù. µÎ ÄÚµå ¸ðµÎ µ¿ÀÏÇÑ Åø¹Ù¸¦ ¸¸µé¾î³»´Âµ¥ ¿¹Á¦¸¦ ¿­¾î ³õ°í ÁÖ¼®À» Ç®¾î°¡¸ç µÎ ¹æ¹ýÀ» ºñ±³ÇØ º¸±â ¹Ù¶õ´Ù.

TBBUTTON

Åø ¹öư ÇϳªÀÇ Á¤º¸´Â TBBUTTON ±¸Á¶Ã¼·Î ÁöÁ¤Çϸç ÀÌ ±¸Á¶Ã¼°¡ ¹è¿­À» ÀÌ·ç¾î Åø¹Ù ÀüüÀÇ ¹öưµéÀ» Á¤ÀÇÇÑ´Ù. Åø¹Ù¿Í Åø ¹öưÀº ´Ù¸¥ °ÍÀ̹ǷΠ¿ë¾î¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. Åø¹Ù´Â ÄÁÆ®·Ñ ±× ÀÚüÀ̰í Åø ¹öưÀº Åø¹Ù¿¡ Æ÷ÇԵǴ ±×·¡ÇÈ ÄÁÆ®·ÑÀÌ´Ù. TBBUTTON ±¸Á¶Ã¼´Â commctrl.h¿¡ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù.

 

typedef struct _TBBUTTON {

    int       iBitmap;

    int       idCommand;

    BYTE      fsState;

    BYTE      fsStyle;

#ifdef _WIN64

    BYTE      bReserved[6]     // padding for alignment

#elif defined(_WIN32)

    BYTE      bReserved[2]     // padding for alignment

#endif

    DWORD_PTR dwData;

    INT_PTR   iString;

} TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON;

 

iBitmap ¸â¹ö´Â Åø ¹öư ºñÆ®¸Ê Áß¿¡ ¸î ¹øÂ°Àΰ¡¸¦ ³ªÅ¸³»´Â À妽ºÀÌ´Ù. ¾Õ¿¡¼­ º¸¾Ò´Ù½ÃÇÇ ¹öư Çϳª´ç ºñÆ®¸ÊÀÌ Çϳª¾¿ Á¦°øµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇϳªÀÇ ºñÆ®¸Ê¿¡ ¸ðµç ¹öưÀÇ À̹ÌÁö°¡ Á¦°øµÇ¹Ç·Î ±× Áß ¸î ¹øÂ° À̹ÌÁö¸¦ »ç¿ëÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ºñÆ®¸ÊÀÇ Ã¹¹øÂ° À̹ÌÁö°¡ 0¹øÀÌ¸ç µÎ¹øÂ°´Â 1¹ø µîÀ¸·Î ¹øÈ£°¡ Áõ°¡ÇÑ´Ù.

idCommand´Â »ç¿ëÀÚ°¡ ÀÌ ¹öưÀ» ´­·¶À» ¶§ WM_COMMAND·Î Àü´ÞµÉ ¹öưÀÇ IDÀÌ´Ù. ¹öưÀÌ ´­·¯Áö¸é Åø¹ÙÀÇ ºÎ¸ð À©µµ¿ì·Î WM_COMMAND ¸Þ½ÃÁö°¡ Àü´ÞµÇ´Âµ¥ ÀÌ ¶§ LOWORD(wParam)À¸·Î idCommand°¡ Àü´ÞµÈ´Ù. Åø ¹öưÀº º¸Åë ¸Þ´º ¸í·ÉÀ» ºü¸£°Ô ¼±ÅÃÇϱâ À§ÇØ »ç¿ëµÇ´Âµ¥ ÀÌ·² °æ¿ì idCommand¿¡ ´ëÀÀµÇ´Â ¸Þ´º ¸í·ÉÀÇ ID¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ÀÌ ¿¹Á¦´Â ¸Þ´º°¡ ¾øÀ¸¹Ç·Î 10¹øºÎÅÍ °è¼Ó Áõ°¡ÇÏ´Â ID¸¦ ÁÖ¾ú´Ù.

fsState¸â¹ö´Â ¹öưÀÇ »óŸ¦ ³ªÅ¸³»¸ç ´ÙÀ½ °ª Áß Çϳª, ¶Ç´Â ¿©·¯ °³ÀÇ Á¶ÇÕÀ» ÁöÁ¤ÇÑ´Ù. TBBUTTON ±¸Á¶Ã¼ÀÇ ÀÌ ¸â¹ö´Â ¹öưÀÇ Ãʱ⠻óŸ¦ ÁöÁ¤Çϸç ÀÌ »óÅ´ ½ÇÇàÁß¿¡ ¾ðÁ¦µçÁö º¯°æÇÒ ¼ö ÀÖ´Ù.

 

°ª

»óÅÂ

TBSTATE_CHECKED

üũµÈ »óÅÂ. Áï ¹öưÀÌ ´­·¯Á® ÀÖ´Â »óÅÂ

TBSTATE_ENABLED

»ç¿ë °¡´ÉÇÑ »óÅÂ

TBSTATE_HIDDEN

¼û°ÜÁø ¹öư

TBSTATE_INDETERMINATE

»ç¿ë ºÒ°¡´ÉÇÑ »óÅÂ

TBSTATE_PRESSED

´­·¯Á® ÀÖ´Â »óÅÂ

TBSTATE_WRAP

ÀÌ ¹öư ÀÌÈÄ´Â ´ÙÀ½ ÁÙ·Î °³ÇàµÈ´Ù. ÀÌ »óŸ¦ »ç¿ëÇÏ¸é ¿©·¯ ÁÙ·Î Åø ¹öưÀ» ¹èÄ¡ÇÒ ¼ö ÀÖ´Ù. ´Ü Åø¹Ù°¡ ¿©·¯ÁÙ ¹öưÀ» Áö¿øÇÏ´Â ½ºÅ¸ÀÏÀ» °¡Á®¾ß ÇÑ´Ù.

TBSTATE_ELLIPSES

Åø ¹öưÀÇ ÅØ½ºÆ® ÀϺΰ¡ Àß·ÁÁ® º¸ÀÌÁö ¾ÊÀ¸¸ç »ý·« Ç¥½Ã(...)ÀÌ Ãâ·ÂµÇ¾î ÀÖ´Â »óÅÂ

TBSTATE_MARKED

¹öưÀÌ ¸¶Å©µÇ¾î ÀÖ´Â »óÅÂÀÌ´Ù. ¸¶Å©µÇ¾î ÀÖ´Â »óŶõ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ Á¤ÀÇÇϱ⠳ª¸§ÀÌ´Ù.

 

¿¹Á¦¿¡¼­´Â ¼¼¹øÂ° ¹öư¿¡ TBSTATE_CHECKED Ç÷¡±×¸¦ ÁÖ¾î óÀ½ºÎÅÍ ¼±ÅÃµÈ »óÅÂ·Î Åø ¹öưÀ» ¸¸µéµµ·Ï ÇÏ¿´´Ù. ³ª¸ÓÁö ¹öưµéÀº TBSTATE_ENABLED Ç÷¡±×¸¸ ÁÖ¾î »ç¿ë °¡´ÉÇϵµ·Ï¸¸ ÇØ ÁÖ¾ú´Ù. fsStyle ¸â¹ö´Â Åø ¹öưÀÇ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÏ¸ç ¹öưÀÇ ¸ð¾çÀ̳ª ±â´ÉÀ» ÁöÁ¤ÇÑ´Ù. ´ÙÀ½ Ç÷¡±× Áß Çϳª ¶Ç´Â Á¶ÇÕÀ» ÁöÁ¤ÇÑ´Ù.

 

½ºÅ¸ÀÏ

¼³¸í

TBSTYLE_BUTTON

ÀϹÝÀûÀΠǪ½¬ ¹öư ¸ð¾çÀÇ Åø¹Ù¸¦ ¸¸µç´Ù. ´©¸£¸é ¾¦ µé¾î°¡°í ³õÀ¸¸é ´Ù½Ã Æ¢¾î³ª¿À´Â Ç¥ÁØ ¹öư°ú °°´Ù.

TBSTYLE_CHECK

¹öưÀ» ´©¸¦ ¶§¸¶´Ù ´­·¯Áø »óÅÂ¿Í Æ¢¾î³ª¿Â »óŸ¦ Åä±ÛÇÏ´Â Çü½ÄÀÇ ¹öưÀÌ´Ù.

TBSTYLE_GROUP

¹öư³¢¸® ±×·ìÀ» ÀÌ·é´Ù. ±×·ì ³»ÀÇ ÇÑ ¹öưÀÌ ´­·¯Á® ÀÖÀ¸¸é ³ª¸ÓÁö ¹öưÀº Æ¢¾î³ª¿Â´Ù.

TBSTYLE_SEP

½ÇÁ¦ ¹öưÀÌ ¾Æ´Ï¶ó ¹öư°£À» ±¸ºÐÇϱâ À§ÇÑ ¿©¹é(Separator)À» ¸¸µç´Ù.

TBSTYLE_CHECKGROUP

TBSTYLE_CHECK | TBSTYLE_GROUP

TBSTYLE_AUTOSIZE

Åø ¹ÙÀÇ Ç¥ÁØÆøÀ» »ç¿ëÇÏÁö ¾Ê°í ÀÚ½ÅÀÇ ÆøÀ» »ç¿ëÇÑ´Ù.

TBSTYLE_DROPDOWN

¸í·É ¸Þ½ÃÁö ´ë½Å TBN_DROPDOWN ÅëÁö ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù.

TBSTYLE_NOPREFIX

&¹®ÀÚ¸¦ ´ÜÃàŰ·Î ÇØ¼®ÇÏÁö ¾Ê°í ¹®ÀÚ ±×´ë·Î Ãâ·ÂÇÑ´Ù.

BTNS_SHOWTEXT

¸®½ºÆ® ½ºÅ¸ÀÏÀÇ Åø¿¡ È®Àå ½ºÅ¸ÀÏÀÌ Àû¿ëµÇ¾úÀ» ¶§ ÅØ½ºÆ®¸¦ º¸¿©ÁØ´Ù.

BTNS_WHOLEDROPDOWN

¹öư À̹ÌÁö ¹Ø¿¡ ¾Æ·¡ÂÊ È­»ìÇ¥¸¦ º¸¿©ÁØ´Ù.

 

Åø ¹öưÀÇ ½ºÅ¸ÀÏÀº TBSTYLE_·Î ½ÃÀ۵Ǵµ¥ ÀÌ ½ºÅ¸ÀÏ »ó¼ö°ªÀÌ Åø¹ÙÀÇ ½ºÅ¸Àϰú È¥µ¿µÉ ¿©Áö°¡ ÀÖ¾î °øÅë ÄÁÆ®·Ñ 5.80ÀÌÈÄ¿¡´Â Åø ¹öưÀÇ ½ºÅ¸ÀÏÀÌ ÀϰýÀûÀ¸·Î BTNS_·Î ½ÃÀ۵ǵµ·Ï º¯°æµÇ¾ú´Ù. Áï TBSTYLE_SEP ´ë½Å BTNS_SEPÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÇÏÁö¸¸ ÀÌ·¸°Ô µÇ¸é °øÅë ÄÁÆ®·Ñ 4.72ÀÌÀüÀÇ ¹öÀü°ú´Â ȣȯ¼ºÀ» ÀÐ°Ô µÇ¹Ç·Î ±âÁ¸ ½ºÅ¸ÀϰªÀº °è¼Ó »ç¿ëÇÏ´Â °ÍÀÌ ÁÁÀ» °Í °°´Ù.

¿¹Á¦¿¡¼­´Â µÎ °³ÀÇ Çª½¬ ¹öư°ú µÎ °³ÀÇ Ã¼Å© ±×·ì ¹öưÀ» ¸¸µé¾ú´Ù. Åø ¹öưÀÇ ½ºÅ¸ÀÏ¿¡ ´ëÇØ¼­´Â ÀÏ´Ü µµÇ¥·Î Á¤¸®Çϰí Àá½Ã ÈÄ¿¡ °³º° ½ºÅ¸Àϵ鿡 ´ëÇØ ´Ù½Ã ÀÚ¼¼È÷ ¾Ë¾Æº¼ °ÍÀÌ´Ù.

´Ù¼¸ ¹øÂ° dwData ¸â¹ö´Â ÇÁ·Î±×·¥ÀÌ Á¤ÀÇÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅÍÀ̸ç iStringÀº ¹öư ¹®ÀÚ¿­ÀÇ À妽ºÀÌ´Ù. Åø¹Ù´Â Åø ¹öư¿¡ Ãâ·ÂÇÒ ¹®ÀÚ¿­À» ¹è¿­·Î Á¤ÀÇÇϴµ¥ iStringÀº ÀÌ ¹è¿­¿¡¼­ ¸î¹øÂ° ¹®ÀÚ¿­À» »ç¿ëÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. ¹®ÀÚ¿­¾øÀÌ À̹ÌÁö¸¸ Ãâ·ÂÇÒ ¶§´Â ÀÌ ¸â¹ö¿¡ 0À» ´ëÀÔÇØ ÁØ´Ù.

WndProcÀÇ ¼±µÎ¿¡¼­´Â Åø ¹öư¿¡ ´ëÇÑ Á¤º¸¸¦ TBBUTTON ±¸Á¶Ã¼ ¹è¿­ÀÎ ToolBtn¿¡ ÀÛ¼ºÇϰí ÀÖ´Ù. ÀÌ ¹è¿­ÀÇ ÃʱⰪÀ» À¯½ÉÈ÷ »ìÆìº¸¸é Åø ¹öưµéÀÌ ¾î¶² ½ºÅ¸Àϰú ¸í·É ID¸¦ °¡Áö´ÂÁö ¾Ë ¼ö ÀÖ´Ù. ÀÌ ¿¹Á¦´Â ª°í °£´ÜÇϱ⠶§¹®¿¡ ToolBtn ¹è¿­À» WndProc¿¡ ¼±¾ðÇßÁö¸¸ ¸Å¹ø ±¸Á¶Ã¼°¡ ÃʱâÈ­µÇ¹Ç·Î ½ÇÀü¿¡¼­´Â Àü¿ªÀ¸·Î ¼±¾ðÇϰųª staticÀ¸·Î ¼±¾ðÇÏ´Â °ÍÀÌ ÁÁ´Ù.

CreateToolbarEx

Åø¹Ùµµ À©µµ¿ìÀ̹ǷΠCreateWindow ÇÔ¼ö·Î ¸¸µé ¼ö ÀÖÁö¸¸ ±×º¸´Ù´Â Åø¹Ù¸¦ ¸¸µå´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. Àμö°¡ ¾ÆÁÖ Â¡±×·´°Ô ¸¹Àºµ¥ ÁÖ¼®À¸·Î ª°Ô ¼³¸íÀ» Çϰí ÇÊ¿äÇÑ Àμö¿¡ ´ëÇØ¼­¸¸ º¸Ãæ ¼³¸íÀ» Çϵµ·Ï ÇϰڴÙ.

 

HWND CreateToolbarEx(

HWND hwnd,                         // Åø¹ÙÀÇ ºÎ¸ð À©µµ¿ì

DWORD ws,                              // Åø¹Ù À©µµ¿ìÀÇ ½ºÅ¸ÀÏ. WS_CHILD´Â ¹Ýµå½Ã ÀÖ¾î¾ß ÇÑ´Ù.

UINT wID,                             // Åø¹ÙÀÇ ID

int nBitmaps,                      // Åø ¹öư ºñÆ®¸ÊÀÇ °³¼ö

HINSTANCE hBMInst,                    // ¸®¼Ò½º¸¦ °¡Áø ÀνºÅϽº ÇÚµé

UINT wBMID,                        // Åø¹Ù ºñÆ®¸Ê ÇÚµé

LPCTBBUTTON lpButtons,                 // Åø ¹öưµé¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áø TBBUTTON ±¸Á¶Ã¼ ¹è¿­

int iNumButtons,                      // Åø ¹öưÀÇ °³¼ö

int dxButton, int dyButton,        // ¹öưÀÇ Å©±â

int dxBitmap, int dyBitmap,        // ºñÆ®¸ÊÀÇ Å©±â

UINT uStructSize                      // sizeof(TBBUTTON)

);

 

µÎ ¹øÂ° Àμö·Î Åø¹Ù ÀÚüÀÇ ½ºÅ¸ÀÏÀ» ÁöÁ¤Çϴµ¥ WS_CHILD³ª WS_VISIBLEÀº ¼±ÅÃÀÇ ¿©Áö¾øÀÌ ÁÖ¾î¾ß ÇÑ´Ù. À̿ܿ¡ Åø¹Ù¿¡ ÁÙ ¼ö ÀÖ´Â °íÀ¯ÀÇ ½ºÅ¸ÀϵéÀÌ Àִµ¥ ÀÌ ½ºÅ¸ÀÏ¿¡ µû¶ó Åø¹ÙÀÇ ¸ð¾çÀ̳ª µ¿ÀÛ¿¡ ¸¹Àº Â÷À̰¡ ¹ß»ýÇÏ°Ô µÈ´Ù. Åø¹ÙÀÇ ½ºÅ¸ÀÏÀº Àá½Ã ÈÄ µû·Î Á¤¸®Çϱâ·Î Ç쵂 ¿¹Á¦¿¡¼­´Â Ưº°ÇÑ ½ºÅ¸ÀÏÀ» »ç¿ëÇÏÁö ¾Ê¾Ò´Ù.

°³º° Åø ¹öưÀÇ Á¤º¸´Â 7¹øÂ° Àμö·Î Àü´ÞµÇ´Â TBBUTTON ±¸Á¶Ã¼ ¹è¿­·Î ÁöÁ¤ÇÑ´Ù. Åø¹Ù¸¦ ¸¸µé±â Àü¿¡ ¸ÕÀú ÀÌ ±¸Á¶Ã¼¿¡ Åø ¹öư¿¡ ´ëÇÑ Á¤º¸ºÎÅÍ ´ëÀÔÇØ ÁÖ¾î¾ß ÇÑ´Ù. Åø¹Ù´Â ÀÌ ±¸Á¶Ã¼ Á¤º¸¸¦ ÂüÁ¶ÇÏ¿© °³º° Åø ¹öưÀ» ¸¸µé °ÍÀÌ´Ù. ³ª¸ÓÁö Àμöµé¿¡ ´ëÇØ¼­´Â ½±°Ô ÀÌÇØ°¡ °¡°ÚÁö¸¸ µÎ °¡Áö ¾Æ¸®¼ÛÇÑ Á¡ÀÌ ÀÖ´Ù.

¿ì¼± Åø ¹öưÀÇ °³¼ö(iNumButtons)¿Í Åø ¹öư ºñÆ®¸ÊÀÇ °³¼ö(nBitmaps)¸¦ ÁöÁ¤ÇÏ´Â Àμö°¡ µû·Î Àִµ¥ ÀÌ µÎ °ªÀº ´ç¿¬È÷ °°¾Æ¾ß ÇÒ °É·Î »ý°¢µÇÁö¸¸ ½ÇÁ¦·Î´Â ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ¹öư°£ÀÇ °£°ÝÀ» ¶ç¾îÁÖ´Â ±¸ºÐ ¿©¹é(Separator)µµ ÇϳªÀÇ ¹öưÀ¸·Î Ãë±ÞµÇ´Âµ¥ ¿©¹éÀº ºñÆ®¸ÊÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ´ÙÀ½°ú °°Àº °æ¿ì ¹öưÀº 12°³ÀÌÁö¸¸ ºñÆ®¸ÊÀº 10°³¸¸ ÀÖÀ¸¸é µÈ´Ù. ÇÊ¿äÇÑ ºñÆ®¸Ê=¹öư °³¼ö-±¸ºÐ¿©¹é °³¼ö ¶ó°í »ý°¢ÇÏ¸é µÇ°Ú´Ù.

µÎ ¹øÂ°·Î ¹öưÀÇ Å©±â¿Í ºñÆ®¸ÊÀÇ Å©±â¸¦ ÁöÁ¤ÇÏ´Â Àμö°¡ ¿ª½Ã °¢°¢ µû·Î Àִµ¥ ÀÌ °ªµµ ´ç¿¬È÷ °°¾Æ¾ß ÇÒ °Í °°Áö¸¸ ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ºñÆ®¸ÊÀÇ Å©±âº¸´Ù ¹öưÀÇ Å©±â°¡ Å©¸é ³ª¸ÓÁö ºÎºÐÀº ¿©¹éÀ¸·Î ³²°ÜÁö°Ô µÈ´Ù. ´Ü, ¹öư°ú ºñÆ®¸ÊÀÇ ÆøÀº °°¾Æ¾ß ÇÑ´Ù.

TBBUTTON ±¸Á¶Ã¼¿Í CreateToolbarEx ÇÔ¼öÀÇ »ç¿ë¿¹°¡ ¿¹Á¦ÀÇ WM_CREATE¿¡ Àß ³ª¿Í ÀÖÀ¸¹Ç·Î Âü°íÇϱ⠹ٶõ´Ù. ¿¹Á¦ Äڵ忡¼­´Â ºñÆ®¸Ê 4°³¸¦ »ç¿ëÇÏ¿© 16*16Å©±âÀÇ Åø ¹öư 5°³¸¦ °¡Áö´Â Åø ¹Ù¸¦ ¸¸µé¾ú´Ù.

CreateWindow

Åø¹Ù ÄÁÆ®·Ñµµ À©µµ¿ìÀ̹ǷΠCreateWindow(Ex) ÇÔ¼ö·Î ¸¸µé ¼ö ÀÖ´Ù. ´Ü, ÀÌ ÇÔ¼ö´Â TBBUTTON ±¸Á¶Ã¼³ª ¹öưÀÇ Å©±â µîÀ» Àü´Þ¹Þ´Â Àμö°¡ ¾øÀ¸¹Ç·Î Åø ¹öưÀ» °¡ÁöÁö ¾Ê´Â ºó Åø¹Ù¸¸ ¸¸µé¾î ÁØ´Ù. ÀÏ´Ü Åø¹Ù¸¦ ¸¸µç ÈÄ ´ÙÀ½ ¼¼ ´Ü°è¸¦ °ÅÃÄ Åø¹Ù¿¡°Ô ÇÊ¿äÇÑ Á¤º¸¸¦ Á¦°øÇØ ÁÖ¾î¾ß ÇÑ´Ù.

 

¨ç TB_BUTTONSTRUCTSIZE ¸Þ½ÃÁö¸¦ º¸³» ÁÖ¾î TBBUTTON ±¸Á¶Ã¼ÀÇ Å©±â¸¦ wParamÀ¸·Î Àü´ÞÇØ ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ Å©±â´Â °øÅë ÄÁÆ®·ÑÀÇ ¹öÀü È®Àο¡ »ç¿ëµÈ´Ù.

¨è TB_ADDBITMAP ¸Þ½ÃÁö¸¦ º¸³» ÁÖ¾î Åø ¹öư Ç¥¸é¿¡ Ãâ·ÂÇÒ ºñÆ®¸Ê Á¤º¸¸¦ Á¦°øÇÑ´Ù. ÀÌ ¸Þ½ÃÁöÀÇ wParamÀ¸·Î ºñÆ®¸ÊÀÇ °³¼ö¸¦, lParamÀ¸·Î´Â ´ÙÀ½ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇÑ´Ù.

 

typedef struct {

    HINSTANCE hInst;

    UINT_PTR nID;

} TBADDBITMAP, *LPTBADDBITMAP;

 

ºñÆ®¸Ê ¸®¼Ò½º¸¦ °¡Áø ÀνºÅϽºÀÇ ÇÚµé°ú ºñÆ®¸Ê ¸®¼Ò½ºÀÇ ID¸¦ ¸â¹ö·Î °¡Áö°í ÀÖ´Ù. ÀνºÅϽº ÇÚµé°ú ºñÆ®¸Ê ¸®¼Ò½º ID¸¦ ÁÙ ¼öµµ ÀÖ°í hInst¿¡ NULLÀ» ÁÖ°í nID¿¡ ºñÆ®¸Ê ÇÚµéÀ» ÁÙ ¼öµµ ÀÖ´Ù.

¨é TB_ADDBUTTONS ¸Þ½ÃÁö·Î ¹öưÀ» Ãß°¡ÇÑ´Ù. wParamÀ¸·Î ¹öưÀÇ °³¼ö¸¦ Àü´ÞÇϸç lParamÀ¸·Î ¹öư¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö´Â TBBUTTON ±¸Á¶Ã¼ ¹è¿­À» Àü´ÞÇÑ´Ù.

 

°á±¹ CreateWindow·Î Åø¹Ù¸¦ ¸¸µé ¶§µµ CreateToolBarExÇÔ¼ö·Î Àü´ÞµÇ´Â ¸ðµç Á¤º¸¸¦ Á¦°øÇØ ÁÖ´Â ¼ÀÀÌ´Ù. Ưº°ÇÑ ÀÌÀ¯°¡ ¾ø´Ù¸é Åø¹Ù´Â °¡±ÞÀûÀ̸é CreateToolBarEx ÇÔ¼ö·Î ¸¸µå´Â °ÍÀÌ ÈξÀ Æí¸®ÇÏ´Ù. ÇÏÁö¸¸ CreateWindow ÇÔ¼ö¸¦ »ç¿ëÇÒ °æ¿ì ºñÆ®¸Ê ´ë½Å À̹ÌÁö ¸®½ºÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â Å« ÀåÁ¡ÀÌ ÀÖÀ¸¹Ç·Î ÀÌ ¹æ¹ýµµ ¾Ë¾Æ µÎ¾î¾ß ÇÑ´Ù.

Åø ¹ÙÀÇ ¸Þ½ÃÁö

Åø ¹Ùµµ ÄÁÆ®·ÑÀÇ ÀÏÁ¾À̹ǷΠºÎ¸ð À©µµ¿ì°¡ Åø¹Ù¿¡°Ô ¸í·ÉÀ» ³»¸± ¶§´Â ¿¹¿Ü¾øÀÌ ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ´Ù. Åø¹ÙÀÇ ¸Þ½ÃÁö´Â ¸ðµÎ TB_·Î ½ÃÀÛµÇ¸ç ¾Õ¿¡¼­ ÀÌ¹Ì TB_ADDBITMAP, TB_ADDBUTTONS ¸Þ½ÃÁö¸¦ »ç¿ëÇØ º¸¾Ò°í ¾ÕÀ¸·Îµµ °è¼Ó ´õ ¸¹Àº ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ°Ô µÉ °ÍÀÌ´Ù. ÀÌÂë µÇ¸é ¿©·¯ºÐµéÀº ¸Þ½ÃÁö¸¦ Á¦´ë·Î »ç¿ëÇϱâ À§Çؼ­´Â wParam, lParam°ú ÀÌ Àμöµé·Î Àü´ÞµÇ´Â ±¸Á¶Ã¼¸¦ µû·Î °øºÎÇØ¾ß ÇÑ´Ù´Â °Í Á¤µµ´Â Àß ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù.

°øÅë ÄÁÆ®·Ñ 5.81¹öÀüÀ» ±âÁØÀ¸·Î À©µµ¿ì Ç¥ÁØ ¸Þ½ÃÁö´Â »©°í Åø¹Ù ÀڽŸ¸ÀÇ °íÀ¯ ¸Þ½ÃÁö¸¸ 84°³¿¡ ´ÞÇÑ´Ù. ¹öưÀ̳ª ¿¡µðÆ® µî¿¡ ºñÇÑ´Ù¸é ¸Þ½ÃÁö Á¾·ù°¡ ¹«Ã´ ¸¹Àºµ¥ ±×¸¸Å­ Á¦°øÇÏ´Â ±â´ÉÀÌ ¸¹´Ù´Â ¶æÀÌ´Ù. ÀÌ ¸¹Àº ¸Þ½ÃÁöµéÀ» ¿©±â¼­ ´Ù ¼³¸íÇÒ ¼ö´Â ¾øÀ¸¹Ç·Î ÇÊ¿äÇÒ ¶§¸¶´Ù ·¹ÆÛ·±½º¸¦ Âü°íÇϱ⠹ٶõ´Ù. ¾ÕÀ¸·Î ½Ç½À¿¡¼­ ÇÊ¿äÇÒ ¶§ ¸î°¡Áö ¸Þ½ÃÁö´Â ÀÚ¼¼ÇÏ°Ô ¼³¸íÇϰÚÁö¸¸ ¸ðµç ¸Þ½ÃÁö¸¦ ´Ù Á¤¸®Çϱâ´Â ¼ÖÁ÷È÷ ¾î·Æ°í ±×·² Çʿ䵵 ¾ø´Ù.