如何使用 WTL 获取编辑控件的内容?

How can I obtain the content of a Edit Control with WTL?

我已经在此处阅读了一些有关如何实现该目标的主题。我尝试了几个答案,但 none 目前有效。我只是想获取一个编辑控件的内容,在 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,也可以处理多字节,但我更喜欢宽方式。

CStringDDXGetDlgItemText 表明您使用的是 MFC,不是 WTL - 是这样吗?

MFC 的 GetDlgItemText 有两个重载:

int GetDlgItemText(
   int nID,
   LPTSTR lpStr,
   int nMaxCount 
) const;
int GetDlgItemText(
   int nID,
   CString& rString 
) const;

你的电话也不匹配。使用CString的形式,没有长度。