Bonjour,
Je cherche à savoir si je peux passer le paramètre ch=wgetch d'une routine à l'autre en c.
Je m'explique :

J'ai un programme principal qui gère un écran.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
void navige_panel(FORM *form, PANEL *panel, FIELD *field, int *ch)
void navige_panel(FORM *form, PANEL *panel, FIELD *field, int *ch)
 
main()
{
PANEL *panel;
WINDOW *win;
FORM *form;
FIELD *field;
int=ch;
 
dec_panel(form,win,panel,field);
 
update_panels();
do_update();
 
while(ch!=KEY_F(10))
{
navige_panel(form, panel, field, &ch);
}
unpost_form(form);
free_form(form);
free_field(field[0]);
free_field(field[1]);
endwin();
del_panel(panel);
 
 
return0;
}
 
void dec_panel(FORM *form, WIN *win, PANEL *panel, FIELD *field)
{
int rows, cols
field[0]= new_field(1, 1, 2, 2, 0, 0);
field[1]= new_field(1, 1, 4, 2, 0, 0);
form = new_form(field);
scale_form(form, &rows, &cols);
set_form_win(form,win);
set_form_sub(my_form, derwin(win, rows, cols, 0, 0));
post_form(form);
keypad(win,TRUE);
panel=new_panel(win);
}
 
void navige_panel(FORM *form, PANEL *panel, FIELD *field, int *ch)
switch (*ch = wgetch(win))
{
case KEY_DOWN:
form_driver(my_form, REQ_NEXT_FIELD)	;
form_driver(my_form, REQ_BEG_FIELD)	;
break					;
case KEY_UP:
form_driver(my_form, REQ_PREV_FIELD)	;
form_driver(my_form, REQ_BEG_FIELD)	;
break					;
default:
form_driver(my_form, *ch)		;
break					;
}
}
J'ai simplifié mon code. Le comportement est qu'il m'affiche bien le panel avec la fenêtre associée et le form associé. Par contre je n'arrive pas à naviguer via le "ch"