Parameter falsch?
-
Also ich hab ne Dialogprozedur:
BOOL CALLBACK tDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);So und den Dialog ruf ich so auf:
DialogBox (hInstance, TEXT("IDC_DIALOG"), NULL, tDlgProc);So jetzt gibt der Compiler jedoch diese Fehlermeldung aus und ich weis nicht warum:
error C2664: 'DialogBoxParamW' : Konvertierung des Parameters 4 von 'int (void *,unsigned int,unsigned int,long)' in 'int (__stdcall *)(void)' nicht moeglich
-
Möglicherweise wird der Prototyp der DlgProc-Funktion nicht vorher definiert.
BOOL CALLBACK t_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
::DialogBox(hInstance, _T("IDC_DIALOG"), NULL, (DLGPROC)tDlgProc);
-
Definiere folgendes Makro _vor_ deinen Includes.
#define STRICTAnsonsten nimmt es die WinAPI nicht so genau mit dem Typsystem, und dir bleibt nichts anderes übrig, wie (D)Evil schon geschrieben hat, als zu casten.
btw:
Ein Dialog Handler hat mittlerweile folgende SignaturINT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
? Sry aber ich seh bei deinem "Dialog Hanlder" keinen großen Unterschied

INT_PTR sollte im mo auch als int definiert sein... genau wie BOOL

-
Signed integer type for pointer precision. Use when casting a pointer to an integer to perform pointer arithmetic.
This type is declared in BaseTsd.h as follows:#if defined(_WIN64) typedef __int64 INT_PTR; #else typedef int INT_PTR; #endifBoolean variable (should be TRUE or FALSE).
This type is declared in WinDef.h as follows:typedef int BOOL;Also irgendwie sehe _ich_ den Unterschied schon.

-
Jop... unter 64bit... aber sonnst net
