Combobox in Toolbar auslesen
-
Hallo, ich habe folgende Problem:
In einer Toolbar (hwndToolbar) hab ich zwei Comboboxen und ein Button.
Mit dem Button rufe ich eine Funktion auf (klappt soweit)(den Aufruf meine ich) die den Inhalt der Comboboxen auslesen soll. Nur geht das nicht.Hier der Casezweig der Aufgerufen wird.
case ID_BEITRAG: GetWindowText(hwndEdit2, szBuff, 255); GetWindowText(hwndEdit3, szBuff1, 255); MessageBox(hwnd,szBuff,szBuff1,0); return 0;habs auch schon mit GetWindowText(GetDlgItem (hwndToolbar, ID_ART), szBuff, 255); probiert, geht auch nicht.
Danke für eure Hilfe
Sönke
-
Dei Combobox ist mit Elementen, Items, gefüllt. Diese musst du einzeln auslesen.
-
und dann nimm lieber GetDlgItemText
GetDlgItemText(hwnd,COMBOX(die ID),text(wo gespeichert werden soll),sizeof(text));so mache ich es immer und klappt eigentlich acuh
-
erstmal danke für die schnelle antwort, leider funktioniert das auch nicht. ich poste mal die ganze Nachrichtenschleife und wie ich den toolbar erstelle
LRESULT CALLBACK WndProcBeitrag (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ std::string titel; char szBuff[255], szBuff1[255]; HWND hwndToolbar, MemberBeitragC, hwndEdit1, hwndEdit2, hwndEdit3; switch (message) /* handle the messages */ { case WM_CREATE: titel = "Beitrag - "; titel += szAppName; SetWindowText(hwnd,titel.c_str()); hwndToolbar = tb_create( inst, hwnd, 0 ); hwndEdit1 = CreateWindow ( "button", "Anzeigen", //Nächster WS_CHILD | WS_VISIBLE, 3,1,90,25, hwndToolbar, (HMENU)ID_BEITRAG, inst, NULL); hwndEdit2 = CreateWindow(TEXT("Combobox"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 100,1,100,20, hwndToolbar, (HMENU)ID_JAHR, inst, NULL); SendMessage(hwndEdit2, CB_ADDSTRING, 0, (LPARAM)"Jahr"); SendMessage(hwndEdit2, CB_ADDSTRING, 0, (LPARAM)""); SendMessage(hwndEdit2, CB_ADDSTRING, 0, (LPARAM)"2002"); SendMessage(hwndEdit2, CB_ADDSTRING, 0, (LPARAM)"2003"); SendMessage(hwndEdit2, CB_SETCURSEL, 0, 0); hwndEdit3 = CreateWindow(TEXT("Combobox"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD | CBS_DROPDOWNLIST, 210,1,200,20, hwndToolbar, (HMENU)ID_ART, inst, NULL); SendMessage(hwndEdit3, CB_ADDSTRING, 0, (LPARAM)"Anzeigeart"); SendMessage(hwndEdit3, CB_ADDSTRING, 0, (LPARAM)""); SendMessage(hwndEdit3, CB_ADDSTRING, 0, (LPARAM)"Alle Mitglieder"); SendMessage(hwndEdit3, CB_ADDSTRING, 0, (LPARAM)"Säumiege Mitglieder"); SendMessage(hwndEdit3, CB_SETCURSEL, 0, 0); MemberBeitragC = CreateWindow( "BeitragC", NULL, // kein Titel WS_CHILD | WS_VISIBLE | WS_EX_CLIENTEDGE | CBS_DROPDOWNLIST | WS_BORDER,// | WS_OVERLAPPEDWINDOW, // Fenster Style 0,30,595,420, // Position des Fensters innerhalb des Hauptfenster (wird bei size gesetzt) hwnd, // Handle des Hauptfensters NULL, // kein HMENU inst, // HINSTANCE des Hauptfensters NULL ); return 0; case WM_COMMAND: switch(wParam){ case ID_FILE_EXIT: DestroyWindow(hwnd); //Wenn im Menü Beenden gewählt Beenden return 0; case ID_BEITRAG: //GetWindowText(hwndEdit2, szBuff, 255); //GetWindowText(hwndEdit3, szBuff1, 255); //GetWindowText(GetDlgItem (hwndToolbar, ID_ART), szBuff, 255); GetDlgItemText(hwnd,ID_ART,szBuff,sizeof(szBuff)); MessageBox(hwnd,szBuff,szBuff1,0); return 0; } return 0; }und die funktion zum toolbarerstellen
HWND tb_create( HINSTANCE instance, HWND hwnd, int style ) { InitCommonControls(); //Create window for toolbar, parent is current window HWND hwnd_toolbar = CreateWindowEx( 0, TOOLBARCLASSNAME, (LPSTR) NULL, WS_CHILD | WS_VISIBLE | style, 0, 0, 0, 0, hwnd, (HMENU) 1, instance, NULL ); if (!hwnd) //Continue if creating toolbar was successfull { return NULL; } //Add Standard-Buttons to toolbar's Image-List TBADDBITMAP bitid; bitid.hInst = HINST_COMMCTRL; bitid.nID = IDB_STD_SMALL_COLOR; SendMessage(hwnd_toolbar, TB_ADDBITMAP, 1, (long)&bitid); SendMessage(hwnd_toolbar, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0); //Backward compatiblity ShowWindow(hwnd_toolbar, SW_SHOW); //Show Toolbar! return hwnd_toolbar; }
-
Sorry hab meinen Fehler gefunden, mann muss die HWNDs auf static setzen
danke aber trozdem für die Hilfe
guten rutsch