Holen Sie den text eines Kombinationsfeldes Win32-API in C++ (OHNE MFC)
Ich versuche zum einrichten einer combo-box, so dass ein Benutzer kann wählen Sie eine option aus dem dropdown-Menü und dann abrufen, was der Benutzer ausgewählt hat, die Verwendung von Win32-API-C++ - Programmierung, keine MFC. Ich lese John ' s post hier und ich konnte nichts bekommen, um zu arbeiten. Ich kann den text festlegen, der für die combo-box, die ich aber nicht abrufen kann, was der Benutzer ausgewählt hat. Hier sind ein paar Methoden, die ich versucht habe:
LPTSTR buf;
ComboBox_GetText(hwnd, buf, 9);
MessageBox(NULL, buf, NULL, MB_OK);
Und
char* buf;
GetDlgItemText(hwnd, IDC_COMBO1, buf, 9);
MessageBox(NULL, buf, NULL, MB_OK);
IDC_COMBO1
ist die ID des Kombinationsfelds und hwnd
ist das HWND der Dialogbox.
Der code für meine Dialogfeld mit der combo-box ist:
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG4 DIALOG 0, 0, 424, 181
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Ms Shell Dlg"
{
COMBOBOX IDC_COMBO1, 113, 31, 119, 19, CBS_DROPDOWN | CBS_HASSTRINGS
PUSHBUTTON "Button1", IDC_BUTTON1, 188, 112, 50, 14
}
Ich bin mit einer Ressource-Datei zu tun. Vielen Dank im Voraus.
Es gibt mir nicht alle Daten. Ich erhalte überhaupt keine Fehlermeldungen, es richtig kompiliert es einfach nicht die Daten zurück, die im Textfeld angezeigt werden, wenn ich den Aufruf der message-box.
InformationsquelleAutor llk | 2011-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für den Aufruf ComboBox_GetText der hwnd-parameter muss das handle für die combo-box selbst, nicht den dialog. Sie bekommen können, dass die HWND-Eigenschaft mit
GetDlgItem(hwnd, IDC_COMBO1);
Auch, Sie können sich nicht über einen nicht initialisierten Zeiger auf eine Funktion; Sie müssen, übergeben Sie einen Zeiger auf einen Puffer, die Sie erstellt haben.
Ich habe versucht zu tun
char* buf; HWND Cbobox; Cbobox = GetDlgItem(hwnd, IDC_COMBO1); ComboBox_GetText(Cbobox, buf, 9); MessageBox(NULL, buf, NULL, MB_OK);
aber nicht bekommen, um mich überall, es noch gab werden eine leere Zeichenkette zurückgeben. Ist es das, was du im Sinn hatte?Ich erkannte, dass das problem nur ein paar Momente, bevor Sie kommentiert, siehe mein update.
Heffernan seit ComboBox_GetText ist ein makro, das expandiert zu GetWindowText ich vermute, Sie sind 100% richtig. Das führte mich zum überdenken meiner Antwort und hoffentlich habe ich Sie gefunden, die Ursache dieser Zeit.
Ich hatte Angst, es war etwas einfacher als das. Danke, das hat geklappt.
InformationsquelleAutor Mark Ransom
Wenn ich mich richtig erinnere, müssen Sie ComboBox_GetCurSel zu bestimmen, welches Element ausgewählt ist, und dann können Sie ComboBox_GetLBText zu bekommen, der eigentliche text.
InformationsquelleAutor Ferruccio