Dein Aufruf ist nicht korrekt!
HWND WINAPI CreateWindowEx( _In_ DWORD dwExStyle, _In_opt_ LPCTSTR lpClassName, _In_opt_ LPCTSTR lpWindowName, _In_ DWORD dwStyle, _In_ int x, _In_ int y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam );
von hier:
Dadurch gibt es anscheinend diese Funktion nicht!
PS: Verwende Alt+s um Code hier zu posten. :)
- msdn.microsoft.com
Dein Aufruf ist nicht korrekt!
von hier:
Dadurch gibt es anscheinend diese Funktion nicht!
PS: Verwende Alt+s um Code hier zu posten. :)
Lieber Carl,
auch beim Aufruf der Funktion mit allen Parametern findet der Metatrader einfach die Funktion CreateWindowEx nicht. Ist das ein generelles Problem? Normalerweise habe ich keine Probleme damit, mit user32-Funktionen zu arbeiten. Und bei falschen Parametern stürzt schlimmstenfalls der Metatrader ab, aber die Funktionen werden gefunden. Ihre Links funktionieren übrigens nicht. Können Sie die evtl. bitte noch einmal senden.
VG Klaus
Bei Dir wird nach einer Funktion mit 9 Parameter gesucht - aber die gibt es offenbar nicht!
Die Anzahl der Parameter ist beim Import erst mal egal. Ich kann in MQL was beliebiges schreiben, da die DLL zur Compile-Time nicht bekannt ist, kann die Signatur auch nicht geprüft werden. Die Runtime "schießt dann aus der Hüfte" und packt einfach alle angegeben Parameter auf den Stack. Stimmen Anzahl oder Typ nicht, crasht die App.
Wenn allerdings die Funktion nicht gefunden wird,liegt die Ursache woanders. In diesem Fall ist der Name der Übeltäter:
... _In_opt_ LPCTSTR lpClassName, _In_opt_ LPCTSTR lpWindowName, ...
Die zwei hier sind Strings, die sind definiert als
#ifdef UNICODE typedef LPCWSTR LPCTSTR; #else typedef LPCSTR LPCTSTR; #endifDafür gibt es je nach Umgebung die Funktionen
CreateWindowExA()
und
CreateWindowExW()
Das sollte dein Problem lösen.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen,
ich würde gerne über die user32.dll ein neues Fenster erstellen. Ich scheitere jedoch schon am Anfang. Ich habe versucht CreateWindowEx wie unten beschrieben zu importieren (keine Ahnung, ob die Parameter richtig sind, aber das ist erst einmal auch egal) und aufzurufen. Ich bekomme das auch alles kompiliert.
Wenn ich das Programm dann in den Chart packe, bekomme ich folgende Fehlermeldung:
2018.01.30 16:46:53.243 Cannot find 'CreateWindowEx' in 'user32.dll'
Ich hätte ja mit allen Fehlermeldungen incl. Absturz gerechnet, aber nicht mit dieser.
Wieso findet der Metatrader 4 die CreateWindowEx-Funktion nicht?
import "user32.dll"
int CreateWindowEx (int dwExStyle, char &pups, char &paps,long dwStyle, int x, int y, int nWidth, int nHeight)
#import
CreateWindowEx(WS_EX_STATICEDGE, //WS_EX_CLIENTEDGE,pups,
paps,
WS_POPUP | WS_BORDER,
100, 100, 100, 100);