WM_INITDIALOG

Àμö

wParam : Å°º¸µå Æ÷Ä¿½º¸¦ ¹ÞÀ» ÄÁÆ®·ÑÀÇ ÇÚµé. Åë»ó ÀÌ ÄÁÆ®·ÑÀº ÅÇ ¼ø¼­°¡ °¡Àå ºü¸£°í º¸ÀÌ¸ç »ç¿ë ±ÝÁö »óÅ°¡ ¾Æ´Ï°í WS_TABSTOP ½ºÅ¸ÀÏÀ» °¡Áø ù¹ø° ÄÁÆ®·ÑÀÌ´Ù. ÀÌ ¸Þ½ÃÁö¿¡¼­ TRUE¸¦ ¸®ÅÏÇϸé wParamÀ¸·Î Àü´ÞµÈ ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º°¡ ¸ÂÃß¾îÁø´Ù.

lParam : ´ëÈ­»óÀÚ ÃʱâÈ­ Á¤º¸°¡ Àü´ÞµÈ´Ù. DialogBox ÇÔ¼ö·Î ´ëÈ­»óÀÚ¸¦ È£ÃâÇÑ °æ¿ì´Â 0ÀÌ Àü´ÞµÇ¸ç DialogBoxParam, CreateDialogParam µîÀÇ ÇÔ¼ö·Î ´ëÈ­»óÀÚ¸¦ È£ÃâÇßÀ» ¶§¸¸ Àü´ÞµÈ´Ù. ´ëÈ­»óÀÚ·Î Àü´ÞµÇ´Â Àμö°ª¿¡ ÇØ´çÇϸç ÀÌ Àμö¿¡ µû¶ó ´ëÈ­»óÀÚÀÇ ¸ð¾çÀ̳ª µ¿ÀÛÀ» ´Ù¸£°Ô Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÆÛƼ ½ÃÆ®ÀÇ °æ¿ì lParamÀº PROPSHEETPAGE ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ°¡ Àü´ÞµÈ´Ù.

¼³¸í

ÀÌ ¸Þ½ÃÁö´Â ´ëÈ­»óÀÚ°¡ ¸Þ¸ð¸®¿¡ ¸¸µé¾îÁö°í È­¸é¿¡ º¸À̱â Á÷Àü¿¡ º¸³»Áø´Ù. ±×·¡¼­ ´ëÈ­»óÀÚ³»ÀÇ ¸ðµç ÄÁÆ®·ÑÀ» ÂüÁ¶ÇÒ ¼ö ÀÖÀ¸¸ç ¾ÆÁ÷ ´ëÈ­»óÀÚ°¡ º¸À̱â ÀüÀ̹ǷΠÄÁÆ®·ÑÀÇ Àç¹èÄ¡, »ý¼º, »èÁ¦, ¼Ó¼º º¯°æ µîÀ» ÀÚÀ¯·Ó°Ô ÇÒ ¼ö ÀÖ´Ù. ¿À¹ö·¦µå À©µµ¿ìÀÇ WM_CREATE¿¡ ÇØ´çÇÏ´Â ÇÔ¼öÀÌ¸ç ´ëÈ­»óÀÚ°¡ °¡Àå ¸ÕÀú ¹Þ´Â ¸Þ½ÃÁöÀ̹ǷΠÁÖ·Î ´ëÈ­»óÀÚ ÃʱâÈ­¿¡ ÀÌ ¸Þ½ÃÁö°¡ »ç¿ëµÈ´Ù.

´ëÈ­»óÀÚ¿¡ ¼ÓÇÑ ÄÁÆ®·ÑÀ» ÃʱâÈ­ÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ¸ç ±âŸ ´ëÈ­»óÀÚ µ¿ÀÛ¿¡ ÇÊ¿äÇÑ È¯°æ ¼³Á¤, ¸Þ¸ð¸® ÇÒ´ç, ´ëÈ­»óÀÚ À§Ä¡ ¹× ¼Ó¼º º¯°æ µîÀÇ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ÃʱâÈ­Áß¿¡ ½ÇÆи¦ ÇÏ°Ô µÇ¸é ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â µ¿¾È¿¡µµ EndDialog¸¦ È£ÃâÇÏ¿© ´ëÈ­»óÀÚ¸¦ Áï½Ã Á¾·áÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. WM_CREATE¿Í´Â ´Þ¸® ¸®ÅÏ°ªÀ¸·Î ¿¡·¯ ¿©ºÎ¸¦ ¸®ÅÏÇÒ ¼ö ¾øÀ¸¸ç EndDialog ÇÔ¼ö·Î ¿¡·¯ Äڵ带 ¸®ÅÏÇØ¾ß ÇÑ´Ù.

