- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 TextOut 行的这段代码中遇到一些问题,它说:
error: cannot convert 'std::string* {aka std::basic_string<char>*}' to
'LPCSTR {aka const char*}' for argument 4 to
'BOOL TextOutA(HDC, int, int, LPCSTR, int)'
我已经搜索了一段时间,但没能找到任何既不会永远让我感到困惑,也不会完成我想做的事情的东西,那就是绘制一个字符串。
case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
string text = "Something";
RECT rect;
GetClientRect( hwnd, &rect );
hdc = BeginPaint( hwnd, &ps );
TextOut( hdc, rect.right/2, rect.bottom/2, &text, 1 );
EndPaint( hwnd, &ps );
}
return 0;
break;
最佳答案
错误消息解释了问题所在:
LPCSTR
类型是 typedef(别名)const char *
.这是一个C风格的指针,也就是常量字符串"Something"
默认为(但不是 text
)。
std::string
类型是 typedef(别名)std::basic_string<char>
.这是一个 C++ 模板类,用于动态管理字符串,如 C#/Java 字符串或 CString
从 MFC/ATL 类型。
&text
line 是指向字符串对象的指针,而不是指向字符串本身的指针。同样,std::string
不提供对 const char *
的隐式转换.您需要显式调用 text.c_str()
它旨在与采用 C 风格字符串的 API 一起使用。
对于 TextOut
的最后一个参数, 你可以通过 -1
让它计算字符串的长度(不是 1
)。或者,因为您在 std::string
中有字符串对象,您可以使用 text.size()
.
关于c++ - Win32编程 TextOut WM_Paint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829243/
让我感到沮丧的是,这对我来说是多么困难。我有一个具有打印功能的 MFC 应用程序。当我点击打印时,我想创建一个 pdf 文件,在 A4 页面的中心有一个单词。我正在使用 CPrintDialog,并且
如何删除或隐藏当前文本以添加新文本?目前,当他添加另一个文本时,文本与文本重叠。我尝试使用 InvalidateRect(hWnd, NULL, TRUE); 但我没有看到任何区别。 LRESULT
我正在重新学习 Delphi,因为多年来没有编写任何东西,并且忘记的比我学到的更多!我从一个简单的文件搜索例程开始,并将找到的文件放在多列列表框中。我找到的组件名为 MultiColListBox.p
我正在尝试计算每个单元格的大小(包含“ff”或“a0”等文本),以便 32 个单元格按宽度适合窗口。但是,charWidth*2 不代表单元格的宽度,因为它不考虑帐户中字符之间的间距。 如何获取字体大
我最近让我的主窗口使用 WM_PAINT 写文本,但现在我意识到这样做可能不是最好的消息,所以我正在尝试另一个版本; 主窗口包含一个菜单,在单击菜单项时会发送 ID_FILE_PID 消息,它会构建
这个问题在这里已经有了答案: How do I link to a library with Code::Blocks? (3 个答案) 关闭 9 年前。 我需要使用一些 GDI32 函数,但我需要
我正在 VS 2019 中制作桌面应用程序,并尝试使用 TextOut 打印变量 x。我知道问题不在于我改变 x 变量的方式,因为它使用 OutputDebugString 正确输出。我对 TextO
在 TextOut 行的这段代码中遇到一些问题,它说: error: cannot convert 'std::string* {aka std::basic_string*}' to 'LPCSTR
我正在使用 WinAPI 创建一个 Windows 应用程序。在处理窗口的 WM_PAINT 消息时,我正在使用 TextOut() 函数向用户显示更新的文本。 case WM_PAINT: {
这是我在表单的 OnPaint 事件中的代码: int elementCount; String tStr = L"15:00"; ::BeginPath(Canvas->Handle); ::Tex
我正在尝试使用 TextOut 函数打印一个新行。 我试过了 TextOut(hDC, 10, 20, "Hello\nWorld", strlen(text)); 但输出是“HelloWorld”。
我在哪里使用 TextOut 或 DrawText? TCHAR text[]= "My First Window"; RECT rc; HDC wdc = GetWindowDC
整个代码片段... #include #include #include using namespace std; //=====================================
因此,在搜索了一些 Win32 GUI 教程之后(我认为有关制作 GUI 的教程可能会让我更积极地制作 C++ 应用程序,因此通常更擅长使用 C++ 进行编程),我遇到了一个 rohitab 教程。我
我目前正在使用 C++ 开发一个打印插件,并开始使用 TextOut 来打印我想要的文本。它工作得很好,但显然,TextOut 用作参数的位置以像素为单位。有没有办法将它们设置为厘米或毫米?还是其他?
我正在编写一段代码,基本上是通过多次调用 TextOut 在屏幕上绘制文本。这是一个 C++ Win32 应用程序,我正在使用 Visual Studio 2012。在标记拼写错误等时,如何以 Wor
我发现以前使用过这两个功能,但我不太明白它们之间的区别。嗯,我知道 DrawText 需要一个格式化矩形,并且可以做一些文本格式化,而 textout 只是起始坐标,还有其他的区别吗? 最佳答案 Dr
我在项目中使用字体“Consolas”和/或“Courier New”来绘制类似 MS-DOS 的环境。在这个项目中,如果我使用 TextOut(TCanvas 的)在一条语句中按顺序打印 Box D
我正在使用 TextOut() 在 TCanvas 上绘制文本,但我想要更大的字体。 我能做什么? 最佳答案 试试这个 Canvas.Font.Size := ; Canvas.TextOut(0,0
我将描述我的总体目标,以防我提出的问题不是获得我正在寻找的答案的最佳形式。我有一个围绕 X 轴旋转的单词球体或“单词球”。当单词旋转到后面时(Z坐标从-1到1,从前到后),我打算更改每个单词的大小和不
我是一名优秀的程序员,十分优秀!