| ¿øÇü | HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID lpParam); | ||||||||||||||||||||||||||||||||||||||||||||||||
| MFC ¿øÇü | virtual BOOL CWnd::Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); | ||||||||||||||||||||||||||||||||||||||||||||||||
| Àμö |
¢ºlpClassName : »ý¼ºÇÒ À©µµ¿ìÀÇ À©µµ¿ì Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ´Â ¹®ÀÚ¿ÀÌ´Ù. À©µµ¿ì Ŭ·¡½º´Â RegisterClass(Ex) ÇÔ¼ö·Î Á÷Á¢ µî·ÏÇÒ ¼öµµ ÀÖ°í ¶Ç´Â button, edit, listbox, static µî°ú °°ÀÌ ¹Ì¸® Á¤ÀǵǾî ÀÖ´Â ½Ã½ºÅÛ Àü¿ª Ŭ·¡½ºÀÏ ¼öµµ ÀÖ´Ù. ¶Ç´Â GlobalAddAtom ÇÔ¼ö·Î ¹Ì¸® µî·ÏÇØ ³õÀº Á¤¼öÇüÀÇ ¾ÆÅèÀ» »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ¢ºlpWindowName : À©µµ¿ìÀÇ Å¸ÀÌÆ² ¹Ù¿¡ ³ªÅ¸³¯ ĸ¼Ç ¹®ÀÚ¿ÀÌ´Ù. ĸ¼ÇÀÌ ³ªÅ¸³¯ À§Ä¡´Â À©µµ¿ì Ŭ·¡½º¿¡ µû¶ó ´Þ¶óÁö´Âµ¥ ¿À¹ö·¦µå À©µµ¿ì´Â ŸÀÌÆ² ¹Ù¿¡ ĸ¼ÇÀÌ ³ªÅ¸³ª¸ç ¹öư, ½ºÅÂÆ½ µîÀÇ ÄÁÆ®·ÑÀº ÄÁÆ®·Ñ Áß¾Ó¿¡ ĸ¼ÇÀÌ Ãâ·ÂµÈ´Ù. ¢ºdwStyle : »ý¼ºµÉ À©µµ¿ìÀÇ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÑ´Ù.
°¢ ½ºÅ¸ÀÏÀÇ ºñÆ® ¹èÄ¡´Â ´ÙÀ½°ú °°´Ù.
¢ºx, y : À©µµ¿ìÀÇ ÁÂÇ¥¸¦ ÁöÁ¤ÇÑ´Ù. ¿À¹ö·¦µå, ÆË¾÷ À©µµ¿ì´Â ȸéÀÇ ¿øÁ¡À» ±âÁØÀ¸·Î ÇÑ ÁÂÇ¥·Î ÁöÁ¤Çϸç Â÷Àϵå ÄÁÆ®·ÑÀº ºÎ¸ð À©µµ¿ìÀÇ ÀÛ¾÷ ¿µ¿ª ¿øÁ¡À» ±âÁØÀ¸·Î ÇÑ ÁÂÇ¥·Î ÁöÁ¤ÇÑ´Ù. CW_USEDEFAULT·Î ÁöÁ¤ÇÒ °æ¿ì ½Ã½ºÅÛÀÌ ÀûÀýÇÑ µðÆúÆ® À§Ä¡¿¡ À©µµ¿ì¸¦ »ý¼ºÇØ Áִµ¥ ÀÌ °ªÀº ¿À¹ö·¦µå À©µµ¿ì¿¡¸¸ Àû¿ëµÇ¸ç Â÷Àϵ峪 ÆË¾÷ À©µµ¿ì¿¡´Â Àû¿ëµÇÁö ¾Ê´Â´Ù. ¢ºnWidth, nHeight : À©µµ¿ìÀÇ ¼öÆò Å©±â¿Í ¼öÁ÷ Å©±â¸¦ ÀåÄ¡ ´ÜÀ§(Çȼ¿)·Î ÁöÁ¤ÇÑ´Ù. ¿À¹ö·¦µå À©µµ¿ìÀÇ °æ¿ì nWidth¿¡ CW_USEDEFAULT¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ °æ¿ì ½Ã½ºÅÛÀº ÀûÀýÇÑ Æø°ú ³ôÀ̸¦ µðÆúÆ®·Î ¼³Á¤ÇØ ÁØ´Ù. nWidth°¡ CW_USEDEFAULTÀÏ °æ¿ì nHeight´Â ¹«½ÃµÈ´Ù. ¢ºhWndParent : ºÎ¸ð À©µµ¿ì, ¶Ç´Â ¼ÒÀ¯ÁÖ À©µµ¿ìÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. Â÷Àϵå À©µµ¿ì´Â ºÎ¸ð ÇÚµéÀ» ¹Ýµå½Ã ÁöÁ¤ÇØ¾ß ÇÏ¸ç ÆË¾÷ À©µµ¿ì´Â ºÎ¸ð À©µµ¿ì¸¦ »ý·«ÇÒ ¼öµµ ÀÖ´Ù. NT 5.0À̻󿡼 ÀÌ Àμö¿¡ HWND_MESSAGE¸¦ ÁöÁ¤Çϰųª ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â ¸Þ½ÃÁö Àü¿ë À©µµ¿ì ÇÚµéÀ» ºÎ¸ð·Î ÁöÁ¤ÇÏ¸é ¸Þ½ÃÁö Àü¿ëÀÇ À©µµ¿ì°¡ »ý¼ºµÈ´Ù. ¢ºhMenu : ¿À¹ö·¦µå À©µµ¿ì³ª ÆË¾÷ À©µµ¿ìÀÇ °æ¿ì ¸Þ´ºÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. À©µµ¿ì Ŭ·¡½º¿¡ ¸Þ´º°¡ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» °æ¿ì ÀÌ Àμö°¡ ÁöÁ¤ÇÏ´Â ÇÚµéÀÌ »ç¿ëµÇ¸ç ¸¸¾à À©µµ¿ì Ŭ·¡½º¿Í ÀÌ Àμö¿¡ µ¿½Ã¿¡ ´Ù¸¥ ¸Þ´º°¡ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ÀÌ Àμö°¡ ÁöÁ¤ÇÏ´Â ¸Þ´º°¡ ¿ì¼±ÀûÀ¸·Î Àû¿ëµÈ´Ù. Â÷Àϵå À©µµ¿ìÀÇ °æ¿ì ÄÁÆ®·ÑÀÇ ID¸¦ ÁöÁ¤Çϴµ¥ ÀÌ ID´Â Â÷Àϵ尡 ºÎ¸ð À©µµ¿ì(ÁÖ·Î ´ëÈ»óÀÚ)¿¡°Ô ÅëÁö ¸Þ½ÃÁö¸¦ º¸³¾ ¶§ Â÷Àϵ尣ÀÇ ±¸ºÐÀ» À§ÇØ »ç¿ëÇϹǷΠ°°Àº ºÎ¸ð¿¡ ¼ÓÇÑ ÄÁÆ®·Ñ³¢¸®´Â Áߺ¹µÇ´Â ID¸¦ °¡ÁöÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ¢ºhInstance : ÀÌ À©µµ¿ì¸¦ »ý¼ºÇÏ´Â ÀνºÅϽº ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ ÀνºÅϽº°¡ Á¾·áµÉ ¶§ À©µµ¿ìµµ °°ÀÌ ÆÄ±«µÈ´Ù. ¢ºlpParam : WM_CREATE¸Þ½ÃÁöÀÇ lParamÀ¸·Î Àü´ÞµÉ CREATESTRUCT ±¸Á¶Ã¼¸¦ÀÇ Æ÷ÀÎÅÍÀÌ´Ù. MDI Ŭ¶óÀÌ¾ðÆ® À©µµ¿ì¸¦ ¸¸µé ¶§´Â CLIENTCREATESTRUCT ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇØ¾ß ÇÑ´Ù. |
||||||||||||||||||||||||||||||||||||||||||||||||
| ¸®ÅÏ | À©µµ¿ì »ý¼º¿¡ ¼º°øÇßÀ¸¸é »ý¼ºµÈ À©µµ¿ìÀÇ ÇÚµéÀ» ¸®ÅÏÇÏ¸ç ¿¡·¯ ¹ß»ý½Ã NULLÀ» ¸®ÅÏÇÑ´Ù. | ||||||||||||||||||||||||||||||||||||||||||||||||
| ¼³¸í |
À©µµ¿ì Ŭ·¡½º¿Í ÀÌ ÇÔ¼öÀÇ Àμö Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î ÇÏ¿© À©µµ¿ì¸¦ »ý¼ºÇÑ´Ù. RegisterClass ÇÔ¼ö·Î Á÷Á¢ À©µµ¿ì Ŭ·¡½º¸¦ µî·ÏÇÏ¿© ¸ÞÀÎ À©µµ¿ì¸¦ ¸¸µé ¼öµµ ÀÖÀ¸¸ç ¶Ç´Â ÀÌ¹Ì µî·ÏµÈ ÄÁÆ®·ÑÀ» »ý¼ºÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â À©µµ¿ì »ý¼º ÈÄ WM_CRETATE. WM_GETMINMAXINFO, WM_NCCREATE ¸Þ½ÃÁö¸¦ ÇØ´ç À©µµ¿ì·Î Â÷·Ê´ë·Î º¸³»ÁÖ¸ç WS_VISIBLE ½ºÅ¸ÀÏÀÌ ÁöÁ¤µÇ¾î ÀÖÀ» °æ¿ì À©µµ¿ì¸¦ º¸¿©ÁÖ°í Ȱ¼ºÈ½Ã۱â À§ÇÑ ¸ðµç µ¿ÀÛÀ» ÇÏ¸ç °ü·Ã ¸Þ½ÃÁö¸¦ º¸³»ÁØ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¸ÞÀÎ À©µµ¿ì, Â÷Àϵå À©µµ¿ì, ÆË¾÷ À©µµ¿ì¸¦ °¢°¢ »ý¼ºÇÑ´Ù.
// ÆË¾÷ À©µµ¿ìÀÇ À©µµ¿ì Ŭ·¡½º¸¦ µî·ÏÇÑ´Ù.
WndClass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);
WndClass.lpfnWndProc=(WNDPROC)WndProcPopup;
WndClass.lpszClassName="mypopup";
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
hWndMain=hWnd;
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
HWND hPopup=NULL;
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch(iMessage) {
case WM_CREATE:
CreateWindow("button","Â÷Àϵå ÄÁÆ®·Ñ",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
20,20,150,30,hWnd,(HMENU)0,g_hInst,NULL);
return 0;
case WM_LBUTTONDOWN:
if (hPopup)
return 0;
hPopup=CreateWindow("mypopup","ÆË¾÷ À©µµ¿ì",WS_POPUPWINDOW | WS_CAPTION,
100,100,320,200,hWnd,(HMENU)0,g_hInst,NULL);
ShowWindow(hPopup,SW_SHOW);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
LRESULT CALLBACK WndProcPopup(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char str[]="ÆË¾÷ À©µµ¿ìÀÔ´Ï´Ù";
switch(iMessage) {
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc,10,10,str,lstrlen(str));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
hPopup=NULL;
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
WinMain¿¡¼ ¿À¹ö·¦µå À©µµ¿ì¿Í ÆË¾÷ À©µµ¿ìÀÇ À©µµ¿ì Ŭ·¡½º¸¦ µî·ÏÇÏ¿´°í ¸ÞÀÎ À©µµ¿ì°¡ »ý¼ºµÉ ¶§ ¹öư Â÷ÀÏÀ¸ À©µµ¿ì¸¦ »ý¼ºÇÏ¿´´Ù. ¸¶¿ì½º ¿ÞÂÊ ¹öưÀ» ´©¸£¸é ÆË¾÷ À©µµ¿ì¸¦ ¸¸µç´Ù.
|
||||||||||||||||||||||||||||||||||||||||||||||||
| Âü°íÇÔ¼ö |
DestroyWindow : À©µµ¿ì¸¦ ÆÄ±«ÇÑ´Ù. CreateWindowEx, ShowWindow, MoveWindow |
||||||||||||||||||||||||||||||||||||||||||||||||
| Ç÷¿Æû | 95ÀÌ»ó | ||||||||||||||||||||||||||||||||||||||||||||||||
| ÂüÁ¶ |
|
written by http://www.winapi.co.kr
|