2013-02-25 137 views
0

雖然這個問題可能被問過一千次之前(很確定它,我已經讀了一千個答案)。我仍然不明白。Win32 C++從元素中獲取文本

可以說,我有一個創建一個像這樣的組合框的功能:

scopeComboSelector=CreateCombobox(hwnd, 
            GetModuleHandle(0), 
            CBS_DROPDOWNLIST, 
            re, 
            IDCC_DROPDOWNLIST_SCOPE_SELECTOR, 
            _T("Scopes")); 

其中「re」是一個定位矩形。和IDCC_DROPDOWNLIST_SCOPE_SELECTOR(很長的名字)是組合框的ID。現在重點是,我實際上可以填充這個「下拉選擇列表」,但我不知道如何簡單地將當前選定的值作爲字符串獲取。

我已經看到了大約10種方式來做到這一點,這些方法都會立即給出錯誤(需要轉換爲LPWSTR - >修復更多恐怖結果)。

也許我只是用來Java的其中一個可以簡單地說:

textfield.getText(); 

一個將如何在Win32中C++中實現這一++(微軟的Visual Studio)?

編輯

碼我用:

char userName[_MAX_PATH+1]; 
    GetDlgItemTextW(scopeComboSelector, 
        IDCC_DROPDOWNLIST_SCOPE_SELECTOR, 
       (LPWSTR)userName, 
        200); 

返回:用戶名==空

更新

現在使用:GetDlgItemText()。調試器告訴我的值userName =「」

+1

請發佈您嘗試過的方式的代碼,以及您得到的確切錯誤。這聽起來像你在某個時候可能有正確的答案,但只是沒有正確處理字符串。如果您發佈該信息,則可能有人可能會向您顯示您出錯的位置。 – JBentley 2013-02-25 17:37:58

+2

看起來你正在使用一個'char'數組,它需要unicode。嘗試'GetDlgItemText'而不是'GetDlgItemTextW',或者使用寬字符而不是char。另外,請發佈編譯器錯誤。 – JBentley 2013-02-25 17:42:14

+0

可能的重複http://stackoverflow.com/questions/7262644/get-the-text-of-a-combo-box-win32-api-c-no-mfc – Rich 2013-02-25 17:42:54

回答

1

documentation有一個C風格的Windows 9x代碼示例。

您只需簡單地用C++和Windows 9x愚蠢T宏替換C和wchar_t和朋友。

閱讀文檔總是一個好主意。

+0

這工作,非常感謝。 – 2013-02-25 18:15:13