CreateDialogParam函数的应用

http://blog.csdn.net/yl_wh/article/details/6032143

// WinTest.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"

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

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	HWND hWndDlg = NULL;
	MSG msg;

	hWndDlg = CreateDialogParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc, NULL);
	if(hWndDlg == NULL)
	{
		MessageBox(NULL, "创建对话框失败.", "", MB_OK);
		return 0;
	}

	RECT rtDlg;
	GetWindowRect(hWndDlg, &rtDlg);

	int nScreenX = GetSystemMetrics(SM_CXSCREEN);
	int nScreenY = GetSystemMetrics(SM_CYSCREEN);
	
	SetWindowPos(hWndDlg, 
				HWND_TOP, 
				nScreenX / 2 - rtDlg.right / 2,
				nScreenY / 2 - rtDlg.bottom / 2,
				0,
				0,
				SWP_NOSIZE | SWP_SHOWWINDOW); //SWP_NOSIZE)

	while(GetMessage(&msg, NULL, NULL, NULL))
	{
		if(msg.message == WM_KEYDOWN)
		{
			SendMessage(hWndDlg, msg.message, msg.wParam, msg.lParam);
		}
		else if(!IsDialogMessage(hWndDlg, &msg))// 如果消息没有被处理, 返回值为0
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}
	


	return msg.wParam;
}


BOOL InitDialog(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
/*
		响应WM_INITDIALOG消息时,如果函数调用SetFocus设置对话
	框中控制中的一个焦点, 则对话框应用程序应该返回零值,否则对
	话框应用程序应该返回非零值在,这种情况下系统对能够有焦点的
	对话框中的第一个控制设置焦点。 
*/
	return TRUE;
}

BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_INITDIALOG:
		return InitDialog(hWnd, uMsg, wParam, lParam);
	
	case WM_KEYDOWN:
		break;				

	case WM_COMMAND:
		if(LOWORD(wParam) == IDOK)
		{
		//	MessageBox(hWnd, "确定", "", MB_OK);
		}
		else if(LOWORD(wParam) == IDCANCEL)
		{
			DestroyWindow(hWnd);	
		}
		return TRUE;
	case WM_CLOSE:
		DestroyWindow(hWnd);
		return TRUE;
 
	case WM_DESTROY:
		PostQuitMessage(0);
		return TRUE;
	}

	return FALSE;	// 如果函数不处理消息,则对话框应用程序应该返回零值。
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值