чтение из ComboBox - PullRequest
       4

чтение из ComboBox

0 голосов
/ 27 апреля 2011

как я могу прочитать текст выбранного значения поля со списком в приложении Windows (Borland C ++), например: у меня есть выпадающий список, который содержит 2 значения (сумма и мульт), я хочу увидеть, является ли это сумма, мне нужно добавить числа, и если он является мульти, мне нужно умножить числа, так как я могу прочитать значение в выпадающем списке в этом случае.

Ответы [ 3 ]

0 голосов
/ 27 апреля 2011

Для Windows:

В своей оконной процедуре используйте сообщение WM_COMMAND, а затем проверьте уведомление CBN_SELCHANGE.Затем используйте WM_GETTEXT вместе с WM_GETTEXTLENGTH, чтобы получить выделенный текст, как говорит Марк Инграм.Или вы также можете использовать 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;
        //...
    }
}
0 голосов
/ 27 апреля 2011

Я никогда не работал с 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);  
        }  
    }
0 голосов
/ 27 апреля 2011

Предполагая, что вы используете Windows, вы можете использовать следующие сообщения:

WM_GETTEXTLENGTH и 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...