模态对话框练习
x.h头文件
#define ID_SAVE 12
#define ID_OPEN 13
#define ID_EXIT 14
#define ID_ABOUT 15
x.rc //资源文件
#include <windows.h>
#include "x.h"
MENU MENU
BEGIN
    POPUP "文件(&F)\t Ctrl+F"
    BEGIN
        MENUITEM "保存(&S)\t Ctrl+S",             ID_SAVE
        MENUITEM "打开(&O)\t Ctrl+O",             ID_OPEN
        MENUITEM SEPARATOR
        MENUITEM "退出(&X)",                      ID_EXIT
    END
    POPUP "帮助(&H)\t Ctrl+H"
    BEGIN
        MENUITEM "关于(&A)\t Ctrl+A",             ID_ABOUT
    END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
MENU ACCELERATORS
BEGIN
    "^S",           ID_SAVE,                ASCII   
    "^O",           ID_OPEN,                ASCII   
END
About DIALOG 10,10,100,50
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "关于"
FONT 18,"楷体"
BEGIN 
    CTEXT "WINDOWS模态对话框",-1,13,10,18,10
    DEFPUSHBUTTON "确定",IDOK,35,30,30,12
END
#include <windows.h>
#include "x.h"
HINSTANCE hin;
HMENU hmenu, haddmenu; //定义菜单句柄
BOOL CALLBACK DlgProc(HWND hdlg, UINT message, UINT wParam, UINT lParam);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
	HWND hwnd;
	MSG Msg;
	HACCEL hAccel;
	hin = hInstance;
	WNDCLASS wndclass;
	char lpszMenuName[] = "Menu";
	char lpszClassName[] = "菜单";
	char lpszTitle[] = "My_Menu_Example";
	wndclass.style = 0;
	wndclass.lpfnWndProc = WndProc;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hInstance = hInstance;
	wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.lpszMenuName = lpszMenuName; //加载窗口类菜单
	wndclass.lpszClassName = lpszClassName;
	if (!RegisterClass(&wndclass))
	{
		MessageBeep(0);
		return FALSE;
	}
	hwnd = CreateWindow(lpszClassName,
		lpszTitle,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL);
	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);
	//加载加速键资源
	hAccel = LoadAccelerators(hInstance, lpszMenuName);
	while (GetMessage(&Msg, NULL, 0, 0))
	{
		//在消息循环中截获加速键消息
		if (!TranslateAccelerator(hwnd, hAccel, &Msg))
		{
			TranslateMessage(&Msg);
			DispatchMessage(&Msg);
		}
	}
	return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	hmenu = GetMenu(hwnd);
	HDC hdc;
	PAINTSTRUCT ps;
	switch (message)
	{
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case ID_OPEN:
			MessageBox(hwnd, "文件打开成功!", "文件打开", MB_OK);
			break;
		case ID_SAVE:
			MessageBox(hwnd, "文件保存成功", "文件保存", MB_OK);
			break;
		case ID_EXIT:
			MessageBox(hwnd, "退出", "退出",MB_OK);
			break;
		case ID_ABOUT:
			int i=DialogBox(hin, "About", hwnd, (DLGPROC)DlgProc);
			break;
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);
		SetTextColor(hdc,RGB(255, 0, 0));
		SetBkColor(hdc,RGB(0, 255, 0));
		TextOut(hdc, 0, 0, "fenglei", 7);
		EndPaint(hwnd, &ps);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd, message, wParam, lParam);
	}
	return 0;
}
BOOL CALLBACK DlgProc(HWND hdlg, UINT message, UINT wParam, UINT lParam)
{
	switch (message) {
	case WM_INITDIALOG:
		return 1;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDOK:  //关闭对话框
			EndDialog(hdlg, 0);
		}
		break;
	case WM_CLOSE:
		EndDialog(hdlg, 0);
		break;
	}
	return 0;
}


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号