c++ - 如何将 double 值转换为字符串以便将其输出到 Win32 下的窗口标题栏

标签 c++ winapi titlebar string-conversion string-building

<分区>

Possible Duplicate:
How do I convert a double into a string in C++?
Convert double to string C++?

所有 C++ 和 Win32 新手都在这里玩 Visual Studio 2012 土地,所以请耐心等待,因为我有时会咬得太多:)

我有一个 Win32 应用程序,它只是使用 peekmessage 循环设置一个窗口以进行实时更新。该应用程序运行正常,窗口显示正常。我想将文本打印到窗口标题栏,显示我提供的时钟/计时器类的每秒帧数。

我还没有学习 GDI/GDI+ 或 Direct2D 和 DirectWrite 将文本和变量值输出到客户区,所以现在我需要一个简单的方法来将一些基本统计信息输出到窗口,我认为最简单的方法是在此阶段更新窗口标题。我的窗口类有一个采用 std::wstring 的 SetTitle 方法,所以我想知道如何最好地从文字文本和变量值(如 double)构建字符串?正如您可能猜测的那样,我也不熟悉基于控制台的应用程序的基本 std:cout 之外的字符串。

亚马逊告诉我我的圣物 'Book of Petzold, 5th Edition' 还有 3 天的时间所以任何提示都将不胜感激,你会在我的圣诞节今年的卡片列表。

谢谢。

最佳答案

在深入研究流输入和输出之后,我终于找到了一个似乎运行良好的解决方案。

包括<sstream>之后在我的项目中,我创建了一个 std::wstringstream myString;对象。

在我的应用程序的实时循环中,我有以下代码来格式化字符串和来自 Clock 类的值,然后我将其传递给 GDI 以打印到窗口客户区:

  myString.clear(); // clear status bits
  myString.str(L""); // Clear the string for reuse
  myString << "FPS " << pGameClock->GetFrameRate();

  TextOutW(GdiDeviceContext, x_pos, y_pos,
           myString.str().c_str(),
           myString.str().length());

在我的学习过程中,我快速绕过简单的 GDI 文本输出,因为我最初在使用 winapi SetWindowTextW 更新我的应用程序窗口标题属性时遇到了问题。功能。它似乎不喜欢在主循环中被高频调用,导致我的系统在运行程序时变得无响应,因此需要学习基本的 GDI 以输出到我的窗口客户区而不是窗口标题栏。

pGameClock->GetFrameRate();顺便说一句,由才华横溢的 Noel Llopis 设计并在 Game Programming Gems 中介绍的高分辨率时钟和计时器类的实现提供4。 (感谢诺埃尔)。

我还发现,关于更高性能的字符串格式化和构建技术,还有很多东西需要学习,尤其是当应用于游戏中的实时要求时,但我怀疑我会更好地前往 http://gamedev.stackexchange.com (我最近才发现)需要进一步的问题和帮助?

帮助这个 C++ 菜鸟更好地理解输入和输出流的书籍:

  • 使用 C++ 的编程原则和实践Bjarne Stroustrup
  • C++ for Everyone,第 2 版,作者:Cay Horstmann

关于c++ - 如何将 double 值转换为字符串以便将其输出到 Win32 下的窗口标题栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12574104/

相关文章:

c++ - 无法为 Eclipse CDT 安装 LLVM 工具链

C++ && 条件从未执行

C++ 捕获枚举值作为异常

c++ - cpp中的UDP套接字永远循环

c - 使用 C 中的 RegCopyTree 拒绝访问

Android隐藏的标题栏回来了

c# - 重绘和自定义形状的窗口问题

winapi - 我们如何在组装中清除控制台?

java - 如何删除框架的 Activity 标题栏?