#include <Windows.h>
#include "resource.h"
第三种方法:
#define IDM_FILE_NEW 40001
#define IDM_FILE_OPEN 40002
#define IDM_FILE_SAVE 40003
#define IDM_FILE_SAVE_AS 40004
#define IDM_APP_EXIT 40005
#define IDM_EDIT_UNDO 40006
#define IDM_EDIT_CUT 40007
#define IDM_EDIT_COPY 40008
#define IDM_EDIT_PASTE 40009
#define IDM_EDIT_CLEAR 40010
void RegisterClass_CLS(WNDCLASS &wndcls, const HINSTANCE hInstance);
void CreateWindow_Wnd(HWND &hWnd,const HINSTANCE hInstance);
LRESULT CALLBACK WindowProc( HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance,
__in LPSTR lpCmdLine, __in int nShowCmd )
{
WNDCLASS cls;
RegisterClass_CLS(cls,hInstance);
if( !RegisterClass(&cls) ){
MessageBox(NULL,TEXT("注册窗口类失败!"),TEXT("标题"),MB_OKCANCEL);
return -1;
}
HWND hWnd;
CreateWindow_Wnd(hWnd,hInstance);
if( !hWnd ){
MessageBox(NULL,TEXT("创建窗口失败!"),TEXT("标题"), MB_OKCANCEL );
return -1;
}
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
MSG msg;
while ( GetMessage(&msg,NULL,0,0) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
void RegisterClass_CLS(WNDCLASS &wndcls, const HINSTANCE hInstance)
{
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)::GetStockObject(NULL_BRUSH);
wndcls.hCursor = ::LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon = ::LoadIcon(NULL,IDI_QUESTION);
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WindowProc;
wndcls.lpszClassName = TEXT("HellCpp");
wndcls.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);//第一种方法
wndcls.style = CS_HREDRAW | CS_VREDRAW ;
}
void CreateWindow_Wnd(HWND &hWnd,const HINSTANCE hInstance)
{
//第三种方法:
// HMENU hMenu = CreateMenu();
// HMENU hMenuPopup = CreateMenu();
// AppendMenu(hMenuPopup, MF_STRING, IDM_FILE_NEW, "&New");
// AppendMenu(hMenuPopup, MF_STRING, IDM_FILE_OPEN, "&Open...");
// AppendMenu(hMenuPopup, MF_STRING, IDM_FILE_SAVE, "&Save");
// AppendMenu(hMenuPopup, MF_STRING, IDM_FILE_SAVE_AS, "Save &As...");
// AppendMenu(hMenuPopup, MF_SEPARATOR, 0, NULL);
// AppendMenu(hMenuPopup, MF_STRING, IDM_APP_EXIT, "E&xit");
// AppendMenu(hMenu, MF_POPUP, (unsigned int)hMenuPopup, "&File");
//
// hMenuPopup = CreateMenu();
// AppendMenu(hMenuPopup, MF_STRING, IDM_EDIT_UNDO,"&Undo");
// AppendMenu(hMenuPopup, MF_SEPARATOR, 0, NULL);
// AppendMenu(hMenuPopup, MF_STRING, IDM_EDIT_CUT, "Cu&t");
// AppendMenu(hMenuPopup, MF_STRING, IDM_EDIT_COPY, "&Copy");
// AppendMenu(hMenuPopup, MF_STRING, IDM_EDIT_PASTE, "&Paste");
// AppendMenu(hMenuPopup, MF_STRING, IDM_EDIT_CLEAR, "Clea&r");
// AppendMenu(hMenu, MF_POPUP, (unsigned int)hMenuPopup, "&Edit");
hWnd = CreateWindow( TEXT("HellCpp"), TEXT("win程序"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT ,CW_USEDEFAULT ,
CW_USEDEFAULT ,CW_USEDEFAULT ,
NULL,NULL, //第二种方法 LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)) , //第三种方法: hMenu
hInstance,0
);
}
LRESULT CALLBACK WindowProc( HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
WORD wmId;
WORD wmEvent;
switch ( uMsg )
{
case WM_DESTROY:
DestroyWindow(hwnd);
PostQuitMessage(0);
break;
case WM_COMMAND:
{
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch(wmId)
{
case ID_EXIT:
DestroyWindow(hwnd);
break;
}
}
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam );
}
}
