#include #include #include #include #include #include #include #include #include #include #include #define INIT_ADESC(dsc, len, ptr, len_elem) {(dsc).dsc$b_dtype = DSC$K_DTYPE_VT;\ (dsc).dsc$b_class = DSC$K_CLASS_A; (dsc).dsc$w_length = (len_elem);\ (dsc).dsc$a_pointer = (ptr); \ (dsc).dsc$b_scale = 0; (dsc).dsc$b_digits = 0; \ (dsc).dsc$b_aflags.dsc$v_fl_binscale = 0; \ (dsc).dsc$b_aflags.dsc$v_fl_redim = 0; (dsc).dsc$b_aflags.dsc$v_fl_column = 0; \ (dsc).dsc$b_aflags.dsc$v_fl_coeff = 1; (dsc).dsc$b_aflags.dsc$v_fl_bounds = 0; \ (dsc).dsc$b_dimct = 1;(dsc).dsc$l_arsize = (len);}; struct dsc$descriptor_a menu; static char menu_item [5][7] = {{"File."},{"Quit."},{"Print"},{"Exit."},{"Help."}}; void main (void) { int status; int i,row,col,D,P,K,choice = 0; /* ** */ INIT_ADESC (menu,sizeof(menu_item),(char *) menu_item,sizeof(menu_item[0])); row = 10; col = 15; status = smg$create_virtual_display (&row,&col,&D); if ( !(status & 1) ) lib$signal(status); status = smg$create_virtual_keyboard(&K); if ( !(status & 1) ) lib$signal(status); status = smg$create_pasteboard (&P); if ( !(status & 1) ) lib$signal(status); /* ** */ status = smg$paste_virtual_display(&D,&P,&row,&col); if ( !(status & 1) ) lib$signal(status); /* ** */ status = smg$create_menu(&D,&menu); if ( !(status & 1) ) lib$signal(status); status = smg$select_from_menu (&K,&D,&choice); if ( (status != SMG$_EOF) && !(status & 1) ) lib$signal(status); printf("\n choice = %d",choice); }