2

私はC#に変換するためにいくつかのVB6を読んでいます。この行はどういう意味ですか?と0&同等IntPtr.Zeroですか?

//'Get a Device context
hdc = GetDC(0&)

IntPtr.Zeroこの値はピンボークに使用されるため、オブジェクトを選択する必要があるため、意味がわかりません。

OldFont = SelectObject(hdc, ObjFont)

ObjFontは、

//'Get the Window's font
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, 0&)//there's that mysterious 0& agaain.
4

4 に答える 4

6

(VB6)型宣言文字です。これらの詳細については、この質問をご覧ください。

あなたの例のVB6コードでは、そうでなければ(2バイト)になるように(4バイト)0にすることを強制していますLongInteger

これは、VB6 コードでこのロングハンド アプローチを実行するのと同じです。

Dim lParam as Long
lParam = 0
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, lParam)
于 2012-08-10T14:39:59.330 に答える
6

IntPtr.Zeroあなたの特定の例では、はい、 C#と同等です。

画面全体のデバイス コンテキストを返すためにGetDCによって使用されるのは、VB6 の "null ハンドル値" です。

于 2012-08-10T14:45:43.063 に答える
3

これは、関数にscreen 全体に対してを返すように指示NULLするwhichを渡すことと同じなので、同等です。GetDC()hDCIntPtr.Zero

于 2012-08-10T14:44:19.187 に答える
0

Clng(0)それは:)と同じです下の人が言ったように;D

于 2012-08-10T14:42:06.187 に答える