Probleme mit Resourcen (Erstellen eines modalen Dialoges funktioniert nicht)



  • Hallo,

    Ich arbeite mich gerade in das Thema Resourcen ein und versuche jetzt einen modalen Dialog zu erstellen. Allerdings funktioniert das nicht richtig. Es erscheint einfach kein Dialog. Hier mein Code für die Resource (von Weditres erstellt):

    Auszug aus der Resource-Datei:

    ID_ICON ICON DISCARDABLE "D:/Programmierung/C++/voclearn/voclearning.ico"
    
    IDD_DLG1 DIALOGEX 6,6,194,102
    CAPTION "IDD_DLG"
    FONT 8,"MS Sans Serif"
    STYLE 0x10CF0000
    EXSTYLE 0x00000000
    BEGIN
      CONTROL "test",IDC_STC1,"Static",0x50000000,60,16,78,13,0x00000000
    END
    

    Hier der Aufruf des Dialoges:

    DialogBox(hinstance, TEXT("IDD_DLG1"), hwnd, (DLGPROC) DialogAboutProc);
    

    Hier die DialogAboutProc

    BOOL CALLBACK DialogAboutProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    switch (msg)
       {
       case WM_INITDIALOG:
          return (TRUE);
       case WM_CLOSE:
       case WM_DESTROY:
          EndDialog (hwnd, 0);
          return (TRUE);
       }
    
       return (FALSE);
    }
    

    Eine Aufschlüsselung von GetLastError() direkt hinter DialogBox() sagt: "Der angebene Resourcenname wurde nicht in der Image-Datei gefunden" (Fehlernummer: 1814)

    Hat einer eine Ahnung woran das liegen kann?



  • IDD_DLG1 ist sicherlic hein #define für einen numerischen wert? Dann MAKEINTRESOURCE



  • Ich habe jetzt:

    DialogBox(hinstance, TEXT("IDD_DLG1"), hwnd, (DLGPROC) DialogAboutProc);
    

    durch

    DialogBox(hinstance, MAKEINTRESOURCE("IDD_DLG1"), hwnd, (DLGPROC) DialogAboutProc);
    

    ersetzt und es geht nicht. Außerdem steht in meinem Petzhold der DialogBox Aufruf mit TEXT("xy").



  • Es geht jetzt 🙂 ,ich darf den Parameter von MAKEINTRESOURCE nicht in "" setzen.

    Aber hat vielleicht einer eine Idee warum das in meinem Buch mit TEXT("xy") steht?
    (Windows Programmierung, Auflage 5, Autor: Charles Petzold)



  • Resourcen können auf zwei Arten identifiziert werden:

    - einen Integer (< 65536)
    - einen Namen



  • Und wie macht man das dann mit einem Namen?

    Also ich meine wie muss man die Resource Datei anpassen?



  • Dann mußt du den namen in der resourcendatei auch in Gänsefüße setzen:

    "IDD_DLG1" DIALOGEX 6,6,194,102
    

    (glaub ich zumindest 🙄 )


Anmelden zum Antworten