¸®ÅÏ

TRUE¸¦ ¸®ÅÏÇϸé wParamÀ¸·Î Àü´ÞµÈ ù¹ø° ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º°¡ ¼³Á¤µÈ´Ù. FALSE¸¦ ¸®ÅÏÇϸé ù¹ø° ÄÁÆ®·Ñ·Î Æ÷Ä¿½º¸¦ ¿Å±âÁö ¾ÊÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â µ¿¾È óÀ½ Æ÷Ä¿½º¸¦ ¹ÞÀ» ÄÁÆ®·ÑÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. SetFocus ÇÔ¼ö·Î Æ÷Ä¿½º¸¦ °­Á¦·Î À̵¿½ÃŲ °æ¿ì´Â FALSE¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ´ëÈ­»óÀÚÀÇ ¸Þ½ÃÁö´Â 󸮵ǾúÀ¸¸é TRUE¸¦ ¸®ÅÏÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é FALSE¸¦ ¸®ÅÏÇϴµ¥ ÀÌ ¸Þ½ÃÁö¸¸Àº ¿¹¿ÜÀÌ´Ù.

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ´ëÈ­»óÀÚ ÃʱâÈ­µ¿¾È °¢Á¾ ÄÁÆ®·ÑµéÀ» ÃʱâÈ­ÇÑ´Ù.

#include <windows.h>
#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;
		CheckRadioButton(hDlg,IDC_RADIO1,IDC_RADIO3,IDC_RADIO2);
		SendDlgItemMessage(hDlg,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"°æÈñ´ë");
		SendDlgItemMessage(hDlg,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"¿¬¼¼´ë");
		SendDlgItemMessage(hDlg,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"°í·Á´ë");
		SendDlgItemMessage(hDlg,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"ÇÑ°­´ë");
		SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"°æÁ¦Çаú");
		SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"Æþ´ç°ú");
		SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"¶±ººÀÌ°ú");
		SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"¶¯¶¯ÀÌ°ú");
		SendDlgItemMessage(hDlg,IDC_COMBO1,CB_SETCURSEL,1,0);
		SetDlgItemText(hDlg,IDC_EDIT1,"WinApi");
		SetFocus(GetDlgItem(hDlg,IDC_EDIT1));
		return FALSE;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDOK:
			EndDialog(hDlg,IDOK);
			return TRUE;
		case IDCANCEL:
			EndDialog(hDlg,IDCANCEL);
			return TRUE;
		}
		return FALSE;
	}
	return FALSE;
}

½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

¶óµð¿À ¹öÆ°Áß Radio2 ÄÁÆ®·ÑÀ» ¼±ÅÃÇßÀ¸¸ç ¿¡µðÆ® ÄÁÆ®·Ñ¿¡ ¹®ÀÚ¿­À» ´ëÀÔÇÏ°í ÄÞº¸ ¹Ú½º¿Í ¸®½ºÆ® ¹Ú½º¿¡ Ãʱâ Ç׸ñÀ» Ãß°¡ÇÏ¿´´Ù. ÄÞº¸ ¹Ú½º´Â 1¹ø° Ç׸ñÀ» ¹Ì¸® ¼±ÅÃÇϵµ·Ï Çß´Ù. ¿¡µðÆ® ÄÁÆ®·Ñ¿¡ °­Á¦·Î Æ÷Ä¿½º¸¦ ¼³Á¤ÇÏ°í À§ÇØ SetFocus ÇÔ¼ö¸¦ È£ÃâÇÏ¿´À¸¸ç FALSE¸¦ ¸®ÅÏÇÏ¿´´Ù. ¸¸¾à ÀÌ ¸Þ½ÃÁö¿¡¼­ TRUE¸¦ ¸®ÅÏÇϸé SetFocus È£Ãâ¿¡ »ó°ü¾øÀÌ Ã¹¹ø° ÄÁÆ®·ÑÀÎ È®ÀÎ ¹öÆ°ÀÌ Æ÷Ä¿½º¸¦ ¹Þ°Ô µÈ´Ù.

