【问题标题】:CEdit and GetwindowText in MFCMFC 中的 CEdit 和 GetwindowText
【发布时间】:2012-04-26 11:13:59
【问题描述】:

我在对话框中添加了一个简单的 Cedit 控件并有一个 OnEnChangeEdit 回调。我正在尝试检索在框中键入的文本,但只能获取在下面对 printf 的调用中键入的内容的第一个字符:

void MFCDlg::OnEnChangeEdit() { 
  CString s; 
  m_platformSliceOverrideEditBox.GetWindowText(s); 
  _cprintf("%s", s.GetString());
}

如果有帮助,我将使用 Unicode 字符集进行编译。

【问题讨论】:

    标签: c++ visual-studio mfc


    【解决方案1】:

    _cprintf 需要 ansi 字符串。如果您使用的是 unicode,那么它将在第一个字符处停止,因为第二个字节将为空。

    使用 _tcprintf 代替,当您构建为 unicode 时,它​​将期待宽字符串。

    【讨论】:

    • 感谢这工作!但是,为什么我在使用 uni-code 编译时一直能够使用 _cprintf 呢?打印 std::string 和 char* 时 _cprintf 的行为都很好。
    • std::string 是单字节。你想要 unicode 的 std::wstring。
    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2010-09-18
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多