获取组合框Win32 API C ++(NO MFC)的文本

时间:2011-08-31 19:55:07

标签: c++ winapi api text combobox

我正在尝试设置一个组合框,以便用户可以从下拉菜单中选择一个选项,然后使用Win32 API C ++编程检索用户选择的内容,而不是MFC。我读了约翰的帖子here,我无法得到任何工作。我可以设置组合框的文本,但我无法检索用户选择的内容。以下是我尝试过的一些方法:

                LPTSTR buf;
                ComboBox_GetText(hwnd, buf, 9);
                MessageBox(NULL, buf, NULL, MB_OK);

                char* buf;
                GetDlgItemText(hwnd, IDC_COMBO1, buf, 9);
                MessageBox(NULL, buf, NULL, MB_OK);

IDC_COMBO1是组合框的ID,hwnd是当前对话框的HWND。 带有组合框的对话框的代码是:

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 }

我正在使用资源文件来执行此操作。提前谢谢。

2 个答案:

答案 0 :(得分:4)

对于ComboBox_GetText的调用,hwnd参数必须是组合框本身的句柄,而不是对话框。您可以使用GetDlgItem(hwnd, IDC_COMBO1);

获取该HWND

此外,您无法将未初始化的指针传递给任一函数;您必须将指针传递给您已创建的缓冲区。

            char buf[10];
            GetDlgItemText(hwnd, IDC_COMBO1, buf, 9);
            MessageBox(NULL, buf, NULL, MB_OK); 

答案 1 :(得分:1)

如果我没记错,您需要使用ComboBox_GetCurSel来确定选择了哪个项目,然后您可以使用ComboBox_GetLBText来获取实际文字。