试图将char索引传递给DrawText
Trying to pass char index to DrawText
我使用DrawText
绘制一些文本到我在插件中制作的一堆矩形。
现在我收到一个char指针从嵌入式python:
char *a=PyString_AsString(value);
,当我打印到textfile给出:1n2n3n4n5n6n7n8n9n
(这只是一个示例字符,我将要使用的字符要复杂得多)
我想使用DrawText
在循环中打印特定字符:
for(int count=0;count<content.size();count++){
dc->DrawText(a[count*2],&rect[count],DT_CENTER); //*2 to print only the numbers
但是我不能,因为它说参数不是char类型??我能通过a
, &a[count]
,但不能通过a[count]
。为什么会这样?
另外,当我打印&a[2]
到文本文件它给出:2n3n4n5n6n7n8n9n
。不应该只有2
吗?
注意:DrawText函数接收:
int DrawText(
_In_ HDC hDC,
_Inout_ LPCTSTR lpchText,
_In_ int nCount,
_Inout_ LPRECT lpRect,
_In_ UINT uFormat
);
DrawText
方法的第一个参数是char*
指针。您传递的是单个char
,这是编译器抱怨的类型不匹配。
可以像这样获得指向特定字符的指针:
&a[count*2]
或者像这样:
a + count*2
问题是DrawText
的三个参数OOP包装器已经删除了Win32 DrawText
函数的nCount
参数。相反,您的包装器正在传递-1
,这意味着字符指针被解释为以空结束的字符串。该函数将打印所有字符,直到到达空终止符。
如果你想打印一个字符,那么你需要通过nCount
参数传递1
。对于您的包装器,您无法做到这一点。你必须这样做:
char temp[2];
temp[1] = 0;
temp[0] = a[count*2];
dc->DrawText(temp, ...);
为了避免这个临时缓冲区,您需要公开原始Win32 API函数的nCount
参数。
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 如何为圆环创建索引
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 查找字符在两个索引之间出现的次数
- Azure Kinect 使用正文索引映射裁剪正文
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 数组索引重载错误
- 试图将char索引传递给DrawText