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´Â ¾ÆÁ÷ ±×·± ÀÎÅÍÆäÀ̽º´Â Á¦°øÇÏÁö ¾Ê´Â´Ù. ´ÙÀ½ ÀåºÎÅÍ È£½ºÆ®¸¦ À§ÇÑ ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º¸¦ ÀÛ¼ºÇÏ°Ô µÉ °ÍÀÌ´Ù.