Re: Crash when overriding tree view wndproc

"Roman Keskenti" <[email protected]> Wed, 4 Jul 2007 15:30:57 +0200
Newsgroups gmane.games.devel.windows
Message-ID <A2A6A8238D0D4B3BB6C7FFBD1461C56B@keskentic2>
Pierre,

i think you're supposed to use the CallWindowProc API instead of calling the 
superclass proc yourself.

static LRESULT CALLBACK MyTreeViewWndProc(HWND hwnd, UINT uMessage, WPARAM
wParam, LPARAM lParam)
{
    return ::CallWindowProc( OldWndProc, hwnd, uMessage, wParam, lParam);
}

Roman

----- Original Message ----- 
From: "Pierre Terdiman" <[email protected]>
To: "Game Development for MS Windows" 
<[email protected]>
Sent: Wednesday, July 04, 2007 3:23 PM
Subject: [GD-Windows] Crash when overriding tree view wndproc


> Hi,
>
> I'm trying to override the treeview wndproc to catch some messages. For
> other controls it worked fine, but with this one it crashes as soon as I
> call the old wndproc. So it looks like this:
>
> mHWnd = IceCore::CreateWindowEx(
>    WS_EX_CLIENTEDGE,
>    WC_TREEVIEW,
>    "",
>    dwStyle,
>    desc.mX, desc.mY,
>    desc.mWidth, desc.mHeight,
>    hwndParent,
>    (HMENU)desc.mID,
>    (HINSTANCE)GetModuleHandle(null),
>    null
>    );
>
>
> And then to override the wndproc:
>
> typedef LRESULT (CALLBACK * WndProc_t)(HWND hwnd, UINT uMessage, WPARAM
> wParam, LPARAM lParam);
>
> static WndProc_t OldWndProc = 0;
>
> OldWndProc = (WndProc_t) SetWindowLong(mHWnd, GWL_WNDPROC,
> (LONG)MyTreeViewWndProc);
>
>
> The new wndproc is simply calling the old one at the moment:
>
> static LRESULT CALLBACK MyTreeViewWndProc(HWND hwnd, UINT uMessage, WPARAM
> wParam, LPARAM lParam)
> {
>    return (OldWndProc)(hwnd, uMessage, wParam, lParam);
> }
>
> ==> this crashes inside the old wndproc somewhere. However this same
> procedure worked fine for other controls (list boxes, edit boxes....) so 
> I'm
> not sure what's going on.
>
> Is there something special about the treeview's wndproc?
>
> Thanks,
> - Pierre
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Gamedevlists-windows mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows
> Archives:
> http://sourceforge.net/mailarchive/forum.php?forum_id=555
> 


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Gamedevlists-windows mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows
Archives:
http://sourceforge.net/mailarchive/forum.php?forum_id=555