¶ó. ÅÇ ´ëÈ­»óÀÚ

À̹ø¿¡´Â ¹ÙÅÁÈ­¸é µî·Ï Á¤º¸ À©µµ¿ìó·³ ÅÇ ÄÁÆ®·Ñ¾È¿¡ ´ëÈ­»óÀÚ¸¦ ³Ö¾î ÅÇ ÆäÀÌÁö¸¦ ¸¸µé¾î º¸ÀÚ. ´ëÈ­»óÀÚ´Â ¸®¼Ò½º ÆíÁý±â·Î ½±°Ô ÄÁÆ®·ÑÀ» ¹èÄ¡ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÅÇ ÄÁÆ®·Ñ°ú ÇÔ²² »ç¿ëÇÏ¸é ¾ÆÁÖ ¸¹Àº ¿É¼ÇµéÀ» ±×·ìº°·Î ³ª´©¾î ÀԷ¹ÞÀ» ¼ö ÀÖÀ¸¸ç ÆäÀÌÁö ´ÜÀ§·Î ºü¸£°Ô ÀüȯÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡µµ ÀÖ´Ù.

¿©±â¼­ ÇѰ¡Áö ºÐ¸íÈ÷ ÇØ µÑ °ÍÀº ÅÇ ÄÁÆ®·ÑÀº ÆäÀÌÁö °ü¸®¿¡ ´ëÇØ¼­´Â ¾î¶°ÇÑ ±â´Éµµ Á¦°øÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. ´ëÈ­»óÀÚ¸¦ ¹èÄ¡ÇÒ ¼ö ÀÖ´Â ³Ð´Ù¶õ Ç¥½Ã ¿µ¿ªÀ» Á¦°øÇÒ »ÓÀÌÁö ÅÇÀ» ¹Ù²Û´Ù°í ÇØ¼­ ÆäÀÌÁö¸¦ °°ÀÌ ¹Ù²Ù¾î Áشٰųª ´ëÈ­»óÀÚ ÀÚü¸¦ ÅÇÀÇ Â÷Àϵå·Î µÑ ¼ö ÀÖ´Â °Íµµ ¾Æ´Ï´Ù. ´Ù¸¸ ÅÇÀº ¼±ÅÃÀÌ ¹Ù²î¾úÀ» ¶§ ºÎ¸ð À©µµ¿ì·Î TCN_SELCHANGE ÅëÁö ¸Þ½ÃÁö¸¦ º¸³» ÁÖ¾î ÆäÀÌÁö¸¦ ±³Ã¼ÇØ¾ß ÇÒ ½ÃÁ¡À» ¾Ë·Á Áֱ⸸ ÇÒ »ÓÀÌ¸ç ´ëÈ­»óÀÚ¸¦ °ü¸®ÇÏ´Â ¸ðµç ÀÛ¾÷Àº ÅÇ ÄÁÆ®·ÑÀÇ ºÎ¸ð À©µµ¿ì°¡ ÇØ¾ß ÇÑ´Ù.

¸ÕÀú ÆäÀÌÁö¸¦ ±¸¼ºÇÒ ´ëÈ­»óÀÚ¸¦ ¸®¼Ò½º¿¡ ÀÛ¼ºÇÑ´Ù. ÀÌ ´ëÈ­»óÀÚµéÀº ÅÇÀÇ Ç¥½Ã ¿µ¿ª¾È¿¡ ³ªÅ¸³ª¾ß ÇϹǷΠŸÀÌÆ² ¹Ù¿Í °æ°è¼±À» °¡ÁöÁö ¾Ê¾Æ¾ß ÇÏ¸ç ¹Ýµå½Ã WS_CHILD ½ºÅ¸ÀÏÀ» ÁÖ¾î¾ß ÇÑ´Ù. ÇÊ¿äÇÑ ÆäÀÌÁö ¼ö¸¸Å­ ´ëÈ­»óÀÚ¸¦ ¸¸µé ¼ö ÀÖÀ¸¸ç Å©±â´Â °¡±ÞÀûÀÌ¸é µ¿ÀÏÇÑ °ÍÀÌ ÁÁÀ¸³ª ½ÇÇàÁß¿¡ ÃÖ´ë Å©±â¿¡ ¸ÂÃâ ¼ö ÀÖÀ¸¹Ç·Î ²À ±×·² ÇÊ¿ä´Â ¾ø´Ù. ´ëÈ­»óÀھȿ¡ ÄÁÆ®·ÑÀº ÇÊ¿äÇѸ¸Å­ ¿øÇϴ´ë·Î ¹èÄ¡ÇÒ ¼ö ÀÖ´Ù.

 

