merker schrieb:
[Das Argument zieht auf den ersten Blick immer.
Gegeben sei aber mal folgender Code : (Sinn und Zweck des Codes ist nicht das Thema !)
#define STRICT
#include <windows.h>
typedef LRESULT (CALLBACK *typ_1) (HWND,UINT,WPARAM,LPARAM);
//-----------------------------------------------------------------------------
LRESULT CALLBACK WndProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) {
//-----------------------------------------------------------------------------
MessageBox (0,"WndProc","Hinweis",0);
return 0;
}
//-----------------------------------------------------------------------------
WINAPI WinMain ( HINSTANCE, HINSTANCE, LPSTR, int ) {
//-----------------------------------------------------------------------------
typ_1 meine_cwp = WndProc;
CallWindowProc ((WNDPROC) WndProc,(HWND) 1,2,3,4);
meine_cwp ((HWND) 1,2,3,4);
return 0;
}
CallWindowProc () und meine_cwp () bewirken genau das gleiche : Lediglich einen Aufruf von "WndProc" mit vier Parametern.
Sollte Microsoft vorhaben daran etwas zu ändern, dann würde das Auswirkungen auf sämtlichen Code haben, der "aufwärtskompatibel" geschrieben wurde.
Somit zieht das Argument nicht mehr ganz so stark.
Der Aufruf, den Du hier machst ist irregulär. Erlaubt ist CallWndProc nur mit einer gültigen Fensterprozedur. Und das ist eine die Du mit GetClassInfo bekommst, oder mit GWL_WNDPROC.
Was Du hier machst ist gebastel!