2013-02-25 104 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