K
hi,
das is eigentlich relativ "leicht",
du machst eine wndproc in der klasse, und eine "ausserhalb".
beim erstellen des fensters gibst du als dialog proc die proc ausserhalb an, und übergibst als lParam den this zeiger.
von da aus rufst du dann die klassenfunktion aus
hiermal beispielcode (von der klasse die ich gerade mach):
/* die "aussenstehende" wndproc
* BalloonTip is der klassenname ^^
*/
LRESULT CALLBACK BalloonWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ){
BalloonTip* bt = ( BalloonTip * )GetWindowLong( hWnd, GWL_USERDATA );
switch( message ){
case WM_CREATE:
bt = ( BalloonTip * )( ( CREATESTRUCT * )lParam )->lpCreateParams;
SetWindowLong( hWnd, GWL_USERDATA, long( wnd ) );}
bt->WndProc( hWnd, message, wParam, lParam );
return DefWindowProc( hWnd, message, wParam, lParam );}
// erstellen des fensters in der klasse
hBalloon = CreateWindowEx( WS_EX_TOOLWINDOW | WS_EX_TOPMOST, "balloon", "BalloonTip",
WS_POPUP, (r.right + r.left) / 2, (r.top + r.bottom) / 2,
widthofball, heightofball, NULL, 0, 0, ( CREATESTRUCT * )this );
//und halt die wnd proc , in der klasse
BalloonTip::WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
switch(message){
.
.
.
}
return 0;
}
mfg
k1ro