Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.02.2007, 13:48

Error Code 1812

Hi all!

Ich stehe wieder vor einem Problem. Diesmal geht es wieder um Windows-Programmierung mit C++. Ich habe mit MSVC++ 6.0 mithilfe des Assistenten eine kleine Dialogbox erstellt (IDD_STARTDLG), die zugehörige resource.h und resource.rc wurden automatisch mitgeneriert.
Nun möchte ich ohne MFC diese Dialogbox aufrufen. Hier der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <windows.h>
#include "resource.h"

hurResult hurriDoConfigDialog (HINSTANCE hInst)
{
int iResult = (int) (DialogBox ( hInst,                                     MAKEINTRESOURCE(IDD_STARTDLG),
      NULL,                                      StartDlgMsgProc)) ;
        
        // ...

    return HURRI_OK ;
}

int __stdcall StartDlgMsgProc (HWND hDlg, uint uiMsg, 
                              WPARAM wParam, LPARAM lParam)
{
//...

}

Nun, der Aufruf DialogBox liefert mir hier -1 zurück, was heisst, dass ein Fehler aufgetreten ist. Eine WSAGetLastError()-Befragung hat mir die Antwort ErrorCode 1812 gegeben.
ErrorCode 1812 ist ein RESOURCE_NOT_FOUND Error. Nun, das verstehe ich nicht ganz, ich habe eben mithilfe des Assistenten die Box erstellt, und er findet auch die ganzen IDs die ich in der Box zugewiesen habe.
An was kann das liegen?

PS: Der Paramter hInst ist der erste Parameter der WinMain.

greetz, Prophecy

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

2

04.02.2007, 14:35

WSAGetLastError() ist eigentlich für WinSocket-Funktionen. Für "normale" Windows-Funktionen solltest du GetLastError() verwenden.

Zitat von »"MSDN Library über DialogBox"«

To get extended error information, call GetLastError.
Ich weiss jetzt nicht ob WSAGetLastError() vielleicht auch für "normale" Windows-Funktionen den richtigen Fehlercode liefert...

Ansonsten: Ist die Ressourcendatei auch im gleichen Ordner wie das Projekt? Was anderes kommt mir gerade nicht in den Sinn...
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

3

04.02.2007, 14:39

GetLastError() liefert auch den ErrorCode 1812.
Ja, die Resourcendatei liegt im selben Projektverzeichnis. Genau aus diesem Grund kann ich mir auch nicht erklären, wieso er es nicht finden kann ....

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

4

04.02.2007, 14:47

Also wenn ich zu Error-Code 1812 eine Beschreibung abfrage kriege ich "Die angegebene Image-Datei enthält keinen Ressourcenabschnitt".
Verwendest du in diesem Dialog ein Bild?
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

5

04.02.2007, 14:55

Nein, ich verwende kein bild. Die DialogBox besteht nur aus einem Button, einem Static Text und einer Combo Box.

6

04.02.2007, 15:15

Hmm jetzt funktionierts. Ich wollte nun eine neue DialogBox erstellen, und plötzlich erweiterte sich der Arbeitsbereich von MSVC++ um ein weiteres Resourcen-Register, was davor nicht war. Nach einer erfolgreichen Kompilierung funktionierte es :)

Seltsam, aber ich bin froh dasses funktioniert :D Aber danke big_muff für deine Bemühungen.

Werbeanzeige