从ComboBox读取

时间:2011-04-27 13:56:55

标签: c++ winapi combobox

如何在windows应用程序(borland C ++)中读取comboBox的选定值的文本,例如: 我有组合框,其中包含2个值(总和和多)我想看看它是否是总和我必须添加数字,如果它多我必须乘以数字,所以如何在这种情况下读取组合框的值。 / p>

3 个答案:

答案 0 :(得分:0)

假设您使用的是Windows,则可以使用以下消息:

WM_GETTEXTLENGTHWM_GETTEXT

首先,获取所选文本的长度,然后分配缓冲区以确保它足够大,然后检索实际文本。容易。

示例:

const UINT length = ::SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
LPTSTR pszText = new TCHAR[length + 1];
::SendMessage(hWnd, WM_GETTEXT, length + 1, pszText);

// pszText will now contain the text you want, do what you want with it

delete[] pszText; // Remember to delete else you will leak.

答案 1 :(得分:0)

对于Windows:

在您的窗口过程中,使用WM_COMMAND消息,然后检查CBN_SELCHANGE通知。然后使用WM_GETTEXTWM_GETTEXTLENGTH来接收选定的文字,例如Mark Ingram说。或者您也可以使用CB_GETCURSEL来接收所选项目的标识符。

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
        case WM_COMMAND:
            switch(LOWORD(wParam)) {
                case IDC_COMBO:
                    if (HIWORD(wParam) == CBN_SELCHANGE) {
                        HWND hCtl = GetDlgItem(hWnd, IDC_COMBO);//Get handle for HMENU item
                        if (SendMessage(hCtl, CB_GETCURSEL, 0, 0) == compareValue) {
                            //...
                        }
                    }
                    break;
            }
            break;
        //...
    }
}

答案 2 :(得分:-2)

我从不使用带有winapplication的c ++,但我尝试使用c#,希望你想要所需的输出,因为我通过你的问题,如果不对,那么你应该编辑你的问题。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)  
    {  
        if (comboBox1.Text == "ADD")  
        {  
            int a = 12, b = 13, c;  
            c = a + b;  
            MessageBox.Show("Result of adding= " + c);  
        }  
        else if (comboBox1.Text == "Multiple")  
        {  
             int x = 3, y = 5, z;  
            z = x * y;  
            MessageBox.Show("Result of multiplication= " + z);  
        }  
    }