我定义了以下这样的rc资源文件:
#include <resource.h>
#define ico_main   0x1000
#define menu_main  0x2000
#define ida_main   0x3000
#define menu_open  0x4000
ico_main  icon   "main.ico"
menu_main menu  discardable
begin
    popup  "文件(&f)"
    begin
         menuitem        "打开文件(&o)....",menu_open
    end 
end
然后,用rc资源编译后得到个res文件,并用vb的资源编辑器加载,最后得到这样的结果:
----菜单
     8192[英语(美国))
我的工程文件中只包括一个标准模块,其中就是注册窗口类,创建窗口,消息循环等代码,因为要使创建的窗口有菜单,我采用的一种方法是call 
loadmenu从资源文件中得到菜单句柄,然后把菜单句柄作为参数传递给CreateWindowEx来创建带菜单的窗口,不知道是不是vb不支持这种方式,
我call loadmenu后,返回值总是0,具体应该怎么做呢,最好有代码详解,谢谢

解决方案 »

  1.   

    vb的资源文件格式不是这样的。。一个例子:STRINGTABLE
    BEGIN
        8001, "这是来自 resource.res 资源文件编号 8001 的文字"
        8002, "编号 8002 的文字第一行\x0d\x0a这是第二行\x0d\x0a这是第三行"
    END wanglogo BITMAP wanglogo.bmpearth  ICON earth.ico
    moon01 ICON moon01.ico
    moon02 ICON moon02.ico
    moon03 ICON moon03.ico
    moon04 ICON moon04.ico
    moon05 ICON moon05.ico
    moon06 ICON moon06.ico
    moon07 ICON moon07.ico
    moon08 ICON moon08.icobigpoint CURSOR bigpoint.curChimes WAVE Chimes.wav
    Chord  WAVE Chord.wav
    Ding   WAVE Ding.wav
    Tada   WAVE Tada.wav
      

  2.   

    lsftest,谢谢你这么详细的解答,但是vb没有办法像vc那样定义菜单资源,
    然后创建菜单的方法吗?我的意思是先定义菜单资源,然后调用findresource,
    loadmenu等一些api函数来创建菜单(即纯粹调用API和使用资源文件来创建菜单)
    ,这个问题困扰我几天了。
      

  3.   

    Public Declare Function LoadMenuIndirect Lib "user32" Alias "LoadMenuIndirectA" (ByVal lpMenuTemplate As Long) As Long
      

  4.   

    laviewpbt,具体结合到res资源应该怎样使用这个函数,还不知道怎么处理,
    好象这个函数需要一个结构的指针,那我试试,不知道是否能行。
      

  5.   

    http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=67130&lngWId=1
    Finally, you can use menu resource in VB. Let you use resource menu + accelerator keys without VB menu limits.
      

  6.   

    laviewpbt,我第一次来csdn论坛,一 没分,二 连结贴操作
    都不甚清楚,基本上这个问题,我明白了,谢谢你的解答。
      

  7.   

    我又遇到了新问题,关于菜单资源可以调用loadmenuindirect,但是图标资源
    icon格式和光标资源ani格式,在vb中好象没办法使用!
      

  8.   

    http://www.google.cn/search?hl=zh-CN&q=vb+icon&meta=&aq=fhttp://www.google.cn/search?hl=zh-CN&q=vb+ani&meta=&aq=f
      

  9.   

    myjian,我在提问前都有自己先google查找答案的习惯,可是你给的链接地址
    也不是我想要的,如果是set me.icon=loadrespicture(101,3)的话很简单,可是
    我是想得到从res资源文件加载图标(即hicon=loadicon(App.hInstance,idm_ico),
    可是返回值是0,我想出错了,最后一个参数应该怎样给出呢?对于loadmenuindirect
    最后一个参数为byval varptr(array(0))则能成功加载菜单资源,还是希望你继续
    关注。
      

  10.   

    你直接问loadicon( )最后一个参数是什么不就完了,拐了960个弯
      

  11.   

    泰山__抛砖引玉,loadicon( )最后一个参数是什么?
      

  12.   

    这个LOADICON貌似在VB6里不怎么对头.....另外,为什么非要使用这个函数完成图标资源的加载呢?
      

  13.   

    谢谢,老马。因为我是拿着 作者为罗云彬的汇编教程在学习,而且我也见到你推荐
    过这本书的,看到第5章就是使用资源,实在是学得困难。对于上面的问题,难道
    就没有转机了吗?我使用自定义资源的方式:调用findresource,loadresource等
    函数能求得icon图标的句柄,但是就是不知道怎么使用loadicon这个函数。
    简单一句话,就是怎样用loadicon来加载资源文件的图标资源?
    如果确实不能使用这个函数,我就放弃了。
      

  14.   

    如果不使用loadicon函数,有其他的方法吗,只要是能够从资源文件
    获得图标,并且通过sendmessage hwnd,WM_SETICON,ICON_SMALL,hicon
    语句来修改图标,就达到目的了
      

  15.   

    http://topic.csdn.net/t/20051204/17/4437192.html
      

  16.   

    lsftest,我仔细看了是那个是讲从文件加载图标的,不是从资源文件加载,
    不过学习了。
      

  17.   


    罗云彬用汇编写了一个clock
    我把他改成对应的vb代码了
    vbcolckvb调试这类直接调用资源文件的程序比较麻烦
    因为IDE环境没有生成exe 是附加在vb6.EXE里面的 App.hInstance也不是你的程序的,是vb6的所以
    hicon=loadicon(App.hInstance,idm_ico)类似这种 在vbIDE环境只可能返回 0
    必须生成exe来调试然后才能考虑其他代码是否有问题
      

  18.   

    eslbs,谢谢指点我,我终于知道 “在vbIDE环境只可能返回 0 ”这种现象的比较
    权威的解释了,希望VB的闹钟程序能给我启发。