Dropdown Menü speichert nur 1 Eintrag
-
Hallo zusammen,
Ich bin gerade dabei einen Konverter für 3ds in ein eigenes Dateiformat zu
schreiben. Da ich bis jetzt nur mit DirectX gearbeitet habe hab ich von
Windows-Oberflächen nicht so viel Ahnung. Ich habe mir mit ResEdit einen
Dialog gebaut und starte diesen über DoDialog. Wenn ich aber nun mitSendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING,0,(LPARAM) name);
Die 3DS Effekt-Namen in die Liste eintragen will, wird nur der erste
eingetragene String sichtbar. Die folgenden tauchen nicht in der Liste auf.
Woran könnte das liegen?Der Resourcen-Code
IDD_DIALOG1 DIALOGEX 0, 0, 632, 399 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU CAPTION "Dialog" MENU IDR_MENU1 FONT 8, "Ms Shell Dlg" BEGIN CONTROL "Rich Edit", IDC_RICHEDIT1, RICHEDIT_CLASSA, WS_TABSTOP | WS_BORDER | ES_AUTOHSCROLL | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL , 6, 46, 502, 347 DEFPUSHBUTTON "Effekt-Dokument Laden", IDC_BUTTON1, 519, 68, 92, 14 PUSHBUTTON "Effekt-Dokument Speichern", IDC_BUTTON2, 520, 88, 92, 14 COMBOBOX IDC_COMBO1, 9, 23, 119, 30, CBS_DROPDOWN | CBS_DISABLENOSCROLL | WS_VSCROLL END
Der Vorläufige Code zum Material lesen
void ReadMaterial(FILE* pFile,HWND hWnd,c3dsloader* Loader) { char name[128]; ns3DSChunkHeader chunk; //SendDlgItemMessage(hWnd, IDC_COMBO1, CB_RESETCONTENT, 0, 0); //mbox("Material Lesen"); bool b = true; while(!feof(pFile) && b) { fread(&chunk,sizeof(chunk),1,pFile); switch(chunk.wChunkID) { case 0xA000: for(int iChar = 0; iChar < 128; iChar++) { fread(&name[iChar],sizeof(char),1,pFile); if(name[iChar] == 0)break; } EffectPart Ep; sprintf(Ep.EffektName,"%s",name); SendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING,0,(LPARAM) name); break; default: if( (chunk.wChunkID >= 0x1000 && chunk.wChunkID < 0xA000) || chunk.wChunkID >= 0xAFFF) { fseek(pFile,-(int)(sizeof(chunk)),SEEK_CUR); return; } fseek(pFile,chunk.dwChunkSize - sizeof(chunk),SEEK_CUR); break; } } //SendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING,0,(LPARAM)"a"); //SendDlgItemMessage(hWnd, IDC_COMBO1, CB_ADDSTRING,0,(LPARAM)"b"); //SendDlgItemMessage(hWnd, IDC_COMBO1, CB_SETCURSEL, 0, 0); }
EDIT:
An keiner anderen Stelle wird eine Nachricht an das Dropdown-Menü gesendet
-
OK ich habe das Problem gelöst!
ResEdit hat die höhe der ComboBox automatisch auf 30 pixel gestellt, also kann die Liste aufgrund der beschränkten Höhe nur einen Eintrag Anzeigen. Die Lösung war es einfach die höhe der ComboBox zu ändern.