Warum ist das so (ComboBox)



  • Hey,

    bei dem folgenden Code

    apcDeviceType[0]="Hardware acceleration";
    	apcDeviceType[1]="Software driver";
    	apcDeviceType[2]="Reference rasterizer";
    
    	for(int iDeviceType = 0; iDeviceType < 3; iDeviceType++)
    	{
    		SendDlgItemMessage(hDlg, IDC_DEVICETYPE, CB_ADDSTRING, 0, (LPARAM)(apcDeviceType[iDeviceType]));
    	}
    

    schreibt der PC nur Harware acceleration in die Combobox IDC_DEVICETYPE sonst ncihts

    jedoch bei folgenden code

    apcDeviceType[0]="Hardware acceleration";
    	apcDeviceType[1]="Software driver";
    	apcDeviceType[2]="Reference rasterizer";
    
    	for(int iDeviceType = 0; iDeviceType < 3; iDeviceType++)
    	{
    		MessageBox(NULL, apcDeviceType[iDeviceType], "Info", NULL);
    	}
    

    kommen 3 MessageBox mit dem jeweiligen Inhalt (das kompletter Array apcDeviceType)

    Warum ist das so?
    Was mach ich falsch bei der Combobox?

    TheGamer



  • Probiers mit folgendem in der for-Schleife:

    ((CComboBox*)GetDlgItem(IDC_DEVICETYPE))->AddString(apcDeviceType[iDeviceType]);
    

    EDIT: Falls du es noch nicht weisst. Den Inhalt der ComboBox kann man auch im Ressouceneditor, unter dem Feld Daten (in engl. Data) hineinschreiben. Die Einträge einfach mit ; trennen.



  • Ist das nun ein MFC oder WinAPI prog??
    http://www.c-plusplus.net/forum/viewtopic.php?t=44746

    Einer von beiden wird dicht gemacht..



  • mach das unter winapi zu

    @jover

    das weiß ich schon aber das bringt mir ncihts da die enumeration von Direct3D9 auf jeder grafikkarte anders ist



  • Ja aber das mit AddString müsste gehen.



  • Hat mit MFC zwar nix zu tun...

    Dein Code ist völlig in Ordung. Hast du deiner ComboBox auch eine richtige Größe verpasst? Wenn du mit Visual Studio arbeitest im ResEditor mal auf den DropDown Button klicken um die Größe anzupassen.



  • Das funktioniert bei mir einwandfrei:

    CString apcDeviceType[3];
    apcDeviceType[0]="Hardware acceleration"; 
    apcDeviceType[1]="Software driver"; 
    apcDeviceType[2]="Reference rasterizer"; 
    
    for(int iDeviceType = 0; iDeviceType < 3; iDeviceType++) 
        m_ctlBox.AddString(apcDeviceType[iDeviceType]);
    

Anmelden zum Antworten