¸ÞÀÎ À©µµ¿ì´Â ÀÌ ´ëÈ­»óÀÚµé Áß ÃÖ´ë Å©±â¸¸Å­ ÅÇ ÄÁÆ®·ÑÀÇ Ç¥½Ã ¿µ¿ªÀ» ¼³Á¤Çϰí Åǰú ´ëÀÀµÇ´Â ´ëÈ­»óÀÚ¸¦ ¸ðµ¨¸®½º·Î »ý¼ºÇÏ¿© Ç¥½Ã ¿µ¿ª¿¡ º¸¿© ÁÖ¸é µÈ´Ù. °¢ ÆäÀÌÁö¾È¿¡¼­ ÀϾ´Â ÀÏÀº ¹°·Ð °³º° ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀú¿¡¼­ ó¸®ÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â µÎ °³ÀÇ ÆäÀÌÁö¸¦ °¡Áö´Â ÅÇ ÄÁÆ®·ÑÀ» »ý¼ºÇÑ´Ù. À̹ø¿¡´Â WinMain±îÁö Àüü ¼Ò½º¸¦ º¸¿´´Ù.

 

#include <windows.h>

 

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

BOOL CALLBACK Dlg1Proc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);

BOOL CALLBACK Dlg2Proc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);

HINSTANCE g_hInst;

HWND hWndMain;

LPCTSTR lpszClass=TEXT("TabDlg");

 

#include <commctrl.h>

#include "resource.h"

HWND hTab;

HWND hTabDlg;

 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance

     ,LPSTR lpszCmdParam,int nCmdShow)

{

   HWND hWnd;

   MSG Message;

   WNDCLASS WndClass;

   g_hInst=hInstance;

  

   WndClass.cbClsExtra=0;

   WndClass.cbWndExtra=0;

   WndClass.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);

   WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);

   WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

   WndClass.hInstance=hInstance;

   WndClass.lpfnWndProc=(WNDPROC)WndProc;

   WndClass.lpszClassName=lpszClass;

   WndClass.lpszMenuName=NULL;

   WndClass.style=CS_HREDRAW | CS_VREDRAW;

   RegisterClass(&WndClass);

 

   hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS,

      CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,

      NULL,(HMENU)NULL,hInstance,NULL);

   ShowWindow(hWnd,nCmdShow);

  

   while(GetMessage(&Message,0,0,0)) {

      if (!IsWindow(hTabDlg) || !IsDialogMessage(hTabDlg,&Message)) {

          TranslateMessage(&Message);

          DispatchMessage(&Message);

      }

   }

   return (int)Message.wParam;

}

 

