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

Mischu

Frischling

  • »Mischu« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Olten (Schweiz)

Beruf: Javaentwickler (swissinfo.ch)

  • Private Nachricht senden

1

10.02.2010, 17:16

Verständnisfrage wegen Dialogbox

Hallo zusammen

Wiedermal ne kleine Frage von mir.

Bin gerade daran die Dialogbox aus dem Buch einwenig umzubauen bzw am analysieren.

Jedoch habe ich das Problem, dass die Dialogbox und die Callback funktion garnet aufgerufen wird ( habs mit dem debugget überprüft )

Hat jemand nen kleinen Anstupser an was es liegen könnte, bzw was es noch braucht? Applikation läuft sauber durch aber der Returnwert der Dialogbox ist -1 und wird demnach ned angezeigt.

Ich dachte erst es gibt n Problem mit dem Handle, deshalb übergeb ich die HINSTANCE der Main.

Hier mal mein Code:

Dialogbox.h

C-/C++-Quelltext

1
2
3
#include<Windows.h>

int startD3DDialog( HINSTANCE hInstance );


Dialogbox.cpp

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
#include"Dialogbox.h"
#include"Allgemeines.h"

/* Handler für Nachrichten im Dialogfeld */
INT_PTR CALLBACK dialogProcess(HWND hDlg, unsigned int uiMsg, WPARAM WParam, LPARAM LParam)
{
    switch(uiMsg)
    {
    case WM_INITDIALOG:
        // Optionskästchen einstellen

        CheckDlgButton(hDlg, IDC_D3DS_FULLSCREEN_MODE, BST_CHECKED);
        CheckDlgButton(hDlg, IDC_D3DS_HARDWARE_TNL, BST_CHECKED);
        break;

    default:
        return FALSE;
    }
    return TRUE;
}

int startD3DDialog(HINSTANCE hInstance)
{
    return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIRECT3D_SETTINGS), NULL, dialogProcess); 
}



Dialogboxtest.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#include"Dialogbox.h"

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    int result = startD3DDialog(hInstance);
    return 0;
}


Allgemeines.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define IDD_DIRECT3D_SETTINGS           901
#define IDC_D3DS_OK                     9001
#define IDC_D3DS_CANCEL                 9002
#define IDC_D3DS_ADAPTERS               9003
#define IDC_D3DS_DEVICE_TYPES           9004
#define IDC_D3DS_WINDOWED_MODE          9005
#define IDC_D3DS_FULLSCREEN_MODE        9006
#define IDC_D3DS_VIDEO_MODES            9007
#define IDC_D3DS_BACK_BUFFER_FORMATS    9008
#define IDC_D3DS_Z_STENCIL_BUFFER_FORMATS 9009
#define IDC_D3DS_MULTI_SAMPLING_TYPES   9010
#define IDC_D3DS_MULTI_SAMPLING_QUALITIES 9011
#define IDC_D3DS_HARDWARE_TNL           9012
#define IDC_D3DS_SOFTWARE_TNL           9014
#define IDC_D3DS_DESCRIPTION            9016
#define IDC_D3DS_SAVE                   9015
#define IDC_D3DS_LOAD                   9017

2

10.02.2010, 17:45

Hast du eine RC-Datei in deinem Projekt?
Ressource sozusagen, in der die Dialogbox und die Felder definiert sind?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

10.02.2010, 17:47

Und die resource is in deiner exe drin?

EDIT: Trikkie Mikkie -.-

Mischu

Frischling

  • »Mischu« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Olten (Schweiz)

Beruf: Javaentwickler (swissinfo.ch)

  • Private Nachricht senden

4

10.02.2010, 17:51

danke euch beiden. :D

Das wars, habs auch gerade rausgefunden...sehe bei den Resourcen noch ned so durch, aber es kommt ;)


Edit:

-1 gibts in dem Fall wenn Resourcen fehlen...ist tricky dass ers trotzdem kompilieren kann

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

5

12.02.2010, 14:42

Zitat von »"Mischu"«

-1 gibts in dem Fall wenn Resourcen fehlen

-1 wird immer zurückgeliefert, wenn die Funktion fehlschlägt (außer bei Ungültigem Fensterhandle dann ist der Rückgabewert 0).

Zitat

If the function fails because the hWndParent parameter is invalid, the return value is zero. [...] If the function fails for any other reason, the return value is –1.

Quelle:http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx

Darauf verlassen, das -1 einem Fehler entspricht sollte man sich allerdings nicht, denn EndDialog(dlg, -1); führt auch dazu, dass DialogBox -1 zurückliefert.

Achja:

Zitat

Dialog boxes created by the DialogBox [...] [function] must be destroyed using the EndDialog function

Quelle:http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx

Zitat von »"Mischu"«

ist tricky dass ers trotzdem kompilieren kann

Der Compiler kann das ja nicht wissen...
Signaturen werden überbewertet

Werbeanzeige