#include<windows.h>
#include<string.h>
#include<tchar.h>
#include<stdio.h>
#include<stdlib.h>
#include"resource1.h"
HMENU hmenu,hprintmenu;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow
)
{
HWND hwnd;
MSG Msg;
HACCEL hAccel;
WNDCLASS wndclass;
wchar_t lpszClassName[]=_T("栗子");
//wchar_t lpszMenuName[]=_T("MENU");//
wchar_t lpszTitle[]=_T("My_Menu_Example");
wndclass.style=0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbWndExtra=0;
wndclass.cbClsExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=_T("MENU");//載入視窗類別菜單
wndclass.lpszClassName=lpszClassName;
if(!RegisterClass(&wndclass))
{
return FALSE;
}
hwnd=CreateWindow(lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,//NULL__使用視窗的預設菜單
hInstance,
NULL
);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
//載入加速鍵資源
hAccel=LoadAccelerators(hInstance,_T("MENU"));
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
)
{
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_NEW:
break;
case IDM_OPEN:
break;
case IDM_SAVE:
break;
case IDM_SAVEAS:
break;
case IDM_CLOSE:
break;
case IDM_ADDPRINTMENU:
hmenu=GetMenu(hwnd);//
hprintmenu=CreateMenu();//建立菜單
AppendMenu(hprintmenu,MF_ENABLED,IDM_LINE,_T("求和"));
AppendMenu(hprintmenu,MF_ENABLED,IDM_RECT,_T("方差"));
AppendMenu(hprintmenu,MF_ENABLED,IDM_RRECT,_T("平均值"));
AppendMenu(hprintmenu,MF_ENABLED,IDM_ELLIP,_T("均方根"));
//將建立的彈出式菜單插入主菜單中
InsertMenu(hmenu,2,MF_POPUP|MF_BYPOSITION,(UINT)hprintmenu,_T("統計計算(&C)"));//參數4怎麼啦
//相應改變菜單中有關統計計算單項的屬性
EnableMenuItem(hmenu,IDM_ADDPRINTMENU,MF_GRAYED);
EnableMenuItem(hmenu,IDM_DELPRINTMENU,MF_ENABLED);
DrawMenuBar(hwnd);
break;
//從主菜單中刪除彈出式統計計算菜單
case IDM_DELPRINTMENU:
DeleteMenu(hmenu,2,MF_BYPOSITION);
EnableMenuItem(hmenu,IDM_ADDPRINTMENU,MF_ENABLED);
EnableMenuItem(hmenu,IDM_DELPRINTMENU,MF_GRAYED);
DrawMenuBar(hwnd);
break;
case IDM_EXIT:
SendMessage(hwnd,WM_DESTROY,0,0);
break;
case IDM_CUT:
break;
case IDM_COPY:
break;
case IDM_DELETE:
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
//resource.h
#define IDR_MENU1 101
// Next default values for new objects
//
#define IDM_NEW 10
#define IDM_OPEN 11
#define IDM_CLOSE 12
#define IDM_SAVE 13
#define IDM_SAVEAS 14
#define IDM_ADDPRINTMENU 15
#define IDM_DELPRINTMENU 16
#define IDM_EXIT 17
#define IDM_CUT 18
#define IDM_COPY 19
#define IDM_PASTE 20
#define IDM_DELETE 21
#define IDM_HELP 22
#define IDM_LINE 23
#define IDM_RECT 24
#define IDM_RRECT 25
#define IDM_ELLIP 26
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
#include<resource1.h>
#include<winuser.h>//虛擬鍵用到哦
MENU MENU DISCARDABLE
{
POPUP"檔案(&F)"
{
MENUITEM"建立(&N) \t Ctrl+N", IDM_NEW
MENUITEM"開啟(&O) \t Ctrl+O", IDM_OPEN
MENUITEM"關閉(&C) ", IDM_CLOSE
MENUITEM SEPARATOR
MENUITEM "儲存(&S)\t Ctrl +S", IDM_SAVE
MENUITEM"另存新檔(&A)", IDM_SAVEAS
MENUITEM SEPARATOR
MENUITEM "建立統計計算功能表項目(&P)\t Ctrl+P", IDM_ADDPRINTMENU
MENUITEM "刪除統計計算功能表項目(&D)\t Ctrl+D", IDM_DELPRINTMENU,GRAYED
MENUITEM SEPARATOR
MENUITEM "退出(&X)", IDM_EXIT
}
POPUP"編輯(&E)"
{
MENUITEM "剪下(&T) \t Ctrl+X", IDM_CUT
MENUITEM "複製(&C) \t Ctrl+C", IDM_COPY
MENUITEM "粘貼(&P) \t Ctrl+V", IDM_PASTE
MENUITEM "刪除(&D) \t Del", IDM_DELETE
}
MENUITEM"協助(&H)", IDM_HELP
}
Menu ACCELERATORS
{
"N", IDM_NEW, ASCII
"O", IDM_OPEN, ASCII
"S", IDM_SAVE, ASCII
"P", IDM_ADDPRINTMENU, ASCII
"D", IDM_DELPRINTMENU, ASCII
"X", IDM_CUT, ASCII
"C", IDM_COPY, ASCII
"V", IDM_PASTE, ASCII
VK_DELETE, IDM_DELETE, VIRTKEY
}