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

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

ù¹ø°´Â 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 ¸Þ½ÃÁö·Î "¸Þ·Õ"À̶ó´Â ¹®ÀÚ¿­À» Á¦°øÇß´Ù. ÀÌ ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ¸é ¾ðÁ¦µçÁö Åø ¹öÆ°ÀÇ ÅؽºÆ®¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

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