我已经在这里阅读了一些关于如何实现该目标的主题。我尝试了几个答案,但到目前为止都没有成功。我只是想获取在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来与多字节一起工作,但是我更喜欢广泛的方法。

最佳答案

CStringDDXGetDlgItemText建议您使用的是MFC,而不是WTL-是吗?

MFC的GetDlgItemText有两个重载:

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


而且您的通话也不匹配。使用CString的形式,没有长度。

09-11 17:44