鸿 网 互 联 www.68idc.cn

VS2005中,开发本地代码Smartphone程序,菜单编辑器的问题推荐

来源:互联网 作者:佚名 时间:2018-02-25 10:25
无论怎么编辑,编译出来的菜单都是默认的。因为RES目录的rc2资源文件VS2005没有改。总是这样的:IDR_MAINFRAME SHMENUBAR DISCARDABLE BEGIN IDR_MAINFRAME, 1, I_IMAGENONE, IDOK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_OK, 0, NOMENU,
无论怎么编辑,编译出来的菜单都是默认的。因为RES目录的rc2资源文件VS2005没有改。总是这样的: IDR_MAINFRAME SHMENUBAR DISCARDABLE
BEGIN
 IDR_MAINFRAME,
 1,
 
 I_IMAGENONE, IDOK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE,
 IDS_OK, 0, NOMENU,
END   所以,无论怎么编辑都不行。   解决方法: 先改一下这个文件再编辑菜单。   比如说,改成这样: IDR_MAINFRAME SHMENUBAR DISCARDABLE
BEGIN
 IDM_MENU,
 2,
 
 I_IMAGENONE, IDOK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE,
 IDS_OK, 0, NOMENU,
 I_IMAGENONE, IDM_MENU, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_MENU, 0, 0,
END   那么,需要在编辑器中创建一个ID为IDM_MENU的菜单条,再建立一个IDS_MENU的字符串资源,改字符串就是显示出来的菜单的名字。   经过后续查证,VS2005针对Smartphone的菜单编辑器就是这样设计的,也就是在菜单编辑器中编辑的只是菜单的内容,这些内容是保存在rc文件中的,而菜单条是作为RCDATA保存在rc2资源文件中。   其思路应该源于WM5.0对与菜单的全新设计。在WM5.0中,无论是ppc中的菜单还是sp中的菜单,都是一样的,即支持左右软键,左右软键分别可以弹出一个菜单。所以,微软认为这个东西不是菜单,是工具条,而真正的菜单是左右软键弹出的那个东西。所以,在菜单编辑器中编辑的是左右软键弹出的菜单,而在rc2文件中保存的是工具条的定义。   也就是说,我们把编辑菜单的问题称为Bug也好,称为其他也好,但是总而言之,现在基于Smpartphone和wm5.0的本地代码开发,对于“工具条”的定义需要我们自己手动完成了。   针对RCDATA的定义,有一些说明: IDR_MAINFRAME SHMENUBAR DISCARDABLE IDR_MAINFRAME是在程序中load工具条的ID,在resources.h中定义一个ID就可以了。 SHMENUBAR DISCARDABLE不清楚,照抄就可以了。
BEGIN
 IDM_MENU, IDM_MENU是在菜单编辑中编辑菜单的ID,此菜单对于smartphone2003来说,横向的定义只能有一项(且文字内容是什么无关紧要),因为smartphone2003只支持左右键中一个是弹出菜单。对于wm5.0来说,可以有两项(尚未验证)。
 2,
 1或者2,取决于要左键还是左右都要。
 I_IMAGENONE, IDOK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE,
 IDS_OK, 0, NOMENU, 如果是button性质的,要定义为TBSTYLE_BUTTON,并且最后是NOMENU。IDOK为在资源头文件中随便定义的ID就可以,IDS_OK对应的字符串资源是将来显示的内容。
 I_IMAGENONE, IDM_MENU, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_MENU, 0, 0, 如果是弹出式菜单,定义为TBSTYLE_DROPDOWN,且最后一位为0。IDM_MENU为在资源头文件中随便定义的ID就可以。
END END之后一定要加一个回车,否则编译报fatal error RC1004的错误。   更详细的内容,可以看一下这个网址: [url]http://blogs.msdn.com/johnkenn/archive/2005/08/22/454858.aspx[/url]
网友评论
<