문제

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의 절제입니까?

도움이 되었습니까?

해결책

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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top