MFC编程初级问题请教。关于中的例子。

idleguy 2003-04-11 02:19:19
<MFC深入浅出>2e中第一个例子,创建一个带MENU的窗口。

主要的代码如下:

窗口类注册:

BOOL InitApplication(HINSTANCE hInstance)
{
WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(hInstance,"jjhouricon");
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wc.lpszMenuName="GenericMenu";
wc.lpszClassName=_szAppName;

return (RegisterClass(&wc));
}

创建Window:

BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)
{
_hInst=hInstance;

_hWnd=CreateWindow(
_szAppName,
_szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT,
NULL, NULL, hInstance, NULL,);

if (!_hWnd)
return false;



ShowWindow(_hWnd,nCmdShow);
UpdateWindow(_hWnd);

return (TRUE);
}

可是,创建出来的窗口没有菜单。

资源文件中菜单的定义:

// Menu
//

GenericMenu MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&New", IDM_NEW, GRAYED
MENUITEM "&Open...", IDM_OPEN, GRAYED
MENUITEM "&Save", IDM_SAVE, GRAYED
MENUITEM "Save &As...", IDM_SAVEAS, GRAYED
MENUITEM "E&xit", IDM_EXIT
END
POPUP "&Help"
BEGIN
MENUITEM "&About Generic...", IDM_ABOUT
END
END

//另外,书中的例子好像是有错误。
//这个例子的头文件generic.h的声明是错的。

原声明如下:

#0004 BOOL InitApplication(HANDLE);
#0005 BOOL InitInstance(HANDLE, int);
#0006 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
#0007 LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

关于为什么菜单不能显示出来的问题,麻烦各位解答一下。谢谢。//vc6。

...全文
44 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
马鸣风萧萧 2003-04-14
  • 打赏
  • 举报
回复
你是不是没在程序的开头加上:
#include "resource.h"
我以前也做过sdk加菜单,就是因为没有上面的头文件,而没菜单,加上就有了。

idleguy 2003-04-14
  • 打赏
  • 举报
回复
resource.h已经include了。

否则这个 应该编译不过去的~~

还是不知道为什么~~~天~~~
IloveMint 2003-04-14
  • 打赏
  • 举报
回复
呵呵,90%是楼上朋友指出的,

我也有过这种事,汗~
idleguy 2003-04-11
  • 打赏
  • 举报
回复
在CreateWindow函数中试过设置菜单。

这么写的:
//HMENU myMenu=LoadMenu(hInstance,"GenericMenu");

_hWnd=CreateWindow(
_szAppName,
_szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
myMene,
hInstance,
NULL,
);

可是,不行~~


rabithao兄,你的代码和我贴出来的代码一样么?

能发一份给我么?idleguy@263.net,谢谢。~~
wsqq 2003-04-11
  • 打赏
  • 举报
回复
你在CreateWindow函数中是否应该把菜单参数设置一下呢?
偶没试过,只是觉得,不一定对的。
rabithao 2003-04-11
  • 打赏
  • 举报
回复
我这儿也有这本书的代码
可是我的可以显示菜单嘛
idleguy 2003-04-11
  • 打赏
  • 举报
回复
up一下,各位高手帮忙看看,

就是菜单不能显示的问题~~~

谢谢~~
idleguy 2003-04-11
  • 打赏
  • 举报
回复
这本书写的是不错,如果是简体版就更好了。一直没买到~~

不过,菜单不能显示出来是怎么回事啊。

makefile:

all:generic.exe

generic.res:generic.rc generic.h
rc generic.rc

generic.obj:generic.cpp generic.h
cl -c -W3 -Gz -D_X86_ -DWIN32 generic.cpp

generic.exe:generic.obj generic.res

……和不会和这个有关系吧?
link /MACHINE:I386 -subsystem:windows generic.res generic.obj \
libc.lib kernel32.lib user32.lib gdi32.lib
databasesql 2003-04-11
  • 打赏
  • 举报
回复
哈,这个我倒是没试过,
不过侯捷先生的这本书不愧是经典之作。
idleguy 2003-04-11
  • 打赏
  • 举报
回复
嗯?好像格式有点乱,Createwindow整理一下:
_hWnd=CreateWindow(
_szAppName,
_szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL,
);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