2012-08-10 5 views
2

C#으로 변환 할 일부 VB6을 읽고 있습니다. 이 선은 무엇을 의미합니까? 은 IntPtr.Zero과 동일합니까?GetDC (0 &)는 무엇을 의미합니까?

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

이 값은 PInvoke를하는 데 사용됩니다, 그래서 우리가 어떤 객체를 선택해야하기 때문에 IntPtr.Zero는 의미가 확실하지 않다.

OldFont = SelectObject(hdc, ObjFont) 

참고가 ObjFont가 그것은 (VB6)이다

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

답변

6

통해 채워 선언 문자를 입력. 자세한 내용은 this question을 참조하십시오. 귀하의 예를 들어 VB6 코드에서

는 그렇지 않으면 Integer (2 바이트)

그것은이 긴 손 접근 방식을 다시 VB6 코드를 수행와 동일한 것 같은 Long (4 바이트)로 0을 강요 :

Dim lParam as Long 
lParam = 0 
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, lParam) 
+0

그래서 디바이스 컨텍스트가 0이 되었습니까? 그게 무슨 뜻 이죠? 나는 그것이 뭔가를 처리하려고 노력하고 있다고 생각합니다. –

+2

@ P.Brian.Mackey MSDN에서 : "매개 변수가 NULL이면 전체 화면에 대해 DC를 얻습니다." – James

+0

그리고 VB6의 'Long'은 32 비트 부호있는 정수입니다. 'System.Int32'에 상응하거나 C# 별칭'int'를 사용합니다. –

0

동일한 것에 따라 Clng(0) : 사람은 다음 상기 된 바와 같이, WH NULLGetDC()에 전달하는 것과의 D

+1

VB6에서는 VB6에서 'Clng (0)'과 동일합니다. –

+1

C#에서'0l'은 64 비트입니다. VB6에서는 '0'은 32 비트 ('0'은 16 비트)입니다. –

+0

오, 내 잘못했다. 설명을위한 Thx :) – Nickon

3

ich는 전체 화면 에 대해 hDC을 반환하는 함수를 지정합니다.이므로 IntPtr.Zero은 같습니다.

6

구체적인 예로는 C#의 IntPtr.Zero과 같습니다.

VB6의 경우 "null 핸들 값"이며 GetDC이 전체 화면의 장치 컨텍스트를 반환하는 데 사용됩니다.