我已经在这里阅读了一些有关如何实现该目标的主题。我尝试了几个答案,但到目前为止都没有用。我只是想获取编辑控件的内容,在 WTL 中作为 CEdit 给出,并将其保存到一个最好的 std::wstring 中,但我想我无法使用 CString/TCHAR*。
先决条件:
ID of my control: IDC_LINKPASTEEDIT
Member variable IDC_LINKPASTEEDIT is assigned to via DDX MAP: m_linkPasteEdit
到目前为止我尝试了什么:
1.)
CString windowText;
GetDlgItemText(IDC_LINKPASTEEDIT, windowText, 1024);
-> GetDlgItemTextA 的参数列表错误(由 GetDlgItemText 的 DEFINE 引用)
2.)
CString windowText;
m_linkPasteEdit.GetWindowText(windowText);
-> GetDlgItemTextA 的另一个参数列表错误
我也不太清楚正确的列表,因为文档不存在并且查看定义我觉得我的论点应该是正确的。
遗憾的是我没有找到其他资源,我什至下载了一些 html 文档 WTL 库,但似乎 CEdit 没有完全记录在那里。
有什么想法吗?
编辑:
让它以一种非常非常奇怪的方式工作,在我看来这不是真正的 WTL 风格,但至少它可以工作。
1) - 在项目设置中将多字节字符集更改为 UNICODE
2) -
WCHAR windowText[1024];
GetDlgItemText(IDC_LINKPASTEEDIT, windowText, 1024);
通过使用 CHAR 而不是 WCHAR,也可以处理多字节,但我更喜欢宽方式。
最佳答案
CString
、DDX
和 GetDlgItemText
表明您使用的是 MFC,不是 WTL - 是这样吗?
MFC 的 GetDlgItemText有两个重载:
int GetDlgItemText(
int nID,
LPTSTR lpStr,
int nMaxCount
) const;
int GetDlgItemText(
int nID,
CString& rString
) const;
而且您的通话也不匹配。使用 CString 的形式,不带长度。
关于c++ - 如何使用 WTL 获取编辑控件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048930/