Extrait de
Seven Tiles (ça a l'air de marcher et je sais pas si c'est propre

)
HANDLE dialoghd = DialogNewSimple(CALCULATOR?200:140,CALCULATOR?80:70);
HANDLE popuphd_list[3];
short i,index;
char * ptr = NULL;
const char s1[] = "1 Player";
const char s2[] = "2 Players";
const char s3[] = "Low";
const char s4[] = "Medium";
const char s5[] = "High";
const char s6[] = "Little";
const char s7[] = "Great";
const char * menu_str[3][4] = {{s3,s4,s5,NULL},{s6,s4,s7,NULL},{s1,s2,NULL,NULL}};
const char menu_txt_92[3][18] = {{"Fragmentation....\0"},{"Size.............\0"},{"Game type........\0"}};
const char menu_txt_89[3][28] = {{"Fragmentation ...\0"},{"Size ....................\0"},{"Game type .........\0"}};
static short menu_defaults[3] = {2,2,1}; // medium, medium, 1 player
DialogAddTitle(dialoghd,"Seven Tiles",BT_OK,BT_CANCEL);
DialogAddText(dialoghd,6,12,"Sevent Tiles: enter settings");
for(index=3;index--;)
{
i=0;
popuphd_list[index]=PopupNew(NULL,0);
while((ptr=(char*)menu_str[index][i++])) PopupAddText((popuphd_list[index]),-1,ptr,i); // while the string's not null, add it to the current popup
DialogAddPulldown(dialoghd,21,40+8*(-index)+1,CALCULATOR?menu_txt_92[index]:menu_txt_89[index],popuphd_list[index],index); // add a pulldown
}
index=DialogDo(dialoghd,CENTER,CENTER,NULL,menu_defaults); // display the dialog
HeapFree(dialoghd); // free the dialog's handle
for(i=3;i--;HeapFree(popuphd_list[i])); // free the popups' handles
// fragmentation = menu_defaults[FRAG]-1; // set the global vars to the selected values
// TABLE_HEIGHT = TABLE_WIDTH = 9+4*(menu_defaults[SIZE]);
// game_type = menu_defaults[TYPE];
HANDLE DialogAddPulldown (HANDLE Handle, short x, short y, const char *prompt, HANDLE MenuHandle, unsigned short index);
Handle est un handle de Dialog dans lequel sera ajouté le pulldown (retourné par exemple par DialogNewSimple)
x,y les coordonnées du coin haut gauche
prompt le texte statique affiché à gauche de la liste descendante
MenuHandle un handle de popup (retourné par exemple par popup new)
index est l'endroit où la réponse de choix du pulldown va être stockée dans la liste passée en paramètre de DialogDo.
vala, c'est un exemple
