1

我从网上找到的一些 VB6 代码中获得了一系列值。我需要将此代码转换为 C#。我不知道如何阅读 VB6。如何将此 VB6 转换为等效的 C#?

Private Const EM_GETRECT = &HB2;
Private Const EM_SETRECT = &HB3
Private Const EM_SCROLLCARET = &HB7

Private Const ES_AUTOHSCROLL = &H80&
Private Const ES_AUTOVSCROLL = &H40&
Private Const ES_CENTER = &H1&

由一个签名判断

[DllImport("coredll.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

采用这些类型的变量(作为 Msg 参数),我相信这些应该是形式

const int EM_GETRECT =

我不知道如何将其更改&HB2为 int。我想它会是0x???,但是我如何将这个小转换&HB2为十六进制?

4

2 回答 2

4

在 C# 中表示十六进制值的语法只是 0x 后跟数字的十六进制表示。(并且这种表示在 VB6 和 C# 中是相同的)所以你写

private const int EM_GETRECT = 0xB2;
Console.WriteLine(EM_GETRECT);

打印出十进制的 178。

最后三个值(带有 & 后缀)是长数据类型的 VB 变量。
在 C# 中,数据类型 int 与 VB long 相同。您仍然可以使用 C# 整数

private const int ES_CENTER = 0x1; 
Console.WriteLine(ES_CENTER);

按预期打印 1

于 2012-08-09T16:42:11.097 回答
3

它只是表示以长整数读取数字,格式为十六进制。(在 H 之后)

如果需要,您可以只使用这些值:

const int EM_GETRECT = 0xB2;
const int EM_SETRECT = 0xB3;
const int EM_SCROLLCARET = 0xB7;

const int ES_AUTOHSCROLL = 0x80;
const int ES_AUTOVSCROLL = 0x40;
const int ES_CENTER = 0x1;
于 2012-08-09T16:44:27.513 回答