从组合框读取

reading from ComboBox

本文关键字:读取 组合      更新时间:2023-10-16

如何在windows应用程序(borland c++)中读取组合框的选定值的文本,例如:我有一个包含两个值(sum和mult)的组合框,我想看看它是否为sum,我必须添加数字,如果是mult,我必须乘以数字,所以我如何读取组合框的值在这种情况下

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;
        //...
    }
}

假设您正在使用Windows,您可以使用以下消息:

WM_GETTEXTLENGTH and WM_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.

我从来没有使用c++与winapplication,但我尝试了它与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);  
        }  
    }