[comp.windows.ms.programmer] Help on GetClientRect function

tony@cs.tamu.edu (Tony Encarnacion) (02/03/91)

I have been trying to use GetClientRect function with no success.
I hope somebody can explain what I have been doing wrong.  The code 
is given below (hWnd is actually a child window, a menu item similar
to the Word-for-Windows' menu below the standard menu bar).  Thanks.

long FAR PASCAL menu_proc (HWND hWnd, unsigned iMessage,
                        WORD wParam, LONG lParam)
{
    HDC hDC;
    LPRECT lpRect;

    switch (iMessage)
    {
            ...
       case WM_RBUTTONDOWN:
            GetClientRect (hWnd, lpRect);  /* <<-- this is where it bombs */
            hDC = GetDC (hWnd);            /* out; */
            InvertRect (hDC, lpRect);      
            ReleaseDC (hWnd, hDC);
            break;
            ...
    };

}

slh@wolf.cs.washington.edu (Scott Heyano) (02/04/91)

In article <11736@helios.TAMU.EDU> tony@cs.tamu.edu (Tony Encarnacion) writes:
[stuff]
|    HDC hDC;
|    LPRECT lpRect;
|
|    switch (iMessage)
|    {
|            ...
|       case WM_RBUTTONDOWN:
|            GetClientRect (hWnd, lpRect);  /* <<-- this is where it bombs */
|            hDC = GetDC (hWnd);            /* out; */
|            InvertRect (hDC, lpRect);      
|            ReleaseDC (hWnd, hDC);
[stuff]
	the declaration should be for a RECT, not a an LPRECT,
	and the uses should be taking the addr of the declared RECT.
	So, you have not declared storage for a RECT struct,
	just a pointer to one and the call to GetClientRect()
	writes into memory at god know's where.