2011-04-27 49 views
-1

我如何读取窗口应用程序(Borland C++)中组合框的选定值的文本,例如: 我有组合框包含2个值(sum和mult)我想看看它是sum我必须添加数字,如果它是多我必须乘以数字,所以在这种情况下如何读取组合框的值。从组合框中读取

+3

? – 2011-04-27 13:37:45

+3

你应该真的编辑你现有的问题,使其更清晰,而不是问另一个几乎相同的问题... http://stackoverflow.com/questions/5805027/how-to-read-combobox-in-c – forsvarir 2011-04-27 14:02:57

+0

如果你对上一个问题的答案并没有帮助你,这是因为你的问题写得不好。请不要发布全新的问题,请返回并*编辑*原始问题以包含其他详细信息和信息。您也可以为试图回答您的问题的人士发表评论,请求进一步澄清。 – 2011-04-27 14:23:15

回答

-2

我从来没有与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

downvoter你能解释为什么你给我减点,因为我已经提到这个问题不是很清楚,但我试图帮助,因为我得到了问题。 – avirk 2011-04-27 14:33:39

+2

可能是因为你没有回答这个问题,甚至没有足够的关注甚至格式化你的代码。 – Will 2011-04-28 13:45:26

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. 
+0

带您正在使用什么平台,一起来看看这款http://msdn.microsoft.com/en-us/library/bb775794(VS.85).aspx – Sam 2011-04-27 15:51:23

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