c语言手工添加菜单

[复制链接]
查看11 | 回复1 | 2009-5-8 16:08:04 | 显示全部楼层 |阅读模式
我在编写一个很基本的程序,想从基础做起,不用MFC的自动生成的菜单,而是逐行代码的形式给我的窗口添加菜单.需要您做的有:1.定义一个菜单2.把这个菜单添加到窗口中3.经我实验可以运行4.把我的悬赏分拿走
如果需要的话看看我已经写成的程序框架
#include
#include "allmenu.h"
#include
using namespace std;
HMENU hmenu;
HMENU haddmenu;
//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
switch(message){
/* case WM_INIT:
hmenu=GetMenu(hwnd);
haddmenu=CreateMenu();
AppendMenu(haddmenu,MF_ENABLED,IDM_OPENBIG,"打开目标图像");
AppendMenu(haddmenu,HF_ENABLED,IDM_OPENSMALL,"打开模板图像");
AppendMenu(haddmenu,HF_ENABLED,IDM_EXIT,"退出");
/* case WM_COMMAND:
switch(LOWORD(wParam)){
hmenu=GetMenu(hwnd);
haddmenu=CreateMenu();
AppendMenu(haddmenu,MF_ENABLED,IDM_OPENBIG,"打开目标图像");
AppendMenu(haddmenu,HF_ENABLED,IDM_OPENSMALL,"打开模板图像");
AppendMenu(haddmenu,HF_ENABLED,IDM_EXIT,"退出");
}*/
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
//winmain函数
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow){
MSG Msg;
WNDCLASS wndclass;
HWND hwnd;
char lpszClassName[]="我的窗口";
char lpszTitle[]="MyWindows";
char lpszMenuName[]="menu";
hmenu=LoadMenu(hInstance,"hmenu");
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,
hmenu,
hInstance,
NULL
);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&Msg,NULL,0,0)){
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
//allmenu.h文件
#define MYMENU 10
#define IDM_OPENSMALL 11
#define IDM_OPENBIG 12
#define IDM_CLOSE 13
#define IDM_EXIT 14

回复

使用道具 举报

千问 | 2009-5-8 16:08:04 | 显示全部楼层
CreateMenu的函数放在WinMain函数里面就可以了啊int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow){ MSG Msg; WNDCLASS wndclass; HWND hwnd; char lpszClassName[]="我的窗口"; char lpszTitle[]="MyWindows"; char lpszMenuName[]="menu"; hmenu=CreateMenu(); AppendMenu(hmenu,MF_ENABLED,IDM_OPENBIG...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行