ÅÇ ÄÁÆ®·ÑÀ» ÇÁ·Î±×·¡¹ÖÇÒ ¶§´Â TCM_·Î ½ÃÀ۵Ǵ ¸Þ½ÃÁö¸¦ º¸³»¾ß ÇÑ´Ù. ±×·¯³ª °øÅë ÄÁÆ®·Ñ ¶óÀ̺귯¸®°¡ ¸Þ½ÃÁö¸¦ ´ë½Å º¸³» ÁÖ´Â ¸ÅÅ©·Î ÇÔ¼öµéÀ» Á¤ÀÇÇϰí ÀÖÀ¸¹Ç·Î TabCtrl_·Î ½ÃÀ۵Ǵ ¸ÅÅ©·Î ÇÔ¼ö¸¦ ´ë½Å »ç¿ëÇÏ´Â °ÍÀÌ ÈξÀ ´õ Æí¸®ÇÏ´Ù. Áï TCM_INSERTITEM ¸Þ½ÃÁö¸¦ º¸³»´Â ´ë½Å TabCtrl_InsertItem ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÅÇÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Ù.
int
TabCtrl_InsertItem( HWND hwnd, int iItem, const LPTCITEM pitem);
CreateWindow·Î ÅÇ ÄÁÆ®·ÑÀ» »ý¼ºÇϸé ÅÇÀ» °¡ÁöÁö ¾Ê´Â »óÅ·Πºó ÄÁÆ®·ÑÀÌ »ý¼ºµÇ´Âµ¥ ÀÌ ÇÔ¼ö·Î ¿øÇϴ¸¸Å ÅÇÀ» Ãß°¡ÇÑ´Ù. hwnd´Â ¹°·Ð ÅÇ ÄÁÆ®·ÑÀÇ ÇÚµéÀ̸ç ÀÌÈÄ ¸ðµç ÇÔ¼öµéÀÇ Ã¹¹øÂ° Àμö´Â ÅÇ ÄÁÆ®·ÑÀÇ ÇÚµé¾Æ´õ, iItemÀº ÅÇÀÌ »ðÀ﵃ À§Ä¡ÀÌµÇ 0ºÎÅÍ ½ÃÀÛÇÏ´Â À妽º ¹øÈ£¸¦ ÁöÁ¤ÇÑ´Ù. pitemÀº »ðÀ﵃ ÅÇÀÇ Á¤º¸¸¦ ÁöÁ¤ÇÏ´Â ´ÙÀ½ ±¸Á¶Ã¼ÀÌ´Ù.
typedef struct tagTCITEM {
UINT mask;
#if (_WIN32_IE >= 0x0300)
DWORD dwState;
DWORD dwStateMask;
#else
UINT lpReserved1;
UINT lpReserved2;
#endif
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
} TCITEM, FAR *LPTCITEM;
mask ¸â¹ö´Â ÀÌ ±¸Á¶Ã¼ÀÇ ¾î¶² ¸â¹ö°¡ À¯È¿ÇÑÁö¸¦ ÁöÁ¤ÇÏ¸ç ´ÙÀ½ Ç÷¡±×µéÀÇ Á¶ÇÕÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. »ðÀÔÇÒ ÅÇ¿¡ ÁöÁ¤ÇÒ ¼Ó¼ºÀ» ÀÌ Ç÷¡±×·Î ¸í½ÃÇØ¾ß ÇÑ´Ù.
Ç÷¡±× |
¼³¸í |
TCIF_IMAGE |
iImage·Î À̹ÌÁö ¹øÈ£¸¦ ÁöÁ¤ÇÑ´Ù. À̹ÌÁö ¸®½ºÆ® »óÀÇ À妽º ¹øÈ£·Î ÁöÁ¤Çϸç -1ÀÏ °æ¿ì À̹ÌÁö¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. |
TCIF_PARAM |
lParamÀ¸·Î »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÑ´Ù. |
TCIF_RTLREADING |
¹®ÀÚ¿À» ¿À¸¥ÂÊ¿¡¼ ¿ÞÂÊÀ¸·Î Ãâ·ÂÇÑ´Ù. |
TCIF_STATE |
dwState·Î ÅÇÀÇ »óŸ¦ ÁöÁ¤ÇÑ´Ù. ´Ü, ÀÌ °ªÀº ÅÇÀ» »ðÀÔÇÒ ¶§´Â »ç¿ëµÇÁö ¾ÊÀ¸¸ç º°µµÀÇ ÇÔ¼ö·Î »óŸ¦ Á¶»ç º¯°æÇØ¾ß ÇÑ´Ù. |
TCIF_TEXT |
pszText ¸â¹ö·Î ÅÇÀÇ ÅØ½ºÆ®¸¦ ÁöÁ¤ÇÑ´Ù. ÅØ½ºÆ®¸¦ ÀÐÀ» ¶§´Â cchTextMax ¸â¹ö¿¡ pszText ¹öÆÛÀÇ Å©±â¸¦ Àü´ÞÇØ ÁÖ¾î¾ß ÇÑ´Ù. |
TabCtrl ¿¹Á¦¿¡¼´Â mask¿¡ TCIF_TEXT Ç÷¡±×¸¦ ÁÖ°í pszText¿¡ ÅÇ¿¡ ³ªÅ¸³¯ ¹®ÀÚ¿À» ÁöÁ¤ÇÏ¿© ¼¼ °³ÀÇ ÅÇÀ» Ãß°¡ÇÏ¿´´Ù. iImage³ª lParamÀ» »ç¿ëÇϸé ÅÇ¿¡ À̹ÌÁö¸¦ Ãâ·ÂÇϰųª »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼öµµ ÀÖ´Ù. ÀÌ¹Ì »ðÀÔµÈ ÅÇÀÇ Á¤º¸¸¦ Á¶»çÇϰųª º¯°æÇÒ ¶§´Â ´ÙÀ½ µÎ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.
BOOL TabCtrl_GetItem( HWND hwnd, int iItem , LPTCITEM pitem);
BOOL TabCtrl_SetItem( HWND hwnd, int iItem, LPTCITEM pitem);
pitemÀÇ mask¿¡ Á¶»ç ¶Ç´Â º¯°æÇÏ°í ½ÍÀº Á¤º¸¸¦ ÁöÁ¤ÇÑ ÈÄ ÀÌ ÇÔ¼öµéÀ» È£ÃâÇÏ¸é ¿øÇÏ´Â Á¤º¸°¡ pitem¿¡ ´ëÀÔµÇ¾î µ¹¾Æ¿Ã °ÍÀÌ´Ù. ¿¹¸¦ µé¾î 2¹ø ÅÇÀÇ ÅØ½ºÆ®¸¦ Á¶»çÇÏ°í ½Í´Ù¸é mask¿¡ TCIF_TEXT¸¦ ÁÖ°í pszText¿¡ ¹öÆÛÀÇ Æ÷ÀÎÅ͸¦ cchTextMax¿¡ ¹öÆÛÀÇ ±æÀ̸¦ ´ëÀÔÇÑ ÈÄ ¤¶TabCtrl_GetItem(hTab,2,&pitem)À» È£ÃâÇÑ ÈÄ pszText¸¦ ÀÐÀ¸¸é µÈ´Ù. ´ÙÀ½ µÎ ÇÔ¼ö´Â ÀÌ¹Ì Ãß°¡µÇ¾î ÀÖ´Â ÅÇÀ» »èÁ¦ÇÑ´Ù.
BOOL TabCtrl_DeleteItem( HWND hwnd, int iItem);
BOOL TabCtrl_DeleteAllItems( HWND hwnd);
ÅÇÀÇ À妽º¸¦ ÁöÁ¤ÇÏ¿© Çϳª¸¸ »èÁ¦ÇÒ ¼öµµ ÀÖ°í ¶Ç´Â ÅÇ Àüü¸¦ ÇѲ¨¹ø¿¡ »èÁ¦ÇÒ ¼öµµ ÀÖ´Ù. ÇÔ¼ö ¿øÇüÀÌ ¿ö³« Á÷°üÀûÀ̶ó ´õ ÀÌ»óÀÇ ¼³¸íÀº Çʿ䰡 ¾øÀ» °Í °°´Ù. ´ÙÀ½ ÇÔ¼öµéÀº ÅÇ ÄÁÆ®·ÑÀÇ ¿©·¯ °¡Áö »óŸ¦ Á¶»çÇÑ´Ù.
int TabCtrl_GetCurSel( HWND hwnd);
int TabCtrl_SetCurSel( HWND hwnd, int iItem);
int TabCtrl_GetItemCount( HWND hwnd);
°¢°¢ ÇöÀç ¼±ÅÃµÈ ÅÇÀÇ À妽º Á¶»ç, º¯°æ, ÃÑ ÅÇ °³¼ö Á¶»ç ÇÔ¼öÀÌ´Ù. ÀÌ·± ·ùÀÇ ÇÔ¼öµéÀº ÄÞº¸ ¹Ú½º³ª ¸®½ºÆ® ¹Ú½º µîÀÇ Ç¥ÁØ ÄÁÆ®·Ñ°ú »ç¿ë ¹æ¹ýÀÌ µ¿ÀÏÇϹǷΠµû·Î ¿¹¸¦ µé Çʿ䵵 ¾øÀÌ ½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù. ´ÙÀ½ TabManage ¿¹Á¦´Â Áö±Ý±îÁö ¼³¸íÇÑ ÅÇ °ü¸® ÇÔ¼öµéÀÇ Á¾ÇÕ ½Ç½ÀÆíÀÌ´Ù.
#include <commctrl.h>
HWND hTab, hEdit;
#define EDIT_TEXT 0
#define BTN_ADD 1
#define BTN_GET 2
#define BTN_EDIT 3
#define BTN_DEL 4
#define BTN_DELALL 5
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
TCITEM tie;
TCHAR Text[250];
int count, idx;
switch(iMessage) {
case WM_CREATE:
InitCommonControls();
hTab=CreateWindow(WC_TABCONTROL,"",WS_CHILD | WS_VISIBLE
| WS_CLIPSIBLINGS,
0,0,400,250,hWnd,(HMENU)0,g_hInst,NULL);
hEdit=CreateWindow("edit",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER,
420,20,100,25,hWnd,(HMENU)EDIT_TEXT,g_hInst,NULL);
CreateWindow("button","Ãß°¡",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
420,50,100,25,hWnd,(HMENU)BTN_ADD,g_hInst,NULL);
CreateWindow("button","Á¶»ç",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
420,80,100,25,hWnd,(HMENU)BTN_GET,g_hInst,NULL);
CreateWindow("button","º¯°æ",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
420,110,100,25,hWnd,(HMENU)BTN_EDIT,g_hInst,NULL);
CreateWindow("button","»èÁ¦",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
420,140,100,25,hWnd,(HMENU)BTN_DEL,g_hInst,NULL);
CreateWindow("button","¸ðµÎ »èÁ¦",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
420,170,100,25,hWnd,(HMENU)BTN_DELALL,g_hInst,NULL);
return 0;
case WM_COMMAND:
switch(LOWORD(wParam)) {
case BTN_ADD:
GetWindowText(hEdit,Text,250);
if (lstrlen(Text) !=0 ) {
tie.mask=TCIF_TEXT;
tie.pszText=Text;
count=TabCtrl_GetItemCount(hTab);
TabCtrl_InsertItem(hTab,count,&tie);
}
break;
case BTN_GET:
tie.mask=TCIF_TEXT;
tie.pszText=Text;
tie.cchTextMax=250;
idx=TabCtrl_GetCurSel(hTab);
if (idx != -1) {
TabCtrl_GetItem(hTab,idx,&tie);
SetWindowText(hEdit,Text);
}
break;
case BTN_EDIT:
idx=TabCtrl_GetCurSel(hTab);
GetWindowText(hEdit,Text,250);
if (idx != -1 && lstrlen(Text) != 0) {
tie.mask=TCIF_TEXT;
tie.pszText=Text;
TabCtrl_SetItem(hTab,idx,&tie);
}
break;
case BTN_DEL:
idx=TabCtrl_GetCurSel(hTab);
if (idx != -1) {
TabCtrl_DeleteItem(hTab,idx);
}
break;
case BTN_DELALL:
TabCtrl_DeleteAllItems(hTab);
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
ÅÇ ÄÁÆ®·Ñ Çϳª¿Í ÅÇÀÇ ÅØ½ºÆ®¸¦ ÁöÁ¤Çϱâ À§ÇÑ ¿¡µðÆ® ÄÁÆ®·Ñ, ±×¸®°í ¸í·É ¹öư ´Ù¼¸°³¸¦ »ý¼ºÇÑ ÈÄ ¹öưÀ» »ç¿ëÇÏ¿© ÅÇ ÄÁÆ®·ÑÀ» »ðÀÔ, »èÁ¦, º¯°æÇÑ´Ù. À̹ÌÁö³ª »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅÍ´Â ÀÏ´Ü Á¦¿ÜÇϰí ÅØ½ºÆ®·Î¸¸ ÅÇÀ» µî·ÏÇϵµ·Ï ÇÏ¿´´Ù.
Ãß°¡ ¹öưÀ» ´©¸£¸é ¿¡µðÆ® ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ ÅØ½ºÆ®·Î »õ ÅÇÀ» Ãß°¡Çß´Ù. mask¿¡ TCIF_TEXT¸¦ ÁÖ°í pszText¿¡ ¿¡µðÆ®¿¡ ÀÔ·ÂµÈ ÅØ½ºÆ® ¹øÁö¸¦ ´ëÀÔÇÑ ÈÄ ÃÑ Ç׸ñ °³¼ö¹øÂ°¿¡ ÅÇÀ» Ãß°¡ÇÏ¿´´Ù. ¹°·Ð À妽º ¹øÈ£¸¸ Á¦´ë·Î ÁöÁ¤ÇØ ÁÖ¸é ±âÁ¸ÀÇ ÅÇ Áß°£¿¡ »õ·Î¿î ÅÇÀ» »ðÀÔÇØ ³ÖÀ» ¼öµµ ÀÖ´Ù.
Á¶»ç ¹öưÀ» ´©¸£¸é ÇöÀç ¼±ÅÃµÈ ÅÇÀÇ ÅØ½ºÆ®¸¦ TabCtrl_GetItem ÇÔ¼ö·Î Á¶»çÇÏ¿© ¿¡µðÆ®·Î ´Ù½Ã Ãâ·ÂÇØ ÁÖ¸ç º¯°æ ¹öưÀº TabCtrl_SetItem ÇÔ¼ö·Î ¼±ÅÃÅÇÀÇ ÅØ½ºÆ®¸¦ º¯°æÇÏ¿´´Ù. ³ª¸ÓÁö µÎ °³ÀÇ ¹öưÀº ÁöÁ¤ÇÑ ÅÇ, ¶Ç´Â Àüü ÅÇÀ» »èÁ¦ÇÑ´Ù. ÅÇ ÄÁÆ®·ÑÀÇ ÅÇÀ» °ü¸®ÇÏ´Â ¹æ¹ýÀº ¸®½ºÆ® ¹Ú½º³ª ÄÞº¸ ¹Ú½ºÀÇ Ç׸ñÀ» °ü¸®ÇÏ´Â ¹æ¹ý°ú °ÅÀÇ À¯»çÇØ¼ ÀÌ ¿¹Á¦ÀÇ Äڵ带 Çѹø ÀÐ¾î º¸±â¸¸ ÇØµµ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Â Á¤µµ´Ù.