Aufmal gibts nen "Stapelfehler"
-
Hi
Hab hier ne ganz komische sache.
Folgender code, hat schon tausendmal funktioniert, aber auf einmal stürtzt das Programm immer abDX8_LD2D verursachte einen Stapelfehler in Modul DX8_LD2D.EXE bei 01b7:00406fe3. Register: EAX=001ac82c CS=01b7 EIP=00406fe3 EFLGS=00010202 EBX=00affad0 SS=01bf ESP=00affa68 EBP=00affa7c ECX=00901a70 DS=01bf ESI=00008af4 FS=533f EDX=00008b10 ES=01bf EDI=00affa84 GS=6667 Bytes bei CS:EIP: 83 09 00 2d 00 10 00 00 eb e9 29 c1 83 09 00 89 Stapelwerte: 00000000 004016d0 00affad0 00008af4 00affa84 00affa9c bff7363b 00000774 00000024 00000000 00affb10 8ace52e7 000001bf 00affab0 bff94407 66678af4"DX8_LD2D.EXE" ist natürlich meine Anwendung...
Hier der Code:
#define WindowTitle "dx8_LD2d" #define WindowClassName "DDWinClass" HWND hwndmainwnd; //------------------------------------------------------------------------------------------ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int msg_value = MessageBox(NULL, "Soll wirklich gestartet werden?", "dx8_LD2d", MB_ICONQUESTION | MB_YESNO); if(msg_value!=IDYES)return 0; MSG msg; WNDCLASS wndclass_main; if(!hPrevInstance) { wndclass_main.style = CS_HREDRAW | CS_VREDRAW; wndclass_main.lpfnWndProc = WndProc_main; wndclass_main.cbClsExtra = 0; wndclass_main.cbWndExtra = 0; wndclass_main.hInstance = hInstance; wndclass_main.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass_main.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass_main.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wndclass_main.lpszMenuName = NULL; wndclass_main.lpszClassName = WindowClassName; RegisterClass(&wndclass_main); } //Bis hier hin, kommt das Programm, bei CreateWindow stürtzt es ab :( hwndmainwnd = CreateWindow(WindowClassName, WindowTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowCursor(false); ShowWindow (hwndmainwnd, nCmdShow); UpdateWindow(hwndmainwnd); //...Hab schon den teil 1:1 aus meinem !Funktionierenem! backup kopiert, hilft aber auch nichts
Ich habe absolut nicht geändert...
Woran kann das liegen, und wie bekomme ich das wieder zum laufen??
-
if(!hPrevInstance) ... else "geht weiter als wär nix passiert ??"
-
Hab das if weg gemacht, aber es kommt immer noch der selbe fehler

-
RedEagle schrieb:
Hab das if weg gemacht
Gut so.
MSDN schrieb:
hPrevInstance
[in] Handle to the previous instance of the application. This parameter is always NULL.Erstmal solltest du den Rückgabewert von RegisterClass prüfen.
Und dann schau dir mal deine WndProc_main Funktion an. Diese wird bei CreateWindow immerhin auch schon aufgerufen.
-
Es lag wirklich an einer Funkltion in der WndProc_main:
GetPrivateProfileString(ini_group, ini_item, "NULL", ini_value, size, map_path); //... Bitmap_object = DDLoadBitmap(lpDirectDraw, object, 20, 20); //lädt das bitmap SetRect(&rBitmap_object, (X*20), (Y*20), ((X*20)+20), ((Y*20)+20)); //Koordinaten der bmp's lpDDSBack->Blt(&rBitmap_object, Bitmap_object, NULL, DDBLT_WAIT, NULL);//HintergrundDiese beiden Stelle werden 1200 mal Durchgefühert (um eine Map zu laden, die aus vielen 20×20 px großen Bitmaps besteht), liegts evtl daran??
kann ich das denn dann irgendwie verbessern??
-
Habs zum laufen gebracht...
Aus irgendeinem Grund lag's am Funktionskopf...
Hab eine Klasse global gemacht, und schon gings...DANKE
