|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我发现LoadMenu函数一只返回0 ,没有是程序和资源文件挂钩 ,帮忙看看什么原因啊
win32.c
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK wndproc(HWND,UINT,WPARAM,LPARAM);
HMENU hmenu=0;
HMENU hsubmenu=0;
HWND hwnd;
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,
LPSTR lpCmdLine,int nCmdShow)
{
char classname[]="myclass";
char a[]="win32";
HACCEL accelerator;
MSG msg;
WNDCLASSEX wndclass;
accelerator=LoadAccelerators(hinstance,MAKEINTRESOURCE(IDR_ACCELERATOR1));
hmenu=LoadMenu(hinstance,MAKEINTRESOURCE(IDR_MENU1));
wndclass.cbSize=sizeof(wndclass);
wndclass.style=CS_VREDRAW | CS_HREDRAW;
wndclass.lpfnWndProc=wndproc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hinstance;
wndclass.hIcon=NULL;
wndclass.hCursor=NULL;
wndclass.hbrBackground=GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=classname;
wndclass.hIconSm=NULL;
if(!RegisterClassEx(&wndclass))
MessageBox(NULL,TEXT("窗口注册失败!"),TEXT(a),MB_OK);
hwnd=CreateWindowEx(WS_EX_STATICEDGE,classname,a,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,hmenu,hinstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg,hwnd,0,0))
{
if(!TranslateAccelerator(hwnd,accelerator,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
DisplayMenuItem(WPARAM command)
{
char szBuf[256];
wsprintf(szBuf,"你选择了菜单命令:%08x",command);
MessageBox(hwnd,szBuf,"win32",MB_OK);
}
quit()
{
DestroyWindow(hwnd);
PostQuitMessage(0);
}
LRESULT CALLBACK wndproc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
int tiem=0,i=0;
POINT point;
HMENU hsysmenu;
switch(message)
{
case WM_CREATE:
hsubmenu=GetSubMenu(hmenu,1);
hsysmenu=GetSystemMenu(hwnd,FALSE);
AppendMenu(hsysmenu,MF_SEPARATOR,0,NULL);
AppendMenu(hsysmenu,0,ID_MENUITEM40016,"帮助");
AppendMenu(hsysmenu,0,ID_MENUITEM40017,"关于本程序");
return 0;
case WM_SYSCOMMAND:
i=wparam;
i=LOWORD(i);
if(i==ID_MENUITEM40016 || i==ID_MENUITEM40017)
DisplayMenuItem(wparam);
else
DefWindowProc(hwnd,message,wparam,lparam);
case WM_COMMAND:
i=wparam;
i=LOWORD(i);
if(i>=ID_MENUITEM40012 && i<=ID_MENUITEM40015)
{
tiem=message;
message=GetMenuState(hmenu,tiem,MF_BYCOMMAND);
if(message==MF_CHECKED)
message=MF_UNCHECKED;
else
message=MF_CHECKED;
CheckMenuItem(hmenu,tiem,message);
}
if(i>=ID_MENUITEM40008 && i<=ID_MENUITEM40011)
{
CheckMenuRadioItem(hmenu,ID_MENUITEM40008,ID_MENUITEM40011,message,MF_BYCOMMAND);
}
if(message==ID_MENUITEM40003)
{
quit();
}
return 0;
case WM_RBUTTONDOWN:
GetCursorPos(&point);
TrackPopupMenu(hsubmenu,TPM_LEFTALIGN,point.x,point.y,0,hwnd,NULL);
return 0;
case WM_CLOSE:
quit();
return 0;
default:
return DefWindowProc(hwnd,message,wparam,lparam);
}
return 0;
}
win32.rc
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#include "afxres.h"
/
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MENU1 MENU DISCARDABLE
BEGIN
POPUP "文件(&F)"
BEGIN
MENUITEM "打开文件(O)...", ID_MENUITEM40001
MENUITEM "关闭文件(C)...", ID_MENUITEM40002
MENUITEM SEPARATOR
MENUITEM "退出(X)", ID_MENUITEM40003
END
POPUP "查看(&v)"
BEGIN
MENUITEM "文字(F)...\tAlt+F", ID_MENUITEM40004
MENUITEM "背景色(F)... \tCtrl+Alt+B", ID_MENUITEM40005
MENUITEM SEPARATOR
MENUITEM "被禁止的菜单项", ID_MENUITEM40006, INACTIVE
MENUITEM "被灰化的菜单项", ID_MENUITEM40007, GRAYED
MENUITEM SEPARATOR
MENUITEM "大图标(G)", ID_MENUITEM40008
MENUITEM "小图标(M)", ID_MENUITEM40009
MENUITEM "列表(L)", ID_MENUITEM40010
MENUITEM "详细资料(D)", ID_MENUITEM40011
POPUP "工具栏"
BEGIN
MENUITEM "标准按钮(S)", ID_MENUITEM40012
MENUITEM "文字标签(C)", ID_MENUITEM40013
MENUITEM "命令栏(I)", ID_MENUITEM40014
END
MENUITEM "状态栏(U)", ID_MENUITEM40015
END
POPUP "帮助(&H)", HELP
BEGIN
MENUITEM "帮助主题(H)\tF1", ID_MENUITEM40016
MENUITEM SEPARATOR
MENUITEM "关于本程序(A)...", ID_MENUITEM40017
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_ACCELERATOR1 ACCELERATORS MOVEABLE PURE
BEGIN
"B", ID_MENUITEM40005, VIRTKEY, CONTROL, ALT, NOINVERT
"F", ID_MENUITEM40004, VIRTKEY, CONTROL, NOINVERT
VK_F1, ID_MENUITEM40016, VIRTKEY, NOINVERT
END
resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by win.rc
//
#define IDR_MENU1 101
#define IDR_ACCELERATOR1 102
#define ID_MENUITEM40001 40001
#define ID_MENUITEM40002 40002
#define ID_MENUITEM40003 40003
#define ID_MENUITEM40004 40004
#define ID_MENUITEM40005 40005
#define ID_MENUITEM40006 40006
#define ID_MENUITEM40007 40007
#define ID_MENUITEM40008 40008
#define ID_MENUITEM40009 40009
#define ID_MENUITEM40010 40010
#define ID_MENUITEM40011 40011
#define ID_MENUITEM40012 40012
#define ID_MENUITEM40013 40013
#define ID_MENUITEM40014 40014
#define ID_MENUITEM40015 40015
#define ID_MENUITEM40016 40016
#define ID_MENUITEM40017 40017
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40018
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
帮忙看看什么问题呢?
运行后是这样的
|
-
-
|