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

时间:2016-01-27 22:01:53

标签: c++ mfc wtl

我已经在这里阅读了一些关于如何实现这一点的线索。我尝试了几个答案,但到目前为止都没有。我只想获得一个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' s 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也可以使用多字节,但我更喜欢宽广的方式。

1 个答案:

答案 0 :(得分:1)

CStringDDXGetDlgItemText表示您使用的是MFC, WTL - 是吗?

MFC的GetDlgItemText有两个重载:

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

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