题
从XDrawString 男人页面它似乎aceepts签署32位x和y坐标
int XDrawString(Display *display, Drawable d, GC gc, int x, int y, char *string, int length);
请注意X和Y两者是如何INT(即:上的gcc / LINUX2.6-I386 32位带符号整数至少)
问题是,当我通过y = 32767
(2 ^ 15 - 1)。该字符串被绘制在正确的位置,但高于此值的字符串不绘制任何
我怀疑内部32位整数,不使用,而是16位有符号的坐标的整数。
鉴于手册页似乎表明该函数接受32位整数,有没有需要打开允许使用的时间越长整数的一些编译选项?或者这是Xlib的的limmitation?
解决方案
在X11协议确实指定的16位。
看一看定义为在xPolyTextReq
<X11/Xproto.h>
typedef struct {
CARD8 reqType;
CARD8 pad;
CARD16 length B16;
Drawable drawable B32;
GContext gc B32;
INT16 x B16, y B16; /* items (xTextElt) start after struct */
} xPolyTextReq;
不隶属于 StackOverflow