2012-08-09 66 views
1

我从一些VB6代码中获得一系列值,我发现online。我需要将此代码转换为C#。我不知道如何阅读VB6。我怎样才能将此VB6转换为等效的C#?将变量值从VB6转换为C#以便与Win32一起使用

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); 

这需要这些类型的变量(如消息PARAM)来看,我相信这应该是这样的形式

const int EM_GETRECT =

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

+0

就在那里'0xB2' – Steve 2012-08-09 16:38:39

+0

@Steve - 这种模式似乎是恰当的第一个3怎么样的最后3为此在&&中? – 2012-08-09 16:40:06

+0

&HB2 - 是一个十六进制代码。 &H表示十六进制...所以C#equivelant将是0xB2。你差不多了! – craig1231 2012-08-09 16:40:26

回答

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如预期

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; 
相关问题