【发布时间】:2014-05-17 03:17:35
【问题描述】:
我是 xlib 的新手。我有一个程序,它有两个显示器和两个窗口。我的问题是当用户调整窗口大小时内容消失了。
当一个人可以在它们上画画时,两个窗户都会转动。我有每个窗口轮到的while循环来获取事件并处理它们。我的问题是,如果我尝试使用 XNextEvent() 监听非活动窗口的事件,程序将随机运行。我在下面粘贴了其中一个 while 循环。
非常感谢您的帮助。
while(drawThings2) {
XNextEvent( dpy2, & e2 );// Get event
switch( e2.type ){
case ButtonPress :
switch( e2.xbutton.button ){
case Button1 :
//Start drawing
break;
case Button2 :
case Button3 :
break;
}
break;
case ButtonRelease :
switch( e2.xbutton.button ){
case Button1 :
//Draw things
break;
}
break;
case MotionNotify :
if( drawing && (e2.xmotion.state & Button1Mask) )
{
//Draw things
}
break;
case Expose :
if( e2.xexpose.count >= 0 )
{
//Redraw content if current window is resized by user
}
break;
}
if(XCheckWindowEvent( dpy, w, ExposureMask, & e )>0)
{
//Redraw the second window's content if the second window is resized by user
}
}
【问题讨论】:
-
一种可能性是拥有单独的线程,每个线程处理一个显示连接。