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

标签 c++ mfc wtl

我已经在这里阅读了一些有关如何实现该目标的主题。我尝试了几个答案,但到目前为止都没有用。我只是想获取编辑控件的内容,在 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 的形式,不带长度。

关于c++ - 如何使用 WTL 获取编辑控件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048930/

相关文章:

c++ - 在 Eclipse 中设置 OpenCV

visual-c++ - 我在我的对话框类中添加了一个 OnPaint() 函数,但它在 dlg.DoModal() 之后没有被调用

c++ - 使用 CSplitterWindowImpl 处理移动并使子 Pane 无效

c++ - 如何在 WTL 应用程序中设置 CWindowImpl FullScreen?

C# Winforms 时间轴控件(来自 WTL?)

c++ - 宏字符串 : what does #define __T(x) x mean? 和 __T(#x)?

c++ - 不正确的 OpenGL 缠绕

c++ - PostMessage 不适用于 WM_PASTE,mfc

PHP - 无法执行 C++ 二进制文件?

c++ - MFC 中的切换按钮