我正在使用DrawText
将一些文本绘制到我在插件中制作的一堆矩形中。
现在,我从嵌入式python接收到一个char指针:
char *a=PyString_AsString(value);
当我打印到文本文件时,它给出:
1\n2\n3\n4\n5\n6\n7\n8\n9\n
(这只是一个示例字符,我要使用的字符要复杂得多)
我想使用
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]
打印到文本文件时,它给出:2\n3\n4\n5\n6\n7\n8\n9\n
。不应该只是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 nCount
函数的DrawText
参数。相反,您的包装器传递了-1
,这意味着字符指针被解释为以空字符结尾的字符串。该函数将打印所有字符,直到到达空终止符为止。如果要打印单个字符,则需要通过
1
参数传递nCount
。您无法使用包装器执行此操作。您必须这样做:char temp[2];
temp[1] = 0;
temp[0] = a[count*2];
dc->DrawText(temp, ...);
为了避免此临时缓冲区,您需要公开原始Win32 API函数的
nCount
参数。关于c++ - 试图将char索引传递给DrawText,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22541672/