头文件
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#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
cpp文件:
#include "windows.h"
#include "7_1.h"
HMENU hmenu,haddmenu; //定义菜单句柄
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;
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)
{
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); //获取主菜单句柄
haddmenu=CreateMenu(); //动态创建菜单
AppendMenu(haddmenu,MF_ENABLED,IDM_LINE,"求和");
AppendMenu(haddmenu,MF_ENABLED,IDM_RECT,"方差");
AppendMenu(haddmenu,MF_ENABLED,IDM_RRECT,"平均值");
AppendMenu(haddmenu,MF_ENABLED,IDM_ELLIP,"均方根");
InsertMenu(hmenu,2,MF_POPUP|MF_BYPOSITION,(UINT)haddmenu,"统计计算(&C)");
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: //选择“退出”时,发出WM_DESTROY消息
SendMessage(hwnd,WM_DESTROY,0,0);
break;
case IDM_CUT: break;
case IDM_COPY: break;
case IDM_PASTE: break;
case IDM_DELETE:break;
}
break;
case WM_DESTROY:
PostQuitMessage(0); break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}rc文件:
//本例菜单资源文件中的部分内容
#include "7_1.h"
#include "windows.h"
WndClass.lpszMenuName="7_1";//定义菜单名
MENU MENU DISCARDABLE
BEGIN
POPUP "文件(&F)"
BEGIN
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)\tCtrl+D",IDM_DELPRINTMENU,GRAYED
MENUITEM SEPARATOR
MENUITEM "退出(&X)", IDM_EXIT
END
POPUP "编辑(&E)"
BEGIN
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
END
MENUITEM "帮助(&H)", IDM_HELP
END//本例中的加速键
MENU ACCELERATORS MOVEABLE PURE
BEGIN
"^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;
END//资源文件
Menu MENU DISCARDABLE //定义菜单条
{
POPUP "文件(&F)" //定义弹出菜单
{ MENUITEM "打开(&O)",IDM_NEW //定义打开菜单
MENUITEM "保存(&S)",IDM_SAVE //定义保存菜单
MENUITEM "另存为(&A)",IDM_SAVEAS //定义保存为菜单
MENUITEM SEPARATOR //定义分割条
MENUITEM "退出(&E)",IDM_EXIT //定义退出菜单
}
POPUP "计算(&S)" //定义弹出菜单
{ MENUITEM "计算总和(&S)",IDM_SUM //定义计算总和菜单
MENUITEM "计算方差(&D)",IDM_DEVIA //定义计算方差菜单
MENUITEM "计算均方差(&T)",IDM_STDDEVIA //计算均方差菜单
}
POPUP "帮助(&H)" //定义帮助弹出菜单
{ MENUITEM "计算总和帮助(&S)",IDM_SUMHELP //计算总和帮助菜单
MENUITEM "计算方差帮助(&D)",IDM_DEVIAHELP //计算方差帮助菜单
MENUITEM "计算均方差帮助(&T)",IDM_STDDEVIAHELP //计算均方差帮助菜单
MENUITEM SEPARATOR //定义分割条
MENUITEM "关于(&A)",IDM_ABOUT //定义关于菜单
}
}程序怎么运行不出来
rc文件用记事本编辑后怎么打不开?
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#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
cpp文件:
#include "windows.h"
#include "7_1.h"
HMENU hmenu,haddmenu; //定义菜单句柄
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;
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)
{
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); //获取主菜单句柄
haddmenu=CreateMenu(); //动态创建菜单
AppendMenu(haddmenu,MF_ENABLED,IDM_LINE,"求和");
AppendMenu(haddmenu,MF_ENABLED,IDM_RECT,"方差");
AppendMenu(haddmenu,MF_ENABLED,IDM_RRECT,"平均值");
AppendMenu(haddmenu,MF_ENABLED,IDM_ELLIP,"均方根");
InsertMenu(hmenu,2,MF_POPUP|MF_BYPOSITION,(UINT)haddmenu,"统计计算(&C)");
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: //选择“退出”时,发出WM_DESTROY消息
SendMessage(hwnd,WM_DESTROY,0,0);
break;
case IDM_CUT: break;
case IDM_COPY: break;
case IDM_PASTE: break;
case IDM_DELETE:break;
}
break;
case WM_DESTROY:
PostQuitMessage(0); break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}rc文件:
//本例菜单资源文件中的部分内容
#include "7_1.h"
#include "windows.h"
WndClass.lpszMenuName="7_1";//定义菜单名
MENU MENU DISCARDABLE
BEGIN
POPUP "文件(&F)"
BEGIN
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)\tCtrl+D",IDM_DELPRINTMENU,GRAYED
MENUITEM SEPARATOR
MENUITEM "退出(&X)", IDM_EXIT
END
POPUP "编辑(&E)"
BEGIN
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
END
MENUITEM "帮助(&H)", IDM_HELP
END//本例中的加速键
MENU ACCELERATORS MOVEABLE PURE
BEGIN
"^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;
END//资源文件
Menu MENU DISCARDABLE //定义菜单条
{
POPUP "文件(&F)" //定义弹出菜单
{ MENUITEM "打开(&O)",IDM_NEW //定义打开菜单
MENUITEM "保存(&S)",IDM_SAVE //定义保存菜单
MENUITEM "另存为(&A)",IDM_SAVEAS //定义保存为菜单
MENUITEM SEPARATOR //定义分割条
MENUITEM "退出(&E)",IDM_EXIT //定义退出菜单
}
POPUP "计算(&S)" //定义弹出菜单
{ MENUITEM "计算总和(&S)",IDM_SUM //定义计算总和菜单
MENUITEM "计算方差(&D)",IDM_DEVIA //定义计算方差菜单
MENUITEM "计算均方差(&T)",IDM_STDDEVIA //计算均方差菜单
}
POPUP "帮助(&H)" //定义帮助弹出菜单
{ MENUITEM "计算总和帮助(&S)",IDM_SUMHELP //计算总和帮助菜单
MENUITEM "计算方差帮助(&D)",IDM_DEVIAHELP //计算方差帮助菜单
MENUITEM "计算均方差帮助(&T)",IDM_STDDEVIAHELP //计算均方差帮助菜单
MENUITEM SEPARATOR //定义分割条
MENUITEM "关于(&A)",IDM_ABOUT //定义关于菜单
}
}程序怎么运行不出来
rc文件用记事本编辑后怎么打不开?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货