³ª. ÅÇ °ü¸®

ÅÇ ÄÁÆ®·ÑÀ» ÇÁ·Î±×·¡¹ÖÇÒ ¶§´Â 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 ÇÔ¼ö·Î ¼±ÅÃÅÇÀÇ ÅؽºÆ®¸¦ º¯°æÇÏ¿´´Ù. ³ª¸ÓÁö µÎ °³ÀÇ ¹öÆ°Àº ÁöÁ¤ÇÑ ÅÇ, ¶Ç´Â Àüü ÅÇÀ» »èÁ¦ÇÑ´Ù. ÅÇ ÄÁÆ®·ÑÀÇ ÅÇÀ» °ü¸®ÇÏ´Â ¹æ¹ýÀº ¸®½ºÆ® ¹Ú½º³ª ÄÞº¸ ¹Ú½ºÀÇ Ç׸ñÀ» °ü¸®ÇÏ´Â ¹æ¹ý°ú °ÅÀÇ À¯»çÇؼ­ ÀÌ ¿¹Á¦ÀÇ Äڵ带 Çѹø ÀÐ¾î º¸±â¸¸ Çصµ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Â Á¤µµ´Ù.