как изменить цвет фона окна ввода при нажатии клавиши - PullRequest
0 голосов
/ 15 октября 2018

в этом коде есть четыре inpux box.когда мы нажимаем клавишу вверх или клавишу вниз на клавиатуре, указатель перемещается вверх или вниз соответственно.Я также хочу изменить цвет фона окна ввода, когда он потерял или получить фокус, но XSetWindowBackground не меняет цвет, как это будет решать

while ( done == 0 ) {
    XNextEvent (mydisplay , &baseEvent ) ;
    switch ( baseEvent . type ) {
    case Expose :
        break ;
    case KeyPress :
        count = XLookupString(&baseEvent . xkey , bytes , 3 , &character , &cs ) ;
        index = 0 ;
        for ( i =0; i <4; i ++)
        if ( ring [i] . id == baseEvent . xkey .window ) index = i ;
        switch ( count ) {
        case 0 : /* Control cha r a c t e r */
        switch ( character ) {
        case XK_Up: /* Up arrow key */
        case XK_KP_Up:
        XSetWindowBackground(mydisplay , ring[index].id,  0xff00FF00) ;
        index--;
        XSetWindowBackground(mydisplay , ring[index].id,  0xFF0000FF) ;
        if ( index < 0 ) index = 3 ;

        XWarpPointer (mydisplay , None , ring [ index ] . id ,
        0 , 0 , 0 , 0 , ring [ index ] . last * charinc , 10 ) ;
        break ;
        case XK_Down: /* Down arrow key */
        case XK_KP_Down:
        XSetWindowBackground(mydisplay , ring[index].id,  0xff00FF00) ;
        index++;
        XSetWindowBackground(mydisplay , ring[index].id,  0xFF0000FF) ;
        if ( index > 3 ) index = 0 ;
        XWarpPointer (mydisplay , None , ring [ index ] . id ,
        0 , 0 , 0 , 0 , ring [ index ] . last * charinc , 10 ) ;
        break ;
        }
        break ;
        case 1 : /* Pr int abl e cha r a c t e r */
        ring [ index ] . array [ ring [ index ] . last ] = bytes [ 0 ] ;
        XDrawString (mydisplay , ring [ index ] . id , mygc , ring [ index ] . last * charinc , 15 , bytes , 1 ) ;
        ring [ index ] . last ++;
        break ;
        }
        break ;
        }
    }
...