2011-04-27 74 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; 
     //... 
    } 
}