在VBA中定义窗口样式常量(0x00000000 vs&;H000)
这可能是一个相当基本的问题,但我一直在寻找,找不到解释。 我正在VBA中使用对话框的API函数,我想声明此处定义的窗口样式的常量,以便尝试使用CreateDialog API函数: 通常我在VBA中看到windows常量被定义为长类型,其值类似于在VBA中定义窗口样式常量(0x00000000 vs&;H000),vba,winapi,dialog,constants,window-style,Vba,Winapi,Dialog,Constants,Window Style,这可能是一个相当基本的问题,但我一直在寻找,找不到解释。 我正在VBA中使用对话框的API函数,我想声明此处定义的窗口样式的常量,以便尝试使用CreateDialog API函数: 通常我在VBA中看到windows常量被定义为长类型,其值类似于&H000或类似的值。但是,我找不到这些常量的&H000格式值,我只能找到0x00000000格式值 例如,请参阅OpenFileName文档并向下滚动到标志。常量表达式以0x00000000格式列出。但是,如果我们查看CommonDialog常量,我
&H000
或类似的值。但是,我找不到这些常量的&H000
格式值,我只能找到0x00000000
格式值
例如,请参阅OpenFileName文档并向下滚动到标志。常量表达式以0x00000000
格式列出。但是,如果我们查看CommonDialog常量,我们可以看到相同的常量及其值以&H000
格式列出
所以我想我至少有三个问题:0x0000000值代表什么?
&H000值代表什么?
他们是一种在他们之间转换的方式吗
因为我尝试将
Public Const WS_BORDER声明为Long=0x00800000L
,并且在“x”后面有一个语法区域,表示语句的预期结束 > P> >代码> 0x…L/Obj>格式,用于C++(我相信在其他几种语言中也是如此)。0x
表示该数字是十六进制的,L
表示编译器应将其解释为长
等价的VBA语法是&H..&
,其中&H
表示十六进制,&
表示长
例如,你的声明:
Public Const WS_BORDER as Long = 0x00800000L
应该是:
Public Const WS_BORDER as Long = &H00800000&
听起来很简单。但是,表达式末尾的“L”仍然给出语法错误。例如,我将
Long=0x00800000L
更改为Long=&H00800000L
,它在“L”上给出了一个语法错误,表示语句的预期结尾L
后缀也是一个C习惯用法,只需将它放在VBA:Public Const WS_BORDER中,因为Long=H&00800000
有趣。我得读点书。就在您发布并尝试将L后缀转换为&之前,我发现它的作用与删除L相同。我发现有趣的是,VB会自动将H&00800000
或H&00800000&
转换为&H800000
&H是VBA的0x等价物。它向VBA发出信号,表示数字将为十六进制。你可以那样进去。L不是数字的一部分。我确实尝试了&H…&
格式,但VBA会在我离开该行时自动将其缩短,我认为这很有趣。VBA会去掉前导零,但这很好:它仍然是相同的数字。