分享
 
 
 

(译)win32asm实例-5

王朝system·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

5.0 - Adding a menu添加菜单

Our program should have a menu to set some options. Firstly we need to create our menu in the resource file:

我们的程序应该有一个菜单来设置一些选项。首先,我们需要在资源文件中创建我们的菜单。

5.1 - Creating a menu创建菜单

A menu is fairly easy to make in your resource file. If you take a look at the resource text below you will see it's self explaining. Popup menus are menus that have submenus, a menuitem is just a menuitem with an associated ID. These IDs will be defined and can be used in your program to find out which menu item the user clicked on. Finally, the ampersands (&) will underline the character the precede, indicating a shortkey can be used.

在你的资源文件中,很容易就可以创建一个菜单。如果你看一看下面的资源文本,你会看到它是其意自明的。Popup(弹出)菜单是有子菜单的菜单,一个菜单项仅是一个有关联ID的菜单项。这些ID将被定义而且可以被用于你的程序来找出用户点击的是哪个菜单项。最后,&号会下划线首字母,表示它可以使用快捷键。

Add this below the ICON definitions:

添加下面的ICON 定义:

MAINMENU MENU DISCARDABLE

BEGIN

POPUP "&File"

BEGIN

MENUITEM "&New Game", MI_NEWGAME

MENUITEM "&Open Bitmap ", MI_OPENBITMAP

POPUP "&Difficulty"

BEGIN

MENUITEM "&Easy", MI_EASY

MENUITEM "&Medium", MI_MEDIUM

MENUITEM "&Hard", MI_HARD

END

END

POPUP "&Picture"

BEGIN

MENUITEM "Use &standard picture", MI_USESTANDARD

MENUITEM "Use &numbers", MI_USENUMBERS

MENUITEM "Use &bitmap file", MI_USEFILE

END

POPUP "&Colors"

BEGIN

MENUITEM "&Blue color scheme", MI_COLORBLUE

MENUITEM "&Red color scheme", MI_COLORRED

MENUITEM "&Green color scheme", MI_COLORGREEN

MENUITEM "&Ugly color scheme", MI_COLORUGLY

END

POPUP "&Help"

BEGIN

MENUITEM "&About", MI_ABOUT

END

END

Add this below the icon defines (before the code above!):

添加下面的菜单项定义(在前面的代码前!)

#define MAINMENU 301

#define MI_NEWGAME 101

#define MI_OPENBITMAP 102

#define MI_EASY 103

#define MI_MEDIUM 104

#define MI_HARD 105

#define MI_USESTANDARD 106

#define MI_USENUMBERS 107

#define MI_USEFILE 108

#define MI_COLORBLUE 109

#define MI_COLORRED 110

#define MI_COLORGREEN 111

#define MI_COLORUGLY 112

#define MI_ABOUT 113

5.2 - Defining the Ids定义ID

Now you'll have to convert the C definitions to asm equates:

现在我们必须把C定义翻译为asm:

MAINMENU equ 301

MI_NEWGAME equ 101

MI_OPENBITMAP equ 102

MI_EASY equ 103

MI_MEDIUM equ 104

MI_HARD equ 105

MI_USESTANDARD equ 106

MI_USENUMBERS equ 107

MI_USEFILE equ 108

MI_COLORBLUE equ 109

MI_COLORRED equ 110

MI_COLORGREEN equ 111

MI_COLORUGLY equ 112

MI_ABOUT equ 113

When you've converted them, place them in mosaic.inc.

在你翻译完它们后,把它们放入mosaic.inc中。

The resource file and mosaic inc should now look like this: res1.zip

资源和mosaic.inc文件应该和这个一样:res1.zip

5.3 - Adding the menu to your window把菜单加入你的窗口

[in your .data? section]

[在你的.data?部分]

hMenu dd ?

[in your .code section]

[在你的.code部分]

......

invoke RegisterClassEx, addr wc ;AFTER THIS LINE!

invoke LoadMenu, hInstance, MAINMENU ;load menu

mov hMenu, eax ;store handle

INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName, WS_OVERLAPPEDWINDOW-WS_MAXIMIZEBOX-WS_SIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,258,350,NULL,hMenu,\ ;!!!!

hInst,NULL

;NOTE: notice addition of the hMenu parameter

; in the CreateWindowEx call.

......

The hMenu is added to the uninitialized data section to hold the menu handle when it's loaded. LoadMenu will load a menu resource from the instance hInstance (mosaic.exe) with a certain ID (MAINMENU). The handle is stored with 'mov hMenu, eax', then the handle is passed to CreateWindowEx to create a window with a menu. After you have run make.bat you should have a main window with a menu (that does nothing):

HMenu被加入未初始化data部分来在菜单载入后保存菜单句柄。LoadMenu会从实例hInstance(mosaic.exe)中用某个ID(MAINMENU)载入菜单。句柄用‘mov hMenu, eax’保存,然后句柄传递给CreateWindowEx来创建一个有菜单的窗口。在你运行了make.bat之后,你应当有了一个带菜单的主窗口(它什么也不干):

Your source file should look like this now: mosaic.asm

现在你的资源文件应该是这样:mosaic.asm

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有