Program Club

LPARAM 및 WPARAM의 정의는 무엇입니까?

proclub 2020. 12. 14. 20:08
반응형

LPARAM 및 WPARAM의 정의는 무엇입니까?


여기에서 게으르다는 것을 알고 헤더 파일을 직접 트롤해야하지만 LPARAM 및 WPARAM 매개 변수의 실제 유형은 무엇입니까? 포인터입니까, 아니면 4 바이트 정수입니까? 일부 C # interop 코드를 수행 중이며 x64 시스템에서 작동하는지 확인하고 싶습니다.


LPARAMwin32 LONG_PTR에서는 long(서명 된 32 __int64비트), x86_64에서는 (서명 된 64 비트) typedef입니다 .

WPARAMwin32 UINT_PTR에서는 unsigned int(부호없는 32 unsigned __int64비트), x86_64에서는 (부호없는 64 비트) typedef입니다 .

MSDN 링크


이러한 typedef는 16 비트로 거슬러 올라갑니다. 원래 LPARAM있던 long(32 비트 서명)과 WPARAM이었다 WORD따라서, (부호없는 16 비트) W 및 L . 인해 메시지 파라미터로서 주조 포인터를 전달하는 것이 일반적으로, WPARAM는 Win32를 32 비트로 확장하고, 양 LPARAMWPARAMWin64를 64 비트로 확장 하였다.

C #에서는 IntPtrfor LPARAMUIntPtrfor WPARAM 을 사용해야합니다 .

LP접두어 에도 불구하고 LPARAMARAM.


LPARAM은 LONG_PTR을, WPARAM은 UINT_PTR을 나타냅니다.

x86에서는 4 바이트이고 x64에서는 8 바이트입니다.


여기:

typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;

내 친구가 필요한 것은 http://www.pinvoke.net/

참고 URL : https://stackoverflow.com/questions/2515261/what-are-the-definitions-for-lparam-and-wparam

반응형