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&

1つの署名で判断する

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

これらのタイプの変数を(Msgパラメータとして)取るので、これらは次の形式である必要があると思います

const int EM_GETRECT =

&HB2をintに変更する方法がわかりません。なると思いますが、これを16進数0x???に変換するにはどうすればよいですか?&HB2

4

2 に答える 2

4

C#で16進値を表す構文は、単純に0xの後に数値の16進表現が続きます。(そして、この表現はVB6とC#で同じです)

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

10進数で178を出力します。

最後の3つの値(&サフィックス付き)は、長いデータ型のVB変数です。
C#では、データ型intはVBlongと同じです。あなたはまだC#整数を使うことができます

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

期待どおりに1を出力します

于 2012-08-09T16:42:11.097 に答える
3

これは、数値が16進数としてフォーマットされた長整数で読み取られることを示しているだけです。(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 に答える