(基础)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 );
    }

}
posted @ 2013-01-30 19:07  执迷不悟~  阅读(1146)  评论(0编辑  收藏  举报