typedef struct { 

  WORD      dlgVer;

  WORD      signature;

  DWORD     helpID;

  DWORD     exStyle;

  DWORD     style;

  WORD      cDlgItems;

  short     x;

  short     y;

  short     cx;

  short     cy;

//  sz_Or_Ord menu;

//  sz_Or_Ord windowClass;

//  WCHAR     title[titleLen];

//  WORD     pointsize;

//  WORD     weight;

//  BYTE     italic;

//  BYTE     charset;

//  WCHAR    typeface[stringLen]; 

} DLGTEMPLATEEX;

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

   TCITEM tie;

   int Sel;

   HRSRC hRc;

   HGLOBAL hGlb;

   DLGTEMPLATEEX *dTem;

   RECT trt={0,0,0,0};

 

   switch(iMessage) {

   case WM_CREATE:

      hWndMain=hWnd;

      InitCommonControls();

 

      hTab=CreateWindow(WC_TABCONTROL,"",WS_CHILD | WS_VISIBLE

          | WS_CLIPSIBLINGS,

          0,0,0,0,hWnd,(HMENU)0,g_hInst,NULL);

 

      tie.mask=TCIF_TEXT;

      tie.pszText="one";

      TabCtrl_InsertItem(hTab,0,&tie);

      tie.pszText="two";

      TabCtrl_InsertItem(hTab,1,&tie);

 

      // ù¹øÂ° ´ëÈ­»óÀÚÀÇ Å©±â ±¸ÇÔ

      hRc=FindResource(NULL,MAKEINTRESOURCE(IDD_DIALOG1),RT_DIALOG);

      hGlb=LoadResource(NULL,hRc);

      dTem=(DLGTEMPLATEEX *)LockResource(hGlb);

      trt.right=dTem->cx;

      trt.bottom=dTem->cy;

 

      // µÎ¹øÂ° ´ëÈ­»óÀÚÀÇ Å©±â ±¸ÇÏ°í µÑ Áß Å« °ªÀ» ÃëÇÔ

      hRc=FindResource(NULL,MAKEINTRESOURCE(IDD_DIALOG2),RT_DIALOG);

      hGlb=LoadResource(NULL,hRc);

      dTem=(DLGTEMPLATEEX *)LockResource(hGlb);

      trt.right=max(trt.right,dTem->cx);

      trt.bottom=max(trt.bottom,dTem->cy);

 

      // ´ëÈ­»óÀÚ ´ÜÀ§¸¦ Çȼ¿ ´ÜÀ§·Î ¹Ù²Û´Ù.

      hTabDlg=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,Dlg1Proc);

      MapDialogRect(hTabDlg,&trt);

      DestroyWindow(hTabDlg);

 

      // Ç¥½Ã ¿µ¿ªÀ» À©µµ¿ì Å©±â·Î ¹Ù²Û´Ù.

      TabCtrl_AdjustRect(hTab,TRUE,&trt);

 

      // À©µµ¿ì ÁÂÇ¥¸¦ ¿øÁ¡À¸·Î ¿Å±ä´Ù.

      OffsetRect(&trt,-trt.left,-trt.top);

 

      // °è»êµÈ Å©±â¸¸Å­ ÅÇ ÄÁÆ®·Ñ Å©±â º¯°æ

      SetWindowPos(hTab,NULL,trt.left,trt.top,trt.right,trt.bottom,SWP_NOZORDER);

 

      hTabDlg=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,Dlg1Proc);

      return 0;

   case WM_NOTIFY:

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

      case TCN_SELCHANGE:

          if (hTabDlg) {

             DestroyWindow(hTabDlg);

          }

          Sel=TabCtrl_GetCurSel(hTab);

          if (Sel==0) {

             hTabDlg=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,Dlg1Proc);

          } else {

             hTabDlg=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,Dlg2Proc);

          }

          break;

      }

      return 0;

   case WM_DESTROY:

      PostQuitMessage(0);

      return 0;

   }

   return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

// ´ëÈ­»óÀÚ´Â ¹Ýµå½Ã Â÷ÀÏµå ½ºÅ¸ÀÏÀ̾î¾ß ÇÏ¸ç °æ°è¼±À» °¡ÁöÁö ¾Ê´Â´Ù.

BOOL CALLBACK Dlg1Proc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

   RECT prt;

   switch(iMessage)

   {

   case WM_INITDIALOG:

      // ÅÇÀÇ Ç¥½Ã ¿µ¿ª »ó´ÜÀ¸·Î À̵¿Çϸç ÇüÁ¦Áß¿¡ Á¦ÀÏ À§·Î ¿Ã¶ó°£´Ù.

      GetWindowRect(hTab,&prt);

      TabCtrl_AdjustRect(hTab,FALSE,&prt);

      ScreenToClient(hWndMain,(LPPOINT)&prt);

      SetWindowPos(hDlg,HWND_TOP,prt.left,prt.top,0,0,SWP_NOSIZE);

      SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"Â¥Àå¸é");

      SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"ÅÁ¼öÀ°");

      SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"°¥ºñÅÁ");

      SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"À°°èÀå");

      SendDlgItemMessage(hDlg,IDC_COMBO1,CB_SETCURSEL,0,0);

      return TRUE;

   // EndDialog¸¦ È£ÃâÇÒ Çʿ䰡 ¾ø´Ù.

   case WM_COMMAND:

      switch (LOWORD(wParam))  {

      case IDC_BUTTON1:

          MessageBox(hDlg,"¹öưÀ» ´­·¶½À´Ï´Ù","¾Ë¸²",MB_OK);

          return TRUE;

      }

      return FALSE;

   }

   return FALSE;

}

 

