(基础)SDK 菜单(wndcls.lpszMenuName )指定
#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 ); } }