SetWindowLongPtr Problem
-
Hallo,
ich habe das Problem, wenn ich SetWindowLongPtr() in einer Funktion meiner Klasse aufrufe, dann kommt die Fehlermeldung:
error C2440: 'type cast' : 'long (__stdcall CTextField::)(struct HWND__ *,unsigned int,unsigned int,long)' kann nicht in 'long' konvertiert werden
*es ist vom Code her aber alles Richtig soweit..
Muss man etwas beachten wenn die Callback Funktion mit zB. in er Klasse ist ?int CTextField::Create( int x,int y,int width, int height, HWND hwnd, HINSTANCE hInstance) { hWndTxt = CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | WS_BORDER , x,y,width, height, hwnd, (HMENU)ID_TEXTFELD, hInstance, NULL); PrevWndProcTxtField = SetWindowLongPtr(hWndTxt, GWLP_WNDPROC, (LONG_PTR)txtWndProc); return 1; } LRESULT CALLBACK CTextField::txtWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_KEYDOWN: break; } return CallWindowProc ((WNDPROC) PrevWndProcTxtField, hwnd, message, wParam, lParam); }
[ Dieser Beitrag wurde am 30.10.2002 um 09:44 Uhr von personenkult editiert. ]
-
Die Callback-Funktion muss static sein
-
hmmmmm.. was static bedeutet ist mir klar, aber wieso muss man das hier Anwenden?
und wieso sagt mein Compiler nun error LNK2001: Nichtaufgeloestes externes Symbol "private: static long CTextField::PrevWndProcTxtField" (?PrevWndProcTxtField@CTextField@@0JA)
-
header:
static LRESULT CALLBACK txtWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
cpp:
LRESULT CALLBACK CMakeHexDlg::txtWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-
header:
private: static LONG_PTR PrevWndProcTxtField;
die Fehlermeldung sagt ja das mit PrevWndProcTxtField was nich stimmt..
error LNK2001: Nichtaufgeloestes externes Symbol "private: static long CTextField::PrevWndProcTxtField" (?PrevWndProcTxtField@CTextField@@0JA)
*
-
oh, da hab ich wohl etwas zu schnell gelesen...
Abhilfe für dein Problem ist folgende Zeile in der cpp-Datei:LONG_PTR CTextField::PrevWndProcTxtField ;
schau dir noch mal das Kapitel zu statischen Variablen/Methoden in Klassen an, so ganz klar ist glaubich nocht net.. :p
-
ja da hast du wohl Recht mit .. trotzdem Dankeschön!