¿¹Á¦ 2

´ÙÀ½ ´ëÈ­»óÀÚ´Â ÃʱâÈ­Áß¿¡ ºÎ¸ð À©µµ¿ìÀÇ ÀÛ¾÷ ¿µ¿ª Áß¾ÓÀ¸·Î ½º½º·Î ÀÚ¸®¸¦ ¿Å±ä´Ù. ´ëÈ­»óÀÚÀÇ Center ¼Ó¼ºÀº È­¸é Áß¾ÓÀ¸·Î À̵¿ÇÏ´Â ¼Ó¼ºÀ̹ǷΠÀÌ ¼Ó¼ºÀ» ¼³Á¤Çؼ­´Â ºÎ¸ðÀÇ Áß¾ÓÀ¸·Î ¿Å±æ ¼ö ¾ø´Ù.

#include "resource.h"
BOOL CALLBACK DlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	RECT wrt,crt;

	switch(iMessage) {
	case WM_INITDIALOG:
		GetWindowRect(GetParent(hDlg),&wrt);
		GetWindowRect(hDlg,&crt);
		SetWindowPos(hDlg,HWND_NOTOPMOST,wrt.left+(wrt.right-wrt.left)/2-(crt.right-crt.left)/2,
			wrt.top+(wrt.bottom-wrt.top)/2-(crt.bottom-crt.top)/2,0,0,SWP_NOSIZE);
		return TRUE;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDOK:
			EndDialog(hDlg,IDOK);
			return TRUE;
		case IDCANCEL:
			EndDialog(hDlg,IDCANCEL);
			return TRUE;
		}
		return FALSE;
	}
	return FALSE;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;

	switch(iMessage) {
	case WM_LBUTTONDOWN:
		DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgProc);
	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));
}

½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

¿¹Á¦ 3

´ÙÀ½ ¿¹Á¦´Â WM_INITDIALOGÀÇ lParamÀ¸·Î Àü´ÞµÇ´Â ¹®ÀÚ¿­¿¡ µû¶ó ´Ù¸¥ ¸Þ½ÃÁö¸¦ º¸¿©ÁØ´Ù.

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


LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR Mes[128]="¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´©¸£¸é ´ëÈ­»óÀÚ°¡ È£ÃâµË´Ï´Ù";

	switch(iMessage) {
	case WM_LBUTTONDOWN:
		DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1),
			hWnd,DlgProc,(LPARAM)"³Ê À̸§ÀÌ ¹¹¾ß?");
		return TRUE;
	case WM_RBUTTONDOWN:
		DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1),
			hWnd,DlgProc,(LPARAM)"¸î»ìÀÌ´Ï?");
		return TRUE;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,50,50,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

¸¶¿ì½º ¿ÞÂÊ, ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é ´ÙÀ½°ú °°Àº ´ëÈ­»óÀÚ°¡ ³ªÅ¸³­´Ù.

Á» ´õ º¹ÀâÇÑ Á¤º¸¸¦ Àü´ÞÇÏ·Á¸é ±¸Á¶Ã¼¸¦ ¼±¾ðÇÑ ÈÄ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ³Ñ°Ü ÁÖ¸é µÈ´Ù. ´ëÈ­»óÀÚ´Â lParamÀ¸·Î Àü´ÞµÈ °ª¿¡ µû¶ó ´ëÈ­»óÀÚ ÃʱâÈ­¸¦ ´Ù¸£°Ô ÇÒ ¼ö ÀÖÀ¸¸ç ´ëÈ­»óÀÚ ½ÇÇàÁß¿¡ ÀÌ Á¤º¸¸¦ °è¼Ó »ç¿ëÇÏ·Á¸é Àü¿ª ¶Ç´Â Á¤Àû º¯¼ö¿¡ ÀÌ Á¤º¸¸¦ ÀúÀåÇØ µÎ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ lParamÀ¸·Î ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇßÀ» °æ¿ì ´ëÈ­»óÀÚÀÇ ½ÇÇà °á°ú¸¦ ÀÌ ±¸Á¶Ã¼·Î ´Ù½Ã ¸®ÅÏÇÒ ¼öµµ ÀÖ´Ù.

Ç÷§Æû

95ÀÌ»ó

ÂüÁ¶

 


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