Åø ¹öưÀº º¸Åë À̹ÌÁö¸¸ °¡ÁöÁö¸¸ ÅØ½ºÆ®¸¦ °°ÀÌ °¡Áú ¼öµµ ÀÖ°í ÅØ½ºÆ®¸¸ °¡Áú ¼öµµ ÀÖ´Ù. Åø ¹öư¿¡ ÅØ½ºÆ®¸¦ Ãâ·ÂÇÏ·Á¸é °¢°¢ÀÇ ¹öư¿¡ ³ªÅ¸³¯ ÅØ½ºÆ®¸¦ Á¦°øÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¹öư¿¡ ÅØ½ºÆ®¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀº µÎ °¡Áö°¡ ÀÖ´Ù.
ù¹øÂ°´Â 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 ¸Þ½ÃÁö·Î "¸Þ·Õ"À̶ó´Â ¹®ÀÚ¿À» Á¦°øÇß´Ù. ÀÌ ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ¸é ¾ðÁ¦µçÁö Åø ¹öưÀÇ ÅØ½ºÆ®¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
Åø¹ÙÀÇ ¾Æ·¡ÂÊ¿¡ ¹®ÀÚ¿ÀÌ Ãâ·ÂµÇ¾î ÀÖÀ¸¸ç ¹öưÀº ÅØ½ºÆ®ÀÇ Æø¿¡ ¸Â°Ô È®ÀåµÈ´Ù. Åø¹ÙÀÇ ½ºÅ¸ÀÏÀ» º¯°æÇÏ¸é ¿À¸¥ÂÊ¿¡ ÅØ½ºÆ®°¡ ³ªÅ¸³ªµµ·Ï ÇÒ ¼öµµ ÀÖ´Ù.