- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
整个代码片段...
#include <windows.h>
#include <string>
#include <vector>
using namespace std;
//=========================================================
// Globals.
HWND ghMainWnd = 0;
HINSTANCE ghAppInst = 0;
struct TextObj
{
string s; // The string object.
POINT p; // The position of the string, relative to the
// upper-left corner of the client rectangle of
// the window.
};
vector<TextObj> gTextObjs;
// Step 1: Define and implement the window procedure.
LRESULT CALLBACK
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// Objects for painting.
HDC hdc = 0;
PAINTSTRUCT ps;
TextObj to;
switch( msg )
{
// Handle left mouse button click message.
case WM_LBUTTONDOWN:
{
to.s = "Hello, World.";
// Point that was clicked is stored in the lParam.
to.p.x = LOWORD(lParam);
to.p.y = HIWORD(lParam);
// Add to our global list of text objects.
gTextObjs.push_back( to );
InvalidateRect(hWnd, 0, false);
return 0;
}
// Handle paint message.
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
for(int i = 0; i < gTextObjs.size(); ++i)
TextOut(hdc,
gTextObjs[i].p.x,
gTextObjs[i].p.y,
gTextObjs[i].s.c_str(),
gTextObjs[i].s.size());
EndPaint(hWnd, &ps);
return 0;
}
// Handle key down message.
case WM_KEYDOWN:
{
if( wParam == VK_ESCAPE )
DestroyWindow(ghMainWnd);
return 0;
// Handle destroy window message.
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
}
// Forward any other messages we didn't handle to the
// default window procedure.
return DefWindowProc(hWnd, msg, wParam, lParam);
}
问题是我从 visual studio 2012 收到一条错误消息,告诉我“const char*”类型的参数与 LPCWSTR 类型的参数不兼容。这发生在这行代码中:
hdc = BeginPaint(hWnd, &ps);
for(int i = 0; i < gTextObjs.size(); ++i)
TextOut(hdc,
gTextObjs[i].p.x,
gTextObjs[i].p.y,gTextObjs[i].s.c_str(), // <---happens here
gTextObjs[i].s.size());
EndPaint(hWnd, &ps);
return 0;
我尝试了一个转换((LPCWSTR)gTextObjs[i].s.c_str()
),但显然这是非常错误的,因为每个字符数组操作一个字节到两个?还收到了 "C4018: '<' : signed/unsigned mismatch"
的警告在这个变化之后。我是 c++ 的新手,考虑到转换是错误的,我对这个错误很迷茫。
我已经审查了 SO 中的一些不同线程,似乎没有任何内容适合这种特定情况(或者我只是不太了解这些线程与我的线程之间的相关性)。 :[
此外,只是为了澄清......转换“有效”,但它打印出一些奇怪的日文/中文符号,看起来像文字,而且总是不同。
最佳答案
TextOut 正在解析为 TextOutW。这需要 UTF-16 文本。您传递 8 位文本。要么切换到 wstring 中保存的 UTF-16,要么调用 TextOutA。
关于c++ - LPCWSTR 不会在 TextOut() 方法上正确转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194681/
让我感到沮丧的是,这对我来说是多么困难。我有一个具有打印功能的 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,从前到后),我打算更改每个单词的大小和不
我是一名优秀的程序员,十分优秀!