¿øÇü | 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
|