在定义API的时候,都有很多Const那后面的16进制的参数又是什么意思,如果我又想传别的参数那这个 &  & 中间又是什么,比如说Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As LongConst MF_STRING = &H0&
Const MF_DISABLED = &H2&
Const MF_GRAYED = &H1&
Const MF_SEPARATOR = &H800&
那我现在要用  AppendMenu hMenu, MF_BYPOSITION, 1, "111111"那我这个MF_BYPOSITION又要如何定义呀,或者哪里有参考这个值的问题呀

解决方案 »

  1.   

    Const MF_BYPOSITION As Long = &H400&
      

  2.   

    API Text Viewer -> Constants
      

  3.   

    对呀! 定义这些常量有什么规定,或者为什么是这些值啊!Const MF_BYPOSITION As Long = 748 '这样不行么?为什么必须是&H400&
      

  4.   

    在VB里自带的API浏览器的常量中可以查到这些值。常量如Const MF_BYPOSITION = &H400& ,MF_BYPOSITION只是为了便于区分或记忆一些值而赋给这些值的字符串。在程序中起作用的是那些值而不是字符串,这些字符串在代码中是毫无意义的。定义常量就是为了让程序可以识别这些字符串。如:AppendMenu hMenu, MF_BYPOSITION, 1, "111111" 这句
    不定义常量的话,可以直接写成AppendMenu hMenu, &H400&, 1, "111111" 
    如果常量定义为 Const aaaa = &H400&,则应写成AppendMenu hMenu, aaaa, 1, "111111"像楼上说的,Const MF_BYPOSITION As Long = 748 也是可以的,但事先确认你代码中MF_BYPOSITION处用到的值是748,而不是&H400。
      

  5.   

    //那这个 &  & 中间又是什么不是这样理解的,前面的“&H”表示这是一个进六进制数,后面的“&”表示它是long型的
      

  6.   

    呵呵~~~看过《windows程序设计》你就会明白了API函数属于底层函数,大都由c编写,所以使用时很多是要传入16进制数,就像汇编里的控制字,而为了使用上的方便就将这些特定的控制字翻译成了易懂的字符,如英文单词。而使用Const就是为了这个目的,如果定义了 Const MF_STRING = &H0& 那在使用的时候就可以传入 MF_STRING 就相当于传入了 &H0& 的控制字,避免去记忆这些控制字了。不知道我这样的解释你明白了没有,不明白的我们继续讨论~
      

  7.   

    关于那个符号,这是VB的语法规则,楼上的 BlueBeer(1win) 正解