BOOL CALLBACK Dlg2Proc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

   RECT prt;

   switch(iMessage)

   {

   case WM_INITDIALOG:

      SetWindowPos(hDlg,HWND_TOP,100,100,0,0,SWP_NOSIZE);

      GetWindowRect(hTab,&prt);

      TabCtrl_AdjustRect(hTab,FALSE,&prt);

      ScreenToClient(hWndMain,(LPPOINT)&prt);

      SetWindowPos(hDlg,HWND_TOP,prt.left,prt.top,0,0,SWP_NOSIZE);

      SetWindowText(GetDlgItem(hDlg,IDC_EDIT1),"¿¡µðÆ® ÄÁÆ®·ÑÀÌ´Ù");

      return TRUE;

   }

   return FALSE;

}

 

µÎ °³ÀÇ Àü¿ª º¯¼ö°¡ ¼±¾ðµÇ¾î Àִµ¥ hTabÀº ÅÇ ÄÁÆ®·ÑÀ̰í hTabDlg´Â ÇöÀç º¸ÀÌ´Â ÆäÀÌÁöÀÇ ´ëÈ­»óÀÚ ÇÚµéÀÌ´Ù. ÅÇ ÆäÀÌÁö¸¦ ¸¸µå´Â ¸ðµç ÄÚµå´Â WM_CREATE¿¡ ÀÖÀ¸¹Ç·Î ÀÌ Äڵ带 ºÐ¼®ÇØ º¸µµ·Ï ÇÏÀÚ.

WM_CREATE¿¡¼­ ÇØ¾ßÇÒ °¡Àå Áß¿äÇÑ ÀÏÀº ÅÇ ÄÁÆ®·ÑÀÇ Å©±â¸¦ °áÁ¤ÇÏ´Â °ÍÀÌ´Ù. ÅÇ ÄÁÆ®·ÑÀº Æ÷ÇÔÇÒ ´ëÈ­»óÀÚ¸¦ ÃæºÐÈ÷ Ç¥½ÃÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ Ç¥½Ã ¿µ¿ªÀ» °¡Á®¾ß ÇÑ´Ù. À̶§ Ç¥½Ã ¿µ¿ªÀ̶õ ÅÇ ÄÁÆ®·Ñ¿¡¼­ ÅÇÀÌ Ãâ·ÂµÇ´Â ºÎºÐ°ú °æ°è¼±À» Á¦¿ÜÇÑ ¿µ¿ªÀ̸ç ÅÇ ÄÁÆ®·Ñ ÀÚüÀÇ Å©±âº¸´Ù´Â ´õ Á¼´Ù. Ç¥½Ã ¿µ¿ª°ú ÅÇ ÄÁÆ®·Ñ À©µµ¿ìÀÇ Å©±â´Â ´ÙÀ½ ÇÔ¼ö·Î °è»êÇÑ´Ù.

 

VOID TabCtrl_AdjustRect( HWND hwnd, BOOL fLarger, RECT FAR *prc);

 

fLarge°¡ TRUEÀ̸é prc¿¡ ÁÖ¾îÁø Ç¥½Ã ¿µ¿ªÀ¸·ÎºÎÅÍ ÇÊ¿äÇÑ À©µµ¿ì Å©±â¸¦ ±¸Çϰí fLarge°¡ FALSEÀÌ¸é ¹Ý´ë·Î À©µµ¿ì Å©±â·ÎºÎÅÍ Ç¥½Ã ¿µ¿ª Å©±â¸¦ ±¸ÇÑ´Ù. ´ëÈ­»óÀÚÀÇ Å©±â°¡ 400*300À̶ó¸é ÀÌ Å©±â¿¡ ÅÇÀÌ Ãâ·ÂµÉ ³ôÀÌ ¹× °æ°è¼±ÀÇ µÎ²²¸¦ ´õÇÏ¿© À©µµ¿ì Å©±â¸¦ °è»êÇÒ ¼ö ÀÖÀ¸¸ç ¹Ý´ë·Î À©µµ¿ì°¡ 500*400ÀÏ ¶§ Ç¥½Ã ¿µ¿ªÀº ¾ó¸¶³ª µÇ´ÂÁö¸¦ °è»êÇÒ ¼ö ÀÖ´Ù. ÀÌ °è»ê¿¡´Â ½Ã½ºÅÛ¿¡ Á¤ÀÇµÈ °æ°è¼±ÀÇ µÎ²², ÅÇ ÄÁÆ®·Ñ¿¡ ÁöÁ¤µÈ ÆùÆ®ÀÇ Å©±â µî ¸¹Àº ¿ä¼ÒµéÀÌ ÂüÁ¶µÉ °ÍÀÌ´Ù.

¸®¼Ò½º¿¡ Á¤ÀǵǾî ÀÖ´Â ´ëÈ­»óÀÚÀÇ Å©±â¸¦ ±¸Çϱâ À§Çؼ­´Â ´ëÈ­»óÀÚ ÅÛÇø®Æ®¸¦ Á÷Á¢ Àоî ÅÛÇø®Æ®ÀÇ cx, cy¸¦ Á¶»çÇØ¾ß ÇÑ´Ù. ºñÁÖ¾ó C++ 6.0ÀÌ»óÀº ´ëÈ­»óÀÚ ÅÛÇø®Æ®¸¦ DLGTEMPLATEEX ±¸Á¶Ã¼·Î ÀÛ¼ºÇϴµ¥ ÀÌ ±¸Á¶Ã¼´Â Ç¥ÁØ Çì´õ ÆÄÀÏ¿¡´Â Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î ÇÊ¿äÇÒ ¶§ Á÷Á¢ ¼±¾ðÇÑ ÈÄ »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â cx, cy°ª¸¸ ¾Ë¸é µÇ¹Ç·Î ³ª¸ÓÁö ¸â¹ö´Â ÁÖ¼® ó¸®ÇÏ¿´´Ù. ÀÌ ¸â¹ö±îÁö Æ÷ÇÔÇÏ·Á¸é ¿©ºÐÀÇ Çì´õ±îÁö Æ÷ÇÔ½ÃÄÑ¾ß ÇϹǷΠ¿©·¯ ¸ð·Î ±ÍÂú¾ÆÁø´Ù.

ÅÛÇø®Æ®¿¡¼­ ´ëÈ­»óÀÚÀÇ Æø°ú ³ôÀ̸¦ ±¸ÇÑ ÈÄ ÀÌ Áß °¡Àå Å« °ªÀ» ÃëÇÏ¿© °¡Àå Å« ´ëÈ­»óÀÚ°¡ Ç¥½ÃµÉ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù. ´ëÈ­»óÀÚÀÇ Å©±â ´ÜÀ§´Â DLU·Î µÇ¾î ÀÖÀ¸¹Ç·Î MapDialogRect ÇÔ¼ö·Î Çȼ¿°ªÀ¸·Î ¹Ù²Ù¾î¾ß ÇÏ¸ç ´ëÈ­»óÀÚÀÇ ½ÇÁ¦ ±Û²ÃÀ» ÂüÁ¶ÇØ¾ß ÇϹǷΠÀÏ´Ü ´ëÈ­»óÀÚ¸¦ ¸ÕÀú ¸¸µç ÈÄ °è»êÇÏ°í ´Ù½Ã ÆÄ±«ÇÏ¿´´Ù. ÀÌ °è»ê ¹æ¹ý¿¡ ´ëÇØ¼­´Â 13Àå¿¡¼­ ÀÚ¼¼ÇÏ°Ô ´Ù·é ¹Ù ÀÖÀ¸¹Ç·Î ÂüÁ¶Çϱ⠹ٶõ´Ù.

´ëÈ­»óÀÚÀÇ ÃÖ´ë Å©±â¸¦ Çȼ¿°ªÀ¸·Î Á¶»çÇßÀ¸¸é ÀÌ ´ëÈ­»óÀÚ°¡ µé¾î°¥¸¸ÇÑ Ç¥½Ã ¿µ¿ªÀ» °¡Áö´Â ÅÇ ÄÁÆ®·Ñ À©µµ¿ìÀÇ Å©±â¸¦ TabCtrl_AdjustRect ÇÔ¼ö·Î °è»êÇÑ´Ù. ¿¹¸¦ µé¾î ÃÖ´ë ´ëÈ­»óÀÚÀÇ Å©±â°¡ 250*200À̾ú´Ù¸é ÀÌ ´ëÈ­»óÀÚ¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ´Â ÅÇ ÄÁÆ®·ÑÀº 254*225 Á¤µµ°¡ µÉ °ÍÀÌ´Ù. ÀÌ·¸°Ô °è»êµÈ Å©±â·Î ÅÇ ÄÁÆ®·ÑÀÇ Å©±â¿Í À§Ä¡¸¦ º¯°æÇÏ¿´À¸¸ç ù¹øÂ° ÆäÀÌÁöÀÇ ´ëÈ­»óÀÚ¸¦ CreateDialog ÇÔ¼ö·Î »ý¼ºÇÏ¿´´Ù. ¿©±â±îÁö ÃʱâÈ­°¡ ¿Ï·áµÇ¸é ´ÙÀ½°ú °°Àº ¸ð½ÀÀ¸·Î ½ÇÇàµÈ´Ù.

µÎ °³ÀÇ ÆäÀÌÁö¸¦ °¡Áö´Â ÅÇ ÄÁÆ®·ÑÀÌ »ý¼ºµÇ¾î ÀÖ°í ÅÇÀÇ Ç¥½Ã ¿µ¿ª¿¡ ù¹øÂ° ´ëÈ­»óÀÚ°¡ ¸ðµ¨¸®½ºÇüÀ¸·Î »ý¼ºµÇ¾î ÀÖ´Ù. ¸¶Ä¡ ÅÇ ÄÁÆ®·Ñ¾È¿¡ ´ëÈ­»óÀÚ°¡ Æ÷ÇԵǾî ÀÖ´Â °Íó·³ º¸ÀÌÁö¸¸ »ç½Ç Åǰú ´ëÈ­»óÀÚ´Â ÇüÁ¦ÀÌÁö ºÎ¸ð ÀÚ½Ä °ü°è°¡ ¾Æ´Ï¸ç µÑ ´Ù ¸ÞÀÎ À©µµ¿ìÀÇ ÅëÁ¦¸¦ ¹Þ´Â´Ù. ´ëÈ­»óÀÚ´Â ÀڽŸ¸ÀÇ ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀú¸¦ °¡Áö°í ÀÖ¾î ¹öư, ÄÞº¸ ¹Ú½ºµé·ÎºÎÅÍ Àü´ÞµÇ´Â ÅëÁö ¸Þ½ÃÁö¸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù.

Â÷Àϵå·Î »ý¼ºµÈ ´ëÈ­»óÀÚÀ̹ǷΠ¾î¶² ÀÏÀÌ ÀÖ´õ¶óµµ EndDialog¸¦ È£ÃâÇØ¼­´Â ¾ÈµÈ´Ù. ¸ÞÀÎ ¸Þ½ÃÁö ·çÇÁ¿¡´Â IsDialogMessage°¡ Æ÷ÇԵǾî ÀÖ¾î Â÷Àϵå·Î »ý¼ºµÈ ¸ðµ¨¸®½º ´ëÈ­»óÀÚÀÇ ¸Þ½ÃÁö¸¦ ó¸®ÇØ ÁֹǷΠ´ëÈ­»óÀÚ³»¿¡¼­ Tab۸¦ ´­·¯ ÄÁÆ®·Ñ°£ÀÇ Æ÷Ä¿½º¸¦ À̵¿ÇÒ ¼ö ÀÖÀ¸¸ç µðÆúÆ® ¹öưÀ̳ª Ãë¼Ò ¹öưÀÌ Á¦´ë·Î µ¿ÀÛµÉ °ÍÀÌ´Ù.

´ÙÀ½Àº ÅÇÀÇ ¼±ÅÃÀÌ º¯°æµÉ ¶§, Áï one ÆäÀÌÁö¿¡¼­ two ÆäÀÌÁö¸¦ ¼±ÅÃÇÒ ¶§ ¾î¶² ÀÏÀÌ ÀϾ´ÂÁö º¸ÀÚ. À̶§ ÅÇ ÄÁÆ®·ÑÀÇ ºÎ¸ðÀÎ ¸ÞÀÎ À©µµ¿ì·Î TCS_SELCHANGE ÅëÁö ¸Þ½ÃÁö°¡ Àü´ÞµÇ´Âµ¥ ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ Â÷Àϵå·Î »ý¼ºµÇ¾î ÀÖ´Â ¸ðµ¨¸®½º ´ëÈ­»óÀÚ¸¦ ±³Ã¼ÇÑ´Ù. ±³Ã¼ÇÏ´Â ¹æ¹ýÀº ¾ÆÁÖ ¿ø·ÐÀûÀε¥ ±âÁ¸¿¡ ¸¸µé¾îÁ® ÀÖ´Â ´ëÈ­»óÀÚ¸¦ DestroyWindow ÇÔ¼ö·Î ÆÄ±«ÇÏ°í »õ·Î¿î ´ëÈ­»óÀÚ¸¦ ´Ù½Ã »ý¼ºÇÏ¸é µÈ´Ù. ´ÙÀ½Àº µÎ¹øÂ° ÆäÀÌÁö°¡ Ȱ¼ºÈ­µÈ ¸ð½ÀÀÌ´Ù.

°¢ ´ëÈ­»óÀÚÀÇ WM_INITDIALOG¿¡¼­´Â ÀÚ½ÅÀ» ÇüÁ¦ Áß Á¦ÀÏ À§ÂÊÀ¸·Î ¿Å°ÜÁÖ´Â Äڵ尡 ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ÅÇÀÇ Ç¥½Ã ¿µ¿ª¿¡ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª¾ß Çϴµ¥ ÅÇ¿¡ ÀÇÇØ ´ëÈ­»óÀÚ°¡ °¡·ÁÁ®¼­´Â ¾ÈµÇ±â ¶§¹®ÀÌ´Ù. ¿©·¯¹ø °­Á¶ÇÏÁö¸¸ Åǰú ´ëÈ­»óÀÚ´Â ÇüÁ¦ °ü°èÀÌ¸ç ¿î¿µÃ¼Á¦´Â ÇüÁ¦°£ÀÇ °ãħ¿¡ ´ëÇØ¼­´Â ¾î¶°ÇÑ Ã³¸®µµ ÇÏÁö ¾ÊÀ¸¹Ç·Î ÀÚ½ÅÀÌ Á÷Á¢ À§·Î ¿Ã¶ó¿À´Â ¼ö¹Û¿¡ ¾ø´Ù.

ÅÇ ÄÁÆ®·ÑÀÇ one, two ÅÇÀ» ´­·¯ º¸¸é ÆäÀÌÁö°¡ ºü¸¥ ¼Óµµ·Î ±³Ã¼µÉ °ÍÀÌ´Ù. ÀÌ ¿¹Á¦´Â µÎ °³ÀÇ ÆäÀÌÁö¸¸ ±³Ã¼ÇØ º¸¾Ò°í ´ëÈ­»óÀÚ°¡ À¯¿ëÇÑ µ¿ÀÛÀ» ÇÏÁö´Â ¾ÊÁö¸¸ ¼ö½Ê°³ÀÇ ÆäÀÌÁö¸¦ °¡Áø ÅÇ ÆäÀÌÁö¸¦ ¸¸µé´õ¶óµµ ¹æ¹ýÀº µ¿ÀÏÇÏ´Ù. ÀÌ ¿¹Á¦´Â »ç½Ç ÅÇ ÄÁÆ®·Ñ¿¡ °ü·ÃµÈ ±â¼úº¸´Ù´Â ´ëÈ­»óÀÚ¸¦ ´Ù·ç´Â ±â¼úÀÌ ´õ ÇÊ¿äÇÑ ¿¹Á¦¶ó ÇÒ ¼ö ÀÖ´Ù.

ÅÇ ÄÁÆ®·ÑÀ» »ç¿ëÇϸé ÀÌ·± ½ÄÀ¸·Î ÆäÀÌÁö¸¦ °ãÃļ­ Ç¥½ÃÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» º¸¿´´Âµ¥ ÄÁÆ®·ÑÀÇ Áö¿øÀÌ ¹Ì¾àÇÏ¿© ´Ù¼Ò ½Ç¸Á½º·´´Ù°í ´À²¸ÁöÁö ¾ÊÀº°¡? ÅÇÀÌ ´ëÈ­»óÀÚ¸¦ Â÷Àϵå·Î °¡Áö°í ÅÇ ¼±ÅÃÀ» º¯°æÇϸé Á÷Á¢ ÆäÀÌÁö¸¦ ±³Ã¼ÇØ Áشٸé ÁÁÀ» °ÍÀÌ´Ù. ¶ÇÇÑ Â÷Àϵå·Î Æ÷ÇÔµÈ ´ëÈ­»óÀÚÀÇ ÃÖ´ë Å©±â¸¦ ÀÚµ¿À¸·Î °è»êÇØ ÁÖ°í Ȱ¼ºÈ­µÈ ÆäÀÌÁö¸¦ À§·Î ¿Ã·Á ÁÖ´Â ¼­ºñ½º¸¦ ÇØ ÁØ´Ù¸é ¹«Ã´ ÆíÇÒ °Í °°´Ù.

¿©·¯ºÐµéÀÌ ÀÌ·± »ý°¢À» ÇÑ´Ù¸é ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®µµ ´ç¿¬È÷ ±×·± »ý°¢À» ÇÑ´Ù. ±×·¡¼­ ÀÌ·² ¶§ »ç¿ëÇ϶ó°í ¸¸µé¾î ³õÀº °ÍÀÌ ¹Ù·Î ÇÁ·ÎÆÛƼ ½ÃÆ®(Property Sheet)ÀÌ´Ù. ÇÁ·ÎÆÛƼ ½ÃÆ®´Â ÅÇ ÄÁÆ®·ÑÀ» Â÷Àϵå·Î °¡Áö¸ç ´ëÈ­»óÀÚ¸¦ ÀÚµ¿À¸·Î °ü¸®ÇØ ÁÖ´Â ¿©·¯ °¡Áö ¼­ºñ½º¸¦ ÇØ ÁÖ´Â °øÅë ÄÁÆ®·ÑÀÇ ÀÏÁ¾ÀÌ¸ç ¹Ù·Î ¾ÕÀý¿¡¼­ ÀÚ¼¼ÇÏ°Ô ´Ù·é ¹Ù ÀÖ´Ù. ¿©·¯ °³ÀÇ ÆäÀÌÁö¸¦ °¡Áö´Â ´ëÈ­»óÀÚ°¡ ÇÊ¿äÇÏ´Ù¸é ÇÁ·ÎÆÛƼ ½ÃÆ®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´Ù¸¸ ¿©·¯ °³ÀÇ ÆäÀÌÁö¸¦ °¡Áö´Â ´ëÈ­»óÀÚ ¹­À½ÀÌ ¿©·¯ °³ µ¿½Ã¿¡ Ç¥½ÃµÇ¾î¾ß ÇѴٰųª ÅÇ ÆäÀÌÁö ÀÚü°¡ ´ëÈ­»óÀÚÀÇ Â÷Àϵ尡 µÇ¾î¾ß ÇÒ ¶§´Â ÀÌ ¿¹Á¦Ã³·³ ÅÇ ÄÁÆ®·ÑÀ» Á÷Á¢ ´Ù·ç¾î¾ß ÇÑ´Ù.