static void DlgOpen( gui_window *parent, const char *title, int rows, int cols, gui_control_info *controls_info, int num_controls, GUICALLBACK *rtn, void *extra, bool sys ) { gui_coord charuse; gui_coord charspace; gui_text_metrics metrics; DlgControl.title = title; DlgControl.call_back = rtn; DlgControl.extra = extra; DlgControl.parent = parent; GUIGetDlgTextMetrics( &metrics ); charspace.x = metrics.max.x; charspace.y = metrics.max.y; #ifdef __OS2_PM__ // brutal hack to get OS/2 and Windows dialogs to look the same. charuse.x = ( 5 * metrics.avg.x ) / 4; charuse.y = ( 3 * metrics.avg.y ) / 2; #else charuse.x = metrics.avg.x; charuse.y = ( 7 * metrics.avg.y ) / 4; #endif GUITruncToPixel( &charuse ); DlgSetSize( parent, &DlgControl, rows, cols, &charuse ); DlgSetCtlSizes( controls_info, num_controls, &charuse, &charspace ); if( sys || DlgModal ) { GUICreateSysModalDialog( &DlgControl, num_controls, controls_info ); } else { GUICreateDialog( &DlgControl, num_controls, controls_info ); } }
static bool OpenStatusWindow( const char *title ) /***********************************************/ { gui_text_metrics metrics; // int i; gui_rect rect; // for( i = STAT_BLANK; i < sizeof( Messages ) / sizeof( Messages[0] ); ++i ) { // Messages[i] = GetVariableStrVal( Messages[i] ); // } GUIGetDlgTextMetrics( &metrics ); CharSize.x = metrics.avg.x; CharSize.y = 5 * metrics.avg.y / 4; GUITruncToPixel( &CharSize ); StatusInfo.parent = MainWnd; StatusInfo.title = GUIStrDup( title, NULL ); StatusInfo.rect.width = STATUS_WIDTH * CharSize.x; StatusInfo.rect.height = STATUS_HEIGHT * CharSize.y; GUIGetClientRect( MainWnd, &rect ); if( GUIIsGUI() ) { StatusInfo.rect.y = BitMapBottom; } else { StatusInfo.rect.y = (GUIScale.y - StatusInfo.rect.height) / 2; } if( StatusInfo.rect.y > rect.height - StatusInfo.rect.height ) { StatusInfo.rect.y = rect.height - StatusInfo.rect.height; } StatusInfo.rect.x = (GUIScale.x - StatusInfo.rect.width) / 2; StatusBarLen = 0; StatusWnd = GUICreateWindow( &StatusInfo ); GUIGetClientRect( StatusWnd, &StatusRect ); Cancel.parent = StatusWnd; Cancel.text = LIT( Cancel ); Cancel.rect.height = 7 * CharSize.y / 4; Cancel.rect.width = (strlen( Cancel.text ) + 4) * CharSize.x; Cancel.rect.x = (StatusRect.width - Cancel.rect.width) / 2; Cancel.rect.y = CANNERY_ROW * CharSize.y; StatusBarRect.x = BAR_INDENT * CharSize.x; StatusBarRect.width = StatusRect.width - 2 * BAR_INDENT * CharSize.x; StatusBarRect.y = STATUS_ROW * CharSize.y; StatusBarRect.height = CharSize.y; #ifndef _UI StatusBarRect.y -= CharSize.y / 2; StatusBarRect.height += CharSize.y; #endif StatusBarLen = StatusBarRect.width / CharSize.x; if( !GUIAddControl( &Cancel, &ToolPlain, &ToolStandout ) ) { SetupError( "IDS_CONTROLERROR" ); return( false ); } return( true ); }