我已经在这里阅读了一些关于如何实现该目标的主题。我尝试了几个答案,但到目前为止都没有成功。我只是想获取在WTL中以CEdit形式给出的Edit控件的内容,并将其保存到最好是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的形式,没有长度。