¶ó. ÄÁÆ®·Ñ °ËÁõ

ApiEdit°¡ °ú¿¬ Á¦´ë·Î ÄÁÆ®·ÑÀÌ µÇ¾ú´ÂÁö °£´ÜÇÑ È£½ºÆ® ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¾î¼­ Å×½ºÆ®Çغ¸µµ·Ï ÇÏÀÚ. ¿©±â¼­ ¸¸µé¾î º¼ Å×½ºÆ® ÇÁ·ÎÁ§Æ®´Â ³í¼ú °í»ç ÇÁ·Î±×·¥Àε¥ ¼­·Ð, º»·Ð, °á·Ð ¼¼ °³ÀÇ ÅؽºÆ® Çʵ带 °¡Áø´Ù. ÄÁÆ®·ÑÀÌ Àß ¸¸µé¾îÁö°í ¶Ç ¼­·Î ¹æÇؾøÀÌ Àß µ¿ÀÛÇÏ´ÂÁö¸¸ Å×½ºÆ®ÇØ º¼ °ÍÀÌ´Ù.

NonSoolÀ̶ó´Â À̸§À¸·Î ºó ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù. ApiEdit.cpp, ApiEdit.h, *.cur ÆÄÀÏÀ» ÀÌ ÇÁ·ÎÁ§Æ®·Î º¹»çÇØ ¿À°í ¼Ò½ºÆÄÀÏÀº ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃŲ´Ù. imm32.libµµ ¹°·Ð ¸µÅ©½ÃÄÑ¾ß ÇÑ´Ù. NonSool.rc ÆÄÀÏÀ» Ãß°¡ÇÏ°í ´ëÈ­»óÀÚ¸¦ ¸¸µé¾î ´ÙÀ½°ú °°ÀÌ µðÀÚÀÎÇÏ¿´´Ù.

¼¼ °³ÀÇ ½ºÅÂƽ ÄÁÆ®·ÑÀ» ¹èÄ¡Çߴµ¥ °¢°¢ IDC_S1, IDC_S2, IDC_S3·Î ID¸¦ ÁÖ¾úÀ¸¸ç IDOK ¹öÆ°ÀÇ Ä¸¼ÇÀº ¡®´Ý±â¡¯·Î º¯°æÇÏ¿´´Ù. ÄÁÆ®·ÑÀÇ À§Ä¡´Â ½ÇÇàÁß¿¡ Á¶Á¤µÇ¹Ç·Î ¾Æ¹« °÷¿¡³ª µÎ¾îµµ »ó°ü¾ø´Ù. ´ëÈ­»óÀÚÀÇ Ä¸¼ÇÀº ¡®³í¼ú °í»ç¡¯·Î ¹Ù²Ù°í ´ëÈ­»óÀÚÀÇ ½ºÅ¸ÀÏÀ» ¾à°£ Á¶Á¤ÇÑ´Ù. ¿À¹ö·¦µå ÇüÅ·Π¸¸µé¾î Å©±â Á¶Á¤ÀÌ °¡´ÉÇϵµ·Ï ÇßÀ¸¸ç WS_CLIPCHILDREN ½ºÅ¸ÀÏÀ» ÁÖ¾î Â÷ÀÏµå ¿µ¿ªÀº ±×¸®±â¿¡¼­ Á¦¿ÜÇÏ¿´´Ù.

Ä¿¼­ ¸®¼Ò½º¸¦ Ãß°¡Çϱâ À§ÇØ RC ÆÄÀÏÀ» ¿­¾î ¼¼ °³ÀÇ Ä¿¼­ Á¤Àǹ®À» º¹»çÇØ ºÙÀδÙ. NonSool.cpp´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.

 

#include <windows.h>

#include "resource.h"

#include "ApiEdit.h"

 

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

HINSTANCE g_hInst;

HWND hDlgMain;

CApiEdit h1, h2, h3;

 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance

     ,LPSTR lpszCmdParam,int nCmdShow)

{

     g_hInst=hInstance;

    

     DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), HWND_DESKTOP, MainDlgProc);

    

     return 0;

}

 

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

{

     switch(iMessage)

     {

     case WM_INITDIALOG:

          hDlgMain = hDlg;

          h1.Create(0,0,0,0,WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,100,hDlg);

          h2.Create(0,0,0,0,WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,101,hDlg);

          h3.Create(0,0,0,0,WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,102,hDlg);

          SetFocus(h1.hWnd);

          return FALSE;

     case WM_SIZE:

          int gap;

          gap=(HIWORD(lParam)-40)/3;

 

          MoveWindow(GetDlgItem(hDlg,IDC_S1),10,10,80,20,TRUE);

          MoveWindow(h1.hWnd,100,10,LOWORD(lParam)-110,gap-5,TRUE);

 

          MoveWindow(GetDlgItem(hDlg,IDC_S2),10,10+gap,80,20,TRUE);

          MoveWindow(h2.hWnd,100,10+gap,LOWORD(lParam)-110,gap-5,TRUE);

 

          MoveWindow(GetDlgItem(hDlg,IDC_S3),10,10+gap*2,80,20,TRUE);

          MoveWindow(h3.hWnd,100,10+gap*2,LOWORD(lParam)-110,gap-5,TRUE);

 

          MoveWindow(GetDlgItem(hDlg,IDOK),LOWORD(lParam)-100,HIWORD(lParam)-30,90,25,TRUE);

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam))

          {

          case IDOK:

          case IDCANCEL:

              EndDialog(hDlg,0);

              return TRUE;

          }

          return FALSE;

     }

     return FALSE;

}

 

¼¼ °³ÀÇ ApiEdit¸¦ »ý¼ºÇÏ¿© WM_CREATE¿¡¼­ ¼¼ °³ÀÇ ApiEdit À©µµ¿ì¸¦ ¸¸µé¾úÀ¸¸ç ù ¹ø° ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º¸¦ ÁÖ¾ú´Ù. WM_SIZE¿¡¼­ ÄÁÆ®·ÑÀÇ À§Ä¡¸¦ Àû´çÈ÷ ¹èÄ¡ÇϹǷΠ»ý¼ºÇÒ ¶§ÀÇ À§Ä¡¿Í Å©±â´Â ¸ðµÎ 0À¸·Î Á൵ »ó°ü¾ø´Ù. ½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù.

º° ÀÌ»ó¾øÀÌ ÇÁ·ÎÁ§Æ®°¡ ¸¸µé¾îÁ³À¸¸ç ApiEdit´Â µ¶¸³µÈ ÄÁÆ®·Ñ·Î Àß µ¿ÀÛÇÑ´Ù. ÅÇÅ°·Î ÄÁÆ®·Ñ »çÀ̸¦ À̵¿Çϵµ·Ï ÇÏ°í ½ÍÀ¸¸é CApiEdit::OnCreate¿¡¼­ bWantTabÀ» FALSE·Î º¯°æÇÏ¸é µÈ´Ù. ½ÇÇàÁß¿¡ ÀÌ ¼Ó¼ºÀ» º¯°æÇÒ ¼ö ÀÖ¾î¾ß Çϴµ¥ ApiEdit´Â ¾ÆÁ÷ ±×·± ÀÎÅÍÆäÀ̽º´Â Á¦°øÇÏÁö ¾Ê´Â´Ù. ´ÙÀ½ ÀåºÎÅÍ È£½ºÆ®¸¦ À§ÇÑ ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º¸¦ ÀÛ¼ºÇÏ°Ô µÉ °ÍÀÌ´Ù.