Jump to content
  • Advertisement
Sign in to follow this  
luasitdown

LPARAM WPARAM

This topic is 4721 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Advertisement
Well... from the headerfiles:
typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;

and:

#if defined(_WIN64)
typedef __int64 INT_PTR, *PINT_PTR;
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;

typedef __int64 LONG_PTR, *PLONG_PTR;
typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;

#define __int3264 __int64

#else
typedef _W64 int INT_PTR, *PINT_PTR;
typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;

typedef _W64 long LONG_PTR, *PLONG_PTR;
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;

#define __int3264 __int32

#endif

there you go: an unsigned int and a long.

Cheers

Share this post


Link to post
Share on other sites
Here is a excerpt from petzold :-

The origin of these names requires a bit of history. When Windows was a 16-bit system, the third parameter to WndProc was defined as a WORD, which was a 16-bit unsigned short integer, and the fourth parameter was defined as a LONG, which was a 32-bit signed long integer. That's the reason for the "W" and "L" prefixes on the word "PARAM." In the 32-bit versions of Windows, however, WPARAM is defined as a UINT and LPARAM is defined as a LONG (which is still the C long data type), so both parameters to the window procedure are 32-bit values. This may be a little confusing because the WORD data type is still defined as a 16-bit unsigned short integer in Windows 98, so the "W" prefix to "PARAM" creates somewhat of a misnomer.

Share this post


Link to post
Share on other sites
Quote:
Original post by Nokturnal
Here is a excerpt from petzold :-
so both parameters to the window procedure are 32-bit values. This may be a little confusing because the WORD data type is still defined as a 16-bit unsigned short integer in Windows 98, so the "W" prefix to "PARAM" creates somewhat of a misnomer.


in winnt win2000, is not WORD 16 bit?

Share this post


Link to post
Share on other sites
Quote:
Original post by ernow
Well... from the headerfiles:
typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;


Cheers


where is HWND ??

typedef /* [wire_marshal] */ void *HWND; //WTypes.h

What is this?

Quote:
Original post by Nokturnal
Here is a excerpt from petzold :-

The origin of these names requires a bit of history. When Windows was a 16-bit system, the third parameter to WndProc was defined as a WORD, which was a 16-..........


Petzold said a wrong thing.
When the WndProc window procedure receives a WM_VSCROLL message, the high word of the lParam parameter is the handle to the child window.

I found the LOWORD is right or whole lparam

Share this post


Link to post
Share on other sites
Yes a WORD is 16 bit on Windows 2000. Petzold wrote his book in 1998, but what it says about the Win32 API is still valid for the most part. However, if you have questions about a specific function, it's probably worth checking MSDN.

Share this post


Link to post
Share on other sites
Quote:
Original post by luasitdown
where is HWND ??

typedef /* [wire_marshal] */ void *HWND; //WTypes.h

What is this?


What is what?

A HWND is a void pointer.

typedef void *HWND;

I don't recall which header file it's defined in. windef.h maybe.

/* [wire_marshal] */

This comment imparts information relevant for COM ("common object model" not old school .com files) applications. Don't worry about it.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!