【问题标题】:How can I obtain the content of a Edit Control with WTL?如何使用 WTL 获取编辑控件的内容?
【发布时间】:2016-05-05 02:05:51
【问题描述】:

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

【问题讨论】:

  • 通常您的尝试#2 是正确的,但是您的 ATL/WTL 字符串一团糟,因此出现了错误。如果您使用 ATL 构建,最好的解决方案是不使用 WTL 字符串类(在 stdafx.h 中定义 _WTL_NO_CSTRING)。

标签: c++ mfc wtl


【解决方案1】:

CStringDDXGetDlgItemText 表明您正在使用 MFC,不是 WTL - 对吗?

MFC 的GetDlgItemText 有两个重载:

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

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

【讨论】:

  • 我实际上是在尝试通过 WTL 解决它。 DDX 和 CString 不是 WTL 主题的 GUI 编程的一部分,而是 MFC 的一部分吗?我阅读的关于 codeproject 的教程也对它们进行了解释。我目前只是为了完成工作而尝试通过 GetDlgItemText 来完成。
  • 编辑:刚回到家试过这个,这对我不起作用。这可能是由于#define GetDlgItemText GetDlgItemTextA
  • 什么不起作用?此代码应该有效:CString windowText; GetDlgItemText(IDC_LINKPASTEEDIT, windowText);...您遇到什么错误?
  • #define GetDlgItemText GetDlgItemTextA --- 错误:没有重载函数“My class::GetDlgItemTextA”的实例与参数列表匹配。参数类型有:(int, WTL::CString)
  • 那么,您的第二个参数是WTL::CString 吗?我从未将 MFC 与 WTL 混合,但假设没有命名空间,CString 是一个 MFC/ATL 字符串。尝试明确指定WTL::CString windowText; [EDITED] 实际上,情况正好相反:当需要另一种类型时,您 ARE 传递 WTL::CString。你的GetDlgItemTextA的定义是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多