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

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

1

18.10.2004, 18:51

Gerätetyp überprüfen

Hi,
zur Zeit programmiere ich die Dialogbox von david nach. Leider wird bei Abfragen des Gerätetypes kein Eintrag in die Liste vorgenommen.

Folgenden soucre habe ich für die Funktion:

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
26
27
28
29
//Gerätetyp setzen

BOOL Check_GeraeteType(HWND hWnd)
{
    //Vorbereitungen:

    D3DDEVTYPE  aDeviceType[]       = {D3DDEVTYPE_HAL,D3DDEVTYPE_REF,D3DDEVTYPE_SW};
    char*       acGeraeteType[]     = {"Hardwarebeschleunigung","Referenz-Rasterizer","Softwarebeschleunigung"};
    int         iAdapter            = (int)(SendDlgItemMessage(hWnd,IDC_Adapter,CB_GETCURSEL,0,0));
    
    
    SendDlgItemMessage(hWnd, IDC_Geraetetype, CB_RESETCONTENT,0, 0);
    
    

    //Caps-Struktur

    D3DCAPS9    Caps;
    
    for(int iGeraeteType = 0; iGeraeteType < 3; iGeraeteType++)
    {
        if(SUCCEEDED(pAdapter->GetDeviceCaps(iAdapter,aDeviceType[iGeraeteType],&Caps)))
        {
            SendDlgItemMessage(hWnd, IDC_Geraetetype, CB_ADDSTRING  ,0,*acGeraeteType[iGeraeteType]);           
        }
    }

    //Anzeige auf die erste Position in der Liste setzen

    SendDlgItemMessage(hWnd, IDC_Geraetetype, CB_SETCURSEL, 0, 0);

    return (true);
}


Wenn jemand den Fehler sieht oder mir sagen kann, wieso in dem Beispiel auf der CD noch extra Speicher allokiert wird, wäre es nett sich eben zu melden. Leider kann ich mit der Speicherreservierung nicht anfangen.

Ich freue mich über jede Antwort

Mfg

Der Dude
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

18.10.2004, 19:15

lParam = (LPARAM) (LPCTSTR) lpsz; // address of string to add

Also die casts würde ich schon mit rein nehmen ;)

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

3

18.10.2004, 19:23

Danke Nox //kommt der Name von dem Spiel?
Habe es grade auch selber geschafft.

C-/C++-Quelltext

1
SendDlgItemMessage(hWnd, IDC_Geraetetype, CB_ADDSTRING  ,0,(LPARAM)acGeraeteType[iGeraeteType]);

ca. eine Minute vor deiner Antwort /*ganz ehrlich ;) */ .
Aber leider kann ich nur den ersten Menüpunkt auswählen. Hast du vielleicht dafür auch einen Idee??

Mfg

der Dude
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

18.10.2004, 19:27

*schnupper schnupper*

http://www.zfx.info/Tutorials.php?ID=78 :)

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

5

18.10.2004, 21:25

Falls jemand noch eine andere Lösung hat, bin ich um jede hilfe dankbar

mfg
der dude
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

6

18.10.2004, 22:04

Also um mein Problem genauer zu beschreiben:
Leider ist mir unklar wieso noch speicher reserviert werden muss, weil jeden anderen Listeneintrag kann man auch über CB_ADDSTRING hinzufügen. Achso kennt jemand CB_SETITEMDATA? nach meiner meinung wird dieses nicht mehr benötigt, da ja schon der eintrag erledigt worden ist.

Wie gesagt ich bin über jede hilfe dankbar - bin grade am nullpunk :(.

mfg

der dude
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

18.10.2004, 23:25

CB_SETITEMDATA= nachträglcih ändern können

zum spiecher... wo wird da was reserviert?

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

8

18.10.2004, 23:47

in der tb wird extras noch speicher reserviert, damit das beispiel an der stelle funktioniert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(SUCCEEDED(g_pD3DTemp->GetDeviceCaps(iSelectedAdapter, aDeviceType[iDeviceType], &Caps)))
        {
            iIndex = (int)(SendDlgItemMessage(hDlg, IDC_D3DS_DEVICE_TYPES, CB_ADDSTRING,
                                              0, (LPARAM)(apcDeviceType[iDeviceType])));

            // Speicher für den Gerätetyp reservieren und ihn dem Listeneintrag zuweisen.

            // Nur anhand des Listenindexes lässt sich der Typ nicht bestimmen.

            pDeviceType = (D3DDEVTYPE*)(tbMemAlloc(sizeof(D3DDEVTYPE)));
            *pDeviceType = aDeviceType[iDeviceType];

            // Daten dem Listeneintrag zuweisen

            SendDlgItemMessage(hDlg, IDC_D3DS_DEVICE_TYPES, CB_SETITEMDATA,
                               iIndex, (LPARAM)(pDeviceType));

            if(!(Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT))
            {
                g_TempParameters.dwFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
                EnableWindow(GetDlgItem(hDlg, IDC_D3DS_HARDWARE_TNL), FALSE);
            }
        }


leider verstehe ich nicht warum extra noch speicher benötigt wird.
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Werbeanzeige