Win32-Fenster wird nicht angezeigt
CreateWindowEx liefert NULL-Handle?
Hallo,
Ich habe folgendes Problem: Jedes mal, wenn ich die CreateWindowExA(...) Funktion aufrufe, bekomme ich in meinem Projekt ein NULL-Handle. Ich hab schon versucht, ein bereits funktionierendes Fenster aus einem anderen Projekt (aus einem Programmierbuch) einzufügen, und obwohl es in dem dort einwandfrei funktioniert hat, passiert da genau das selbe, deswegen schließe ich einen Fehler der WNDCLASSEXA-Füllung mal aus. Da ich auch kein Fehlercode habe (RegisterWinClassExA liefert wie normal 0) weis ich auch nicht, wo das Problem sein könnte.
Hier der Code: (von meiner Funktion)
Falls es wichtig ist: Ich habe Windows Vista SP 1 und verwende Visual C++ Express Edition 2008
Ich hoffe, jemand kann mir helfen!!!
PS: Wie stelle ich eingendlich mein Projekt um, das das UNICODE - Flag nicht gesetzt wird?
Hallo,
Ich habe folgendes Problem: Jedes mal, wenn ich die CreateWindowExA(...) Funktion aufrufe, bekomme ich in meinem Projekt ein NULL-Handle. Ich hab schon versucht, ein bereits funktionierendes Fenster aus einem anderen Projekt (aus einem Programmierbuch) einzufügen, und obwohl es in dem dort einwandfrei funktioniert hat, passiert da genau das selbe, deswegen schließe ich einen Fehler der WNDCLASSEXA-Füllung mal aus. Da ich auch kein Fehlercode habe (RegisterWinClassExA liefert wie normal 0) weis ich auch nicht, wo das Problem sein könnte.
Hier der Code: (von meiner Funktion)
void CreateForm(void)
{
// Fenster erstellen
WNDCLASSEXA menueclass;
const char szclassname = "SIMyMenueClass";
menueclass.cbSize = sizeof(WNDCLASSEXA);
menueclass.style = CS_HREDRAW | CS_VREDRAW | CS_NOCLOSE;
menueclass.lpfnWndProc = WindowProc;
menueclass.cbWndExtra = 0;
menueclass.cbClsExtra = 0;
menueclass.hInstance = hInstance;
menueclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
menueclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
menueclass.hCursor = LoadCursor(NULL, IDC_ARROW);
menueclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1;
menueclass.lpszMenuName = NULL;
menueclass.lpszClassName = szclassname;
if(!RegisterClassExA(&menueclass))
ExitProcess(0); // Ist nur temporär
hWnd = CreateWindowExA(WS_EX_TOOLWINDOW | WS_EX_TOPMOST,
szclassname, "Menü", WS_OVERLAPPED | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 270, 205,
NULL, LoadMenuA(NULL, "myMenu"), hInstance, NULL);
// Hier kommt immer NULL raus!!!
// Steuerelemente platzieren ...
}
Falls es wichtig ist: Ich habe Windows Vista SP 1 und verwende Visual C++ Express Edition 2008
Ich hoffe, jemand kann mir helfen!!!
PS: Wie stelle ich eingendlich mein Projekt um, das das UNICODE - Flag nicht gesetzt wird?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 138402
Url: https://administrator.de/contentid/138402
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
was liefert denn GetLastError() zurück?
Stefan
PS:
CString GetLastErrorAsString(DWORD _errorID)
{
char GetLastErrorText[1024];
CString tempS;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, _errorID, MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), GetLastErrorText, 1024, NULL );
tempS = GetLastErrorText;
tempS.Trim("\r\n\t ");
return tempS;
}
was liefert denn GetLastError() zurück?
Stefan
PS:
CString GetLastErrorAsString(DWORD _errorID)
{
char GetLastErrorText[1024];
CString tempS;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, _errorID, MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), GetLastErrorText, 1024, NULL );
tempS = GetLastErrorText;
tempS.Trim("\r\n\t ");
return tempS;
}
Hi
Unicode kanst du unter Project ... Properties ... Configuration Properties ... C/C++ ... General.
Dan kannst du unter dem eintrag "Use UNICODE Response Files" den Value auf no setzen .
Denke das ist auch das Problem. Habe aber dein Quellcode nicht angeschaut.!! Stress
Nachtrag:
Schau mal da !
Sollte doch UNICODE tauglich gemacht werden wen ich mich nicht ire !
lowbyte
Unicode kanst du unter Project ... Properties ... Configuration Properties ... C/C++ ... General.
Dan kannst du unter dem eintrag "Use UNICODE Response Files" den Value auf no setzen .
Denke das ist auch das Problem. Habe aber dein Quellcode nicht angeschaut.!! Stress
Nachtrag:
Schau mal da !
hWnd = CreateWindowExA(WS_EX_TOOLWINDOW | WS_EX_TOPMOST ,szclassname, "Menü", WS_OVERLAPPED | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 270, 205, NULL, LoadMenuA(NULL, "myMenu"), hInstance, NULL);
bei "Menü" und "myMenu"
lowbyte