Strings als Parameter wollen nicht so wie gedacht

mschlegel

Erfahrenes Mitglied
Hi

Ich habe zur Zeit immer das Problem das der Compiler String nicht casten kann die ich bei Funktionen der WINAPI angebe
C:
	// Editbox als Child-Fenster erstellen
	hEditBox = CreateWindow("EDIT",
							"Bitte Text eingeben",
							WS_VISIBLE | WS_CHILD | WS_BORDER,
							0, 20,
							300, 20,
							hWnd,
							(HMENU)ID_EDITBOX,
							hInst,
							NULL);

Ich bin im Netz fündig geworden, da hies es man kann dies mit #include <tchar.h> und indem man die Strings in _T("...") packt lösen.

Hier hat das auch funktioniert:
C:
Resultat = MessageBox(hWnd, _T("Wirklich beenden?"), _T("Programm beenden"), MB_YESNO | MB_ICONQUESTION);

Bei der CreateWindow bekomme ich trotzdem immer noch den Fehler: Error 1 error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [7]' to 'LPCWSTR' (die MSDN erklärt mir auch nur dass ein cast-Fehler ist).

Ich verstehe auch nicht warum das Beispiel aus dem Buch nicht so funktioniert wie es da steht, auch die Posts hier im Forum zum Thema CreateWindow haben die Parameter einfach als String übergeben.

Könnte mir das mal jemand erklären?
Danke
 
Funktioniert leider auch nicht.

Kann es an irgendwelchen Kompilereinstellungen liegen...kann ja nicht sein dass alle Beispiele nicht funktionieren sollen.
 
Wenn in der Fehlermeldung "CreateWindowExW" steht, dann entspricht das nicht dem Code Beispiel was du drüber gepostet hast.
"Bitte Text eingeben" ist auch kein 'const char [7]'
Ich vermute da liegt ein ganz simpler Tippfehler irgendwo im Code, aber dazu müsstest du den Code posten der tatsächlich den Fehler produziert.
 
Danke für die rege Beteiligung

Ich konnte das Problem immer noch nicht lösen, und alle Beispiele die ich hier im Forum gefunden hab sind eignetlich genauso aufgebaut.


Der Code ist wie vorher bereits gepostet. Für das Fenster wird CreateWindowEx aufgerufen, für die Elemente im Fenster (Text, Buttons, usw.) CreateWindow.
C:
	// Das Fenster erzeugen
	hWnd = CreateWindowEx (NULL,
						 szClassName,
						 "Das zweite Fenster!",
						 WS_OVERLAPPEDWINDOW | WS_VISIBLE,
						 CW_USEDEFAULT, CW_USEDEFAULT,
						 300, 250,
						 NULL,
						 NULL,
						 hInst,
						 NULL);


	// Statischen Text als Child-Fenster erstellen
	hText = CreateWindow("Static",
							"Eingegebener Text",
							WS_VISIBLE | WS_CHILD | ES_CENTER,
							0, 0,
							300, 20,
							hWnd,
							(HMENU)ID_STATICTEXT,
							hInst,
							NULL);
Die Fehlermeldung sagt aber etwas über CreateWindowExW aus (in allen Fällen).

EDIT: Ich werd noch blöd.

Hab jetzt noch ein Beispiel gefunden und das funktioniert auch nicht (gefunden bei http://pronix.linuxdelta.de/C/win32/win32_1.shtml)
C:
	const char *lpszTitle   = "Eine kleine Anwendung";     // < ------------- Jetzt mal mit char
	// Das Fenster erzeugen
	hWnd = CreateWindowEx (NULL,
						 szClassName,
						 lpszTitle,
						 WS_OVERLAPPEDWINDOW | WS_VISIBLE,
						 CW_USEDEFAULT, CW_USEDEFAULT,
						 300, 250,
						 NULL,
						 NULL,
						 hInst,
						 NULL);
 
Zuletzt bearbeitet:
Zurück