C에서 첫 번째 X11 응용 프로그램을 작성 중이며 응용 프로그램 창의 크기를 검색하는 중 중대한 문제가 발생했습니다. "캐스트없이 포인터를 정수로 만듭니다"- GCC는 어떻게 만족합니까?
temp.c:30:2 warning: passing argument 3 of 'XGetGeometry' makes pointer from integer without a cast
static void loop();
static void initialize();
static void cleanUp();
static void run();
/* Variables */
static int screenNumber;
unsigned long White;
unsigned long Black;
long eventMask;
static Display *currentDisplay;
static Window currentWindow;
static unsigned int windowWidth;
static unsigned int windowHeight;
static GC graphicsController;
static XEvent XEvents;
void loop() {
XGetGeometry(currentDisplay, currentWindow, DefaultRootWindow(currentDisplay), NULL, NULL, &windowWidth, &windowHeight, NULL, NULL);
XDrawLine(currentDisplay, currentWindow, graphicsController, 0, 0, (int)windowWidth, (int)windowHeight);
XDrawLine(currentDisplay, currentWindow, graphicsController, 0, (int)windowHeight, (int)windowWidth, 0);
}
void initialize() {
currentDisplay = XOpenDisplay(NULL);
screenNumber = DefaultScreen(currentDisplay);
White = WhitePixel(currentDisplay, screenNumber);
Black = BlackPixel(currentDisplay, screenNumber);
currentWindow = XCreateSimpleWindow( currentDisplay,
DefaultRootWindow(currentDisplay),
0, 0,
500, 500,
0, Black,
White);
XMapWindow(currentDisplay, currentWindow);
XStoreName(currentDisplay, currentWindow, "rGot - X11");
eventMask = StructureNotifyMask;
XSelectInput(currentDisplay, currentWindow, eventMask);
do{
XNextEvent(currentDisplay, &XEvents);
}while(XEvents.type != MapNotify);
graphicsController = XCreateGC(currentDisplay, currentWindow, 0, NULL);
XSetForeground(currentDisplay, graphicsController, Black);
}
void run() {
eventMask = ButtonPressMask|ButtonReleaseMask;
XSelectInput(currentDisplay, currentWindow, eventMask);
do{
XNextEvent(currentDisplay, &XEvents);
loop();
}while(1==1);
}
void cleanUp() {
XDestroyWindow(currentDisplay, currentWindow);
XCloseDisplay(currentDisplay);
}
int main(){
initialize();
run();
cleanUp();
return 0;
}
,하지만 난 이것에 비교적 새로운 해요 ... 여기 내 설정이다 : 여기 내 코드입니다
- 우분투 -,458,499,893을 활용하는 내 최초의 시도 나중에이를 찾는 사람들을 위해
gcc tempc -o temp -lX11
:로 컴파일 12.04 LTS
올바르게 사용하려면, 나는 다음을 수행했다 :
XGetGeometry(currentDisplay, currentWindow, ¤tRoot, &windowOffsetX, &windowOffsetY, &windowWidth, &windowHeight, &windowBorderWidth, &windowDepth);
이
은 내 결과 here의 기초한다.
당신이 대답해야 할 질문은 왜 * XGetGeometry를 호출하는지입니다. 뭘하고 싶은지 알지 못하면 전화를 올릴 수 없습니다. –
@ n.m., 내 목표는 내 창 크기를 얻는 것입니다. 나는 스크린의 크기를 얻을 수 있었지만, 실제 윈도우가 어떤 크기인지 알 필요가있다. – FreeSnow
죄송합니다. 코드를 잘못 읽었습니다. 어떻게 든 & windowWidth, & windowHeight을 놓쳤습니다. 그래서이 부분은 정확하고 나는 방금 바보처럼 보였습니다. 유일한 문제는 루트 윈도우가 반환 인수라는 것입니다. –