CreateWindow

¿øÇü 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 : »ý¼ºµÉ À©µµ¿ìÀÇ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÑ´Ù.

½ºÅ¸ÀÏ ¼³¸í
WS_OVERLAPPED µðÆúÆ® À©µµ¿ì. ŸÀÌƲ ¹Ù¿Í Å©±â Á¶ÀýÀÌ ¾ÈµÇ´Â °æ°è¼±À» °¡Áø´Ù. ¾Æ¹«·± ½ºÅ¸Àϵµ ÁÖÁö ¾ÊÀ¸¸é ÀÌ ½ºÅ¸ÀÏÀÌ Àû¿ëµÈ´Ù.
WS_POPUP Æ˾÷ À©µµ¿ì¸¦ ¸¸µç´Ù. WS_CHILD¿Í ÇÔ²² ¾µ ¼ö ¾ø´Ù.
WS_CHILD Â÷Àϵå À©µµ¿ì¸¦ ¸¸µç´Ù. WS_POPUP°ú ÇÔ²² ¾µ ¼ö ¾ø´Ù.
WS_MINIMIZE ÃÖÃÊ ÃÖ¼ÒÈ­µÈ »óÅ·ΠÀ©µµ¿ì¸¦ ¸¸µç´Ù.
WS_VISIBLE À©µµ¿ì¸¦ ¸¸µéÀÚ ¸¶ÀÚ È­¸é¿¡ Ãâ·ÂÇÑ´Ù.
WS_DISABLED »ç¿ë±ÝÁöµÈ »óÅÂ, Áï ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÏ ¼ö ¾ø´Â »óÅ·Π¸¸µç´Ù.
WS_CLIPSIBLINGS Â÷Àϵ峢¸® »óÈ£ °ãÄ£ ¿µ¿ªÀº ±×¸®±â ¿µ¿ª¿¡¼­ Á¦¿ÜµÈ´Ù.
WS_CLIPCHILDREN Â÷Àϵ尡 À§Ä¡ÇÑ ¿µ¿ªÀº ±×¸®±â ¿µ¿ª¿¡¼­ Á¦¿ÜµÈ´Ù.
WS_MAXIMIZE ÃÖÃÊ ÃÖ´ëÈ­µÈ »óÅ·ΠÀ©µµ¿ì¸¦ ¸¸µç´Ù.
WS_CAPTION ŸÀÌƲ ¹Ù¸¦ °¡Áø À©µµ¿ì¸¦ ¸¸µé¸ç WS_BORDER ½ºÅ¸ÀÏÀ» Æ÷ÇÔÇÑ´Ù.
WS_BORDER ´Ü¼±À¸·Î µÈ °æ°è¼±À» ¸¸µé¸ç Å©±â Á¶Á¤Àº ÇÒ ¼ö ¾ø´Ù.
WS_DLGFRAME µÎ²¨¿î °æ°è¼±À» °¡Áö¸ç ŸÀÌƲ ¹Ù¸¦ °¡Áú ¼ö ¾ø´Ù.
WS_VSCROLL ¼öÁ÷ ½ºÅ©·Ñ ¹Ù¸¦ °¡Áø À©µµ¿ì¸¦ ¸¸µç´Ù.
WS_HSCROLL ¼öÆò ½ºÅ©·Ñ ¹Ù¸¦ °¡Áø À©µµ¿ì¸¦ ¸¸µç´Ù.
WS_SYSMENU ½Ã½ºÅÛ ¸Þ´º¸¦ °¡Áø À©µµ¿ì¸¦ ¸¸µç´Ù.
WS_THICKFRAME Å©±â Á¶Á¤ÀÌ °¡´ÉÇÑ µÎ²¨¿î °æ°è¼±À» °¡Áø´Ù.
WS_GROUP ¶óµð¿À ¹öÆ° µî ±×·ìÀ» ÀÌ·ç´Â ÄÁÆ®·ÑÀÇ ±×·ì ÁöÁ¤¿¡ »ç¿ëµÈ´Ù.
WS_TABSTOP TabÅ°·Î Æ÷Ä¿½º¸¦ À̵¿ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
WS_MINIMIZEBOX ÃÖ¼ÒÈ­ ¹öÆ°À» ¸¸µç´Ù.
WS_MAXIMIZEBOX ÃÖ´ëÈ­ ¹öÆ°À» ¸¸µç´Ù.
WS_OVERLAPPEDWINDOW °¡Àå ÀϹÝÀûÀÎ À©µµ¿ì ½ºÅ¸ÀÏ. WS_OVERLAPPED |WS_CAPTION |WS_SYSMENU |WS_THICKFRAME |WS_MINIMIZEBOX |WS_MAXIMIZEBOX ½ºÅ¸ÀϵéÀÌ Á¶ÇÕµÈ ½ºÅ¸ÀÏÀÌ´Ù.
WS_POPUPWINDOW ÀϹÝÀûÀÎ Æ˾÷ À©µµ¿ì. WS_POPUP |WS_BORDER |WS_SYSMENU
WS_CHILDWINDOW WS_CHILD¿Í °°´Ù.

°¢ ½ºÅ¸ÀÏÀÇ ºñÆ® ¹èÄ¡´Â ´ÙÀ½°ú °°´Ù.

¢º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 ½ºÅ¸ÀÏÀÌ ÁöÁ¤µÇ¾î ÀÖÀ» °æ¿ì À©µµ¿ì¸¦ º¸¿©ÁÖ°í È°¼ºÈ­½ÃÅ°±â À§ÇÑ ¸ðµç µ¿ÀÛÀ» ÇÏ¸ç °ü·Ã ¸Þ½ÃÁö¸¦ º¸³»ÁØ´Ù.

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ¸ÞÀÎ À©µµ¿ì, Â÷Àϵå À©µµ¿ì, Æ˾÷ À©µµ¿ì¸¦ °¢°¢ »ý¼ºÇÑ´Ù.

	// Æ˾÷ À©µµ¿ìÀÇ À©µµ¿ì Ŭ·¡½º¸¦ µî·ÏÇÑ´Ù.
	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