在VBA中定义窗口样式常量(0x00000000 vs&;H000)

在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常量,我

这可能是一个相当基本的问题,但我一直在寻找,找不到解释。 我正在VBA中使用对话框的API函数,我想声明此处定义的窗口样式的常量,以便尝试使用CreateDialog API函数:

通常我在VBA中看到windows常量被定义为长类型,其值类似于
&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会去掉前导零,但这很好:它仍然是相同的数字。