³ª. Åø¹Ù¿¡ ÅØ½ºÆ® ³Ö±â

Åø ¹öưÀº º¸Åë À̹ÌÁö¸¸ °¡ÁöÁö¸¸ ÅØ½ºÆ®¸¦ °°ÀÌ °¡Áú ¼öµµ ÀÖ°í ÅØ½ºÆ®¸¸ °¡Áú ¼öµµ ÀÖ´Ù. Åø ¹öư¿¡ ÅØ½ºÆ®¸¦ Ãâ·ÂÇÏ·Á¸é °¢°¢ÀÇ ¹öư¿¡ ³ªÅ¸³¯ ÅØ½ºÆ®¸¦ Á¦°øÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¹öư¿¡ ÅØ½ºÆ®¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀº µÎ °¡Áö°¡ ÀÖ´Ù.

ù¹øÂ°´Â TB_ADDSTRING ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ¿© Åø ¹Ù¿¡ ¹®ÀÚ¿­À» µî·ÏÇÏ´Â °ÍÀÌ´Ù. Åø ¹Ù´Â ÀÏÁ¾ÀÇ ÅØ½ºÆ® ¹è¿­À» °ü¸®Çϸç ÀÌ ¸Þ½ÃÁö·Î ÅØ½ºÆ® ¹è¿­À» µî·ÏÇÑ´Ù. wParamÀ¸·Î´Â ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ °¡Áö´Â ÀνºÅϽº ÇÚµéÀ» ÁÖµÇ ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é NULL·Î ÁöÁ¤ÇÑ´Ù. lParam¿¡´Â ¹®ÀÚ¿­ ¸®¼Ò½ºÀÇ ID ¶Ç´Â ¹®ÀÚ¿­ÀÇ Æ÷ÀÎÅ͸¦ °ð¹Ù·Î Àü´ÞÇÑ´Ù. À̶§ ¹®ÀÚ¿­Àº ¿©·¯ °³ÀÇ ³Î Á¾·á ¹®ÀÚ¿­À» °¡Áö´Â ¹®ÀÚ¿­ ¹è¿­À̾î¾ß ÇÏ¸ç ¸¶Áö¸· ¹®ÀÚ¿­Àº µÎ °³ÀÇ NULL·Î ³¡³ªµµ·Ï ÇÑ´Ù. ÀÌ ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ¸é ¿©·¯ °³ÀÇ ¹®ÀÚ¿­À» ÇѲ¨¹ø¿¡ µî·ÏÇÒ ¼ö ÀÖ´Ù.

Åø¹Ù´Â ÀÌ·¸°Ô µî·ÏµÈ ¹®ÀÚ¿­À» ³»ºÎÀûÀÎ ¹è¿­·Î °ü¸®ÇÏ¸ç °¢ ¹®ÀÚ¿­Àº 0ºÎÅÍ ½ÃÀÛÇÏ´Â À妽º·Î ÁöÁ¤ÇÑ´Ù. ¹®ÀÚ¿­À» Åø ¹Ù¿¡ µî·ÏÇϰí TBBUTTON ±¸Á¶Ã¼ÀÇ iString ¸â¹ö¿¡ ¹®ÀÚ¿­ÀÇ À妽º¸¦ ´ëÀÔÇØ ÁÖ¸é µÈ´Ù. ¹öưÀ» ¸ÕÀú µî·ÏÇÑ ÈÄ ¹®ÀÚ¿­À» ³ªÁß¿¡ µî·ÏÇØµµ »ó°ü¾ø´Ù. ¾îÂ÷ÇÇ Åø¹Ù°¡ º¸À̱â Àü¿¡ µÎ°¡Áö Á¤º¸°¡ ¿ÏºñµÇ±â¸¸ ÇÏ¸é µÈ´Ù.

µÎ¹øÂ° ¹æ¹ýÀº TB_SETBUTTONINFO ¸Þ½ÃÁö·Î °¢ °³º° ¹öư¿¡ ¹®ÀÚ¿­À» µî·ÏÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¸Þ½ÃÁö´Â ¹öưÀÇ ¹®ÀÚ¿­»Ó¸¸ ¾Æ´Ï¶ó »óÅÂ, ½ºÅ¸ÀÏ, ¸í·É ID, À̹ÌÁö, Æø µî ¹öưÀÇ ¸ðµç Á¤º¸¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. wParamÀ¸·Î ¹öưÀÇ ¸í·É ID¸¦ Àü´ÞÇϰí lParamÀ¸·Î´Â ¹öưÀÇ Á¤º¸¸¦ ÁöÁ¤ÇÏ´Â ´ÙÀ½ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇÑ´Ù.

 

typedef struct {

    UINT cbSize;

    DWORD dwMask;

    int idCommand;

    int iImage;

    BYTE fsState;

    BYTE fsStyle;

    WORD cx;

    DWORD_PTR lParam;

    LPTSTR pszText;

    int cchText;

} TBBUTTONINFO, *LPTBBUTTONINFO;

 

ÀÌ ±¸Á¶Ã¼¿¡ º¯°æÇϰíÀÚ ÇÏ´Â ¹öưÀÇ ¼Ó¼ºÀ» ¼³Á¤ÇÑ ÈÄ TB_SETBUTTONINFO ¸Þ½ÃÁö¸¦ º¸³»¸é µÈ´Ù. ¹öưÀÇ ¼Ó¼ºÀ» Á¶»çÇÒ ¶§´Â ÀÌ ±¸Á¶Ã¼¿¡ Á¶»çÇÏ°í ½ÍÀº °ªÀ» ¼³Á¤ÇÑ ÈÄ TB_GETBUTTONINFO ¸Þ½ÃÁö¸¦ º¸³½´Ù.

cbSize´Â ÀÌ ±¸Á¶Ã¼ÀÇ Å©±âÀÌ¸ç ±¸Á¶Ã¼ ¹öÀü È®Àο¡ »ç¿ëµÇ¹Ç·Î ¸Þ½ÃÁö¸¦ º¸³»±â Àü¿¡ ¹Ýµå½Ã ´ëÀÔÇØ ÁÖ¾î¾ß ÇÑ´Ù. dwMask´Â ¹öưÀÇ ¾î¶² ¼Ó¼ºÀ» º¯°æ ¶Ç´Â Á¶»çÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÏ´Â ´ÙÀ½ Ç÷¡±×ÀÇ Á¶ÇÕÀÌ´Ù. dwMaskÀÇ °ª¿¡ µû¶ó TBBUTTONINFO ±¸Á¶Ã¼ÀÇ ¾î¶² ¸â¹öµéÀÌ À¯È¿ÇÑ °ªÀ» °¡Áö´Â°¡°¡ °áÁ¤µÈ´Ù.

 

Ç÷¡±×

¼³¸í

TBIF_COMMAND

¸í·É ID¸¦ º¯°æÇÑ´Ù.

TBIF_IMAGE

À̹ÌÁö¸¦ º¯°æÇÑ´Ù.

TBIF_LPARAM

»ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅ͸¦ º¯°æÇÑ´Ù.

TBIF_SIZE

¹öưÀÇ ÆøÀ» º¯°æÇÑ´Ù.

TBIF_STATE

¹öưÀÇ »óŸ¦ º¯°æÇÑ´Ù.

TBIF_STYLE

¹öưÀÇ ½ºÅ¸ÀÏÀ» º¯°æÇÑ´Ù.

TBIF_TEXT

¹öưÀÇ ÅØ½ºÆ®¸¦ º¯°æÇÑ´Ù.

 

³ª¸ÓÁö ¸â¹öµéÀº ¿©·¯ °¡Áö ¹öưÀÇ Á¤º¸¸¦ °¡Áö´Âµ¥ ¸â¹ö À̸§ ÀÚü°¡ ¾ÆÁÖ ¼³¸íÀûÀÌ´Ù. fsStyle ¸â¹ö´Â ¹öưÀÇ ½ºÅ¸ÀÏ, cx´Â ¹öưÀÇ Æø, pszText´Â ¹öưÀÇ ÅØ½ºÆ®ÀÌ´Ù. ÀÌ ¹æ¹ýÀ¸·Î ¹öưÀÇ ÅØ½ºÆ®¸¦ ÁöÁ¤ÇÏ·Á¸é dwMask¿¡ TBIF_TEXT¸¦ ´ëÀÔÇϰí pszText¿¡ ¹®ÀÚ¿­ Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ¸é µÈ´Ù.

ÀÌ µÎ ¹æ¹ýÀ¸·Î ¹öư¿¡ ÅØ½ºÆ®¸¦ Ãâ·ÂÇÏ´Â ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. ´ÙÀ½ ¿¹Á¦´Â 3°³ÀÇ ¹öưÀº TB_ADDSTRINGÀ¸·Î µî·ÏÇÑ ¹®ÀÚ¿­À» Ãâ·ÂÇÏ¿´°í 1°³ÀÇ ¹öưÀº TB_SETBUTTONINFO ¸Þ½ÃÁö·Î ¹®ÀÚ¿­À» Ãâ·ÂÇÏ¿´´Ù.

 

#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,1},

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

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

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

   };

   TCHAR *szString="ù¹øÂ°\0µÎ¹øÂ°\0¼¼¹øÂ°\0";

   TBBUTTONINFO bi;

 

   switch(iMessage) {

   case WM_CREATE:

      InitCommonControls();

      hToolBar=CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE | WS_BORDER

          | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS,

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

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

      SendMessage(hToolBar,TB_ADDSTRING,NULL,(LPARAM)szString);

 

      bi.cbSize=sizeof(TBBUTTONINFO);

      bi.dwMask=TBIF_TEXT;

      bi.pszText="¸Þ·Õ";

      SendMessage(hToolBar,TB_SETBUTTONINFO,13,(LPARAM)&bi);

 

      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_NOTIFY:

      switch (((LPNMHDR)lParam)->code) {

      case TTN_GETDISPINFO:

          switch (wParam) {

          case 10:

             ((LPNMTTDISPINFO)lParam)->lpszText="Àå³² ¹öưÀÔ´Ï´Ù.";

             break;

          case 11:

             ((LPNMTTDISPINFO)lParam)->lpszText="±Í¿°µÕÀÌ µÑ° µþÀÔ´Ï´Ù.";

             break;

          case 12:

          case 13:

             ((LPNMTTDISPINFO)lParam)->lpszText="½ÖµÕÀÌ ¸·³»µéÀÔ´Ï´Ù.";

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

}

 

ToolBtn ¹è¿­ÀÇ ¸¶Áö¸· ¸â¹öÀÎ iStringÀº Â÷·Ê´ë·Î 0,1,2¶ó´Â °ªÀ¸·Î ÃʱâÈ­µÇ¾ú´Ù. Áï ù¹øÂ° ¹öưÀº 0¹ø À妽ºÀÇ ¹®ÀÚ¿­À», µÎ¹øÂ° ¹öưÀº 1¹ø À妽ºÀÇ ¹®ÀÚ¿­À» Ãâ·ÂÇÑ´Ù´Â ¶æÀÌ´Ù. Åø¹Ù¸¦ ¸ÕÀú ¸¸µç ÈÄ TB_ADDSTRING ¸Þ½ÃÁö·Î ¹öư¿¡ »ç¿ëÇÒ ¹®ÀÚ¿­ ¹è¿­ szStringÀ» Àü´ÞÇÏ¿´´Ù. ÀÌ ¹®ÀÚ¿­Àº ¼¼ °³ÀÇ ³Î Á¾·á ¹®ÀÚ¿­À» ¹è¿­·Î °¡Áö°í ÀÖÀ¸¸ç ¾ÕÂʺÎÅÍ Â÷·Ê´ë·Î À妽º 0,1,2 ¹®ÀÚ¿­·Î µî·ÏµÈ´Ù.

³×¹øÂ° ¹öưÀÇ ÅØ½ºÆ®´Â ToolBtn ¹è¿­¿¡¼­ ÃʱâÈ­µÇÁö ¾Ê¾ÒÀ¸³ª TB_SETBUTTONINFO ¸Þ½ÃÁö·Î "¸Þ·Õ"À̶ó´Â ¹®ÀÚ¿­À» Á¦°øÇß´Ù. ÀÌ ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ¸é ¾ðÁ¦µçÁö Åø ¹öưÀÇ ÅØ½ºÆ®¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

Åø¹ÙÀÇ ¾Æ·¡ÂÊ¿¡ ¹®ÀÚ¿­ÀÌ Ãâ·ÂµÇ¾î ÀÖÀ¸¸ç ¹öưÀº ÅØ½ºÆ®ÀÇ Æø¿¡ ¸Â°Ô È®ÀåµÈ´Ù. Åø¹ÙÀÇ ½ºÅ¸ÀÏÀ» º¯°æÇÏ¸é ¿À¸¥ÂÊ¿¡ ÅØ½ºÆ®°¡ ³ªÅ¸³ªµµ·Ï ÇÒ ¼öµµ ÀÖ´Ù.