DialogBox

¿øÇü int DialogBox( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc );
MFC ¿øÇü virtual int CDialong::DoModal( );
Àμö

¢ºhInstance : ´ëÈ­»óÀÚ ÅÛÇø®Æ®¸¦ °¡Áø ÀνºÅϽº ÇÚµé. ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ÇÁ·Î¼¼½º¿¡ ¸®¼Ò½º°¡ Á¤ÀǵǾî ÀÖÀ¸¸é WinMainÀ¸·Î Àü´ÞµÈ hInstance°ªÀ» ³Ñ°ÜÁØ´Ù. ´Ù¸¥ DLLÀ̳ª ½ÇÇà ÆÄÀÏ¿¡ ¸®½º½º°¡ ÀÖÀ» °æ¿ì ÇØ´ç ¸ðµâÀÇ ÀνºÅϽº ÇÚµéÀ» ³Ñ°ÜÁØ´Ù.

¢ºlpTemplate : ´ëÈ­»óÀÚ ÅÛÇø®Æ®ÀÇ IDÀÌ´Ù. ³ÎÁ¾·á ¹®ÀÚ¿­·Î Á¤ÀÇµÈ ÅÛÇø®Æ®ÀÇ À̸§À̰ųª Á¤¼öÇüÀÇ IDÀÌ´Ù. ¸¸¾à ´ëÈ­»óÀÚ ÅÛÇø®Æ®°¡ Á¤¼öÇüÀ¸·Î Á¤ÀǵǾî ÀÖÀ» °æ¿ì MAKEINTRESOURCE ¸ÅÅ©·Î ÇÔ¼ö·Î ID¸¦ ÁöÁ¤ÇØ ÁØ´Ù.

¢ºhWndParent : ÀÌ ´ëÈ­»óÀÚ¸¦ ¼ÒÀ¯ÇÏ´Â ¿À³Ê À©µµ¿ìÀÇ ÇÚµéÀÌ´Ù. ÀÌ ÇÚµéÀÌ ÁöÁ¤ÇÏ´Â À©µµ¿ì´Â ¸ð´Þ ´ëÈ­»óÀÚ°¡ ½ÇÇàÁßÀÎ µ¿¾È¿¡ »ç¿ë ±ÝÁöµÈ´Ù.

¢ºlpDialogFunc : ´ëÈ­»óÀÚ·Î Àü´ÞµÇ´Â ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â ¸Þ½ÃÁö ó¸® ÇÔ¼öÀÇ Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ¹Ýµå½Ã ´ÙÀ½°ú °°Àº ¿øÇüÀ¸·Î ¼±¾ðµÇ¾î¾ß ÇÑ´Ù.

BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

À©µµ¿ìÀÇ ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â À©µµ¿ì ÇÁ·Î½ÃÀú¿Í µ¿ÀÏÇÑ ¿øÇüÀ» °¡Áø´Ù. ÀÌ ÇÔ¼ö¿¡¼­´Â ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ» °æ¿ì TRUE¸¦ ¸®ÅÏÇÏ¸ç ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾Ê¾ÒÀ¸¸é FALSE¸¦ ¸®ÅÏÇÑ´Ù. ´Ü ¿¹¿ÜÀûÀ¸·Î WM_INITDIALOG ¸Þ½ÃÁöÀÇ ¸®ÅÏ°ªÀº ¾î¶² ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º¸¦ ÁÙ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. WM_INITDIALOG¿¡¼­ SetFocus ÇÔ¼ö·Î ƯÁ¤ ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º¸¦ ÁÖ¾úÀ» °æ¿ì TRUE¸¦ ¸®ÅÏÇÏ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì FALSE¸¦ ¸®ÅÏÇϴµ¥ ÀÌ °æ¿ì ½Ã½ºÅÛÀº ÅÇ ¼ø¼­°¡ °¡Àå ºü¸¥ ÄÁÆ®·Ñ¿¡°Ô Æ÷Ä¿½º¸¦ ÁØ´Ù.

¸®ÅÏ EndDialog ÇÔ¼öÀÇ Àμö¸¦ ¸®ÅÏÇϸç ÀÌ °ªÀº ´ëÈ­»óÀÚÀÇ °á°ú°ªÀ¸·Î »ç¿ëµÈ´Ù. ¿¡·¯ ¹ß»ý½Ã -1À» ¸®ÅÏÇÑ´Ù.
¼³¸í

ÀÌ ÇÔ¼ö´Â ¸ð´Þ ´ëÈ­»óÀÚ¸¦ ½ÇÇàÇÑ´Ù. lpTemplate°¡ ÁöÁ¤ÇÏ´Â ´ëÈ­»óÀÚ¸¦ »ý¼ºÇÏ¿© È­¸éÀ¸·Î Ãâ·ÂÇϸç(WS_VISIBLE ½ºÅ¸ÀÏÀÌ ¾ø¾îµµ È­¸é¿¡ º¸ÀδÙ) ¼ÒÀ¯ÀÚ À©µµ¿ì¸¦ »ç¿ë ±ÝÁö½ÃÅ°°í lpDialogFunc Àμö°¡ ÁöÁ¤ÇÏ´Â ¸Þ½ÃÁö ó¸® ÇÔ¼ö·Î ¸Þ½ÃÁö¸¦ º¸³»ÁÖ¾î ´ëÈ­»óÀÚ¸¦ ½ÇÇàÇÑ´Ù. ¸ð´Þ ´ëÈ­»óÀÚ´Â EndDialog°¡ È£ÃâµÉ ¶§±îÁö ½ÇÇàÀ» °è¼ÓÇϸç ÀÌ ÇÔ¼ö´Â ´ëÈ­»óÀÚ°¡ ¿ÏÀüÈ÷ Á¾·áµÇ¾î¾ß ¸®ÅÏÇÑ´Ù.

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´©¸£¸é °£´ÜÇÑ ¼Ò°³ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁØ´Ù. ¸®¼Ò½º¿¡ ´ëÈ­»óÀÚ ÅÛÇø®Æ®¸¦ ¸ÕÀú Á¤ÀÇÇØ¾ß ÇÏ¸ç ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀú¿¡¼­´Â WM_INITDIALOG, WM_COMMAND ¸Þ½ÃÁö¸¦ ó¸®ÇÑ´Ù.

#include "resource.h"
BOOL CALLBACK DialogBoxProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	switch(iMessage)
	{
	case WM_INITDIALOG:
		return TRUE;
	case WM_COMMAND:
		switch (wParam)
		{
		case IDOK:
		case IDCANCEL:
			EndDialog(hDlg,0);
			return TRUE;
		}
		break;
	}
	return FALSE;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	switch(iMessage) {
	case WM_LBUTTONDOWN:
		DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,DialogBoxProc);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ´ëÈ­»óÀÚ ±â¹ÝÀÇ ÇÁ·ÎÁ§Æ®ÀÌ´Ù. º°µµÀÇ ¸ÞÀÎ À©µµ¿ì¸¦ ¸¸µéÁö ¾Ê°í DoModal ÇÔ¼ö È£Ã⸸À¸·Î ¸ð´Þ ´ëÈ­»óÀÚ¸¦ È£ÃâÇÏ¿© ÀÌ ´ëÈ­»óÀÚ°¡ °ð ÇÁ·Î¼¼½ºÀÇ ¸ÞÀÎ À©µµ¿ì°¡ µÈ´Ù. °£´ÜÇÑ ÇüÅÂÀÇ ÇÁ·ÎÁ§Æ®ÀÎ °æ¿ì ÀÌ·± ÇüÅ·ΠÇÁ·ÎÁ§Æ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ´ëÈ­»óÀÚ ±â¹ÝÀÇ ÇÁ·ÎÁ§Æ®´Â À©µµ¿ì ÇÁ·Î½ÃÀú°¡ ½Ã½ºÅÛ ³»ºÎ¿¡ ¼û°ÜÁ® Àֱ⠶§¹®¿¡ ¿©·¯ °¡Áö Á¦¾à »çÇ×ÀÌ ÀÖÀ¸¸ç º¹ÀâÇÑ ÇüÅÂÀÇ ÇÁ·ÎÁ§Æ®¿¡´Â ÀûÇÕÇÏÁö ¾Ê´Ù.

#include 
#include "resource.h"

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

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;
		return TRUE;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDOK:
		case IDCANCEL:
			EndDialog(hDlg,0);
			return TRUE;
		}
		return FALSE;
	}
	return FALSE;
}

Âü°íÇÔ¼ö

EndDialog : ´ëÈ­»óÀÚ¸¦ Á¾·áÇÑ´Ù.

CreateDialog : ¸ðµ¨¸®½º ´ëÈ­»óÀÚ¸¦ »ý¼ºÇÑ´Ù.

DialogBoxParam, DialogBoxIndirect

Ç÷¿Æû 95ÀÌ»ó
ÂüÁ¶  

written by http://www.winapi.co.kr