【发布时间】:2016-05-05 02:05:51
【问题描述】:
我已经在这里阅读了一些关于如何实现这一点的主题。我尝试了几个答案,但到目前为止都没有。我只是想获取一个 Edit 控件的内容,在 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 也适用于多字节,但我更喜欢宽的方式。
【问题讨论】:
-
通常您的尝试#2 是正确的,但是您的 ATL/WTL 字符串一团糟,因此出现了错误。如果您使用 ATL 构建,最好的解决方案是不使用 WTL 字符串类(在 stdafx.h 中定义
_WTL_NO_CSTRING)。