将变量值从VB6转换为C#以便与Win32一起使用

时间:2012-08-09 16:36:32

标签: c# vb6

我从一些我发现的online的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转换为十六进制?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;