HWND WdeCreateMDIClientWindow( HWND win, HINSTANCE app_inst ) { CLIENTCREATESTRUCT ccs; RECT rect; HWND client; int info_depth; int stat_depth; int ribbon_depth; info_depth = WdeGetInfoWindowDepth(); stat_depth = WdeGetStatusDepth(); ribbon_depth = WdeGetRibbonHeight(); GetClientRect( win, &rect ); ccs.hWindowMenu = GetSubMenu( GetMenu( win ), 0 ); ccs.idFirstChild = WDE_MDI_FIRST; /* attempt to create the main application edit window */ client = CreateWindow( "MDIClient", "", WS_CLIPCHILDREN | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL, 0, info_depth + ribbon_depth, rect.right - rect.left, rect.bottom - (rect.top + stat_depth + info_depth + ribbon_depth), win, (HMENU)NULL, app_inst, &ccs ); /* if the window could not be created return FALSE */ if( client == NULL ) { WdeDisplayErrorMsg( WDE_NOCREATEMDICLIENT ); return( FALSE ); } return( client ); }
/* Function to initialize the first instance of Wde */ bool WdeInit( HINSTANCE app_inst ) { WNDCLASS wc; /* fill in the WINDOW CLASS structure for the main window */ wc.style = CS_DBLCLKS; wc.lpfnWndProc = WdeMainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = app_inst; wc.hIcon = LoadIcon( app_inst, "APPLICON" ); wc.hCursor = LoadCursor( (HINSTANCE)NULL, IDC_ARROW ); wc.hbrBackground = NULL; wc.lpszMenuName = "WdeMenu"; wc.lpszClassName = WdeMainClass; /* register the main window class */ if( !RegisterClass( &wc ) ) { WdeDisplayErrorMsg( WDE_NOREGISTERMAINCLASS ); return( FALSE ); } /* register the edit window class */ if( !WdeRegisterEditClass( app_inst ) ) { WdeDisplayErrorMsg( WDE_NOREGISTEREDITCLASS ); return( FALSE ); } /* register the res MDI window class */ if( !WdeRegisterResClass( app_inst ) ) { WdeDisplayErrorMsg( WDE_NOREGISTERRESCLASS ); return( FALSE ); } /* register the tag window class */ if( !WdeRegisterTagClass( app_inst ) ) { WdeDisplayErrorMsg( WDE_NOREGISTERTAGCLASS ); return( FALSE ); } LoadCommCtrl(); return( TRUE ); }
Bool WdeRegisterEditClass( HINSTANCE app_inst ) { WNDCLASS wc; /* fill in the window class structure for the edit window */ wc.style = CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = WdeEditWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = sizeof( WdeResInfo * ); wc.hInstance = app_inst; wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = WdeEditBrush; wc.lpszMenuName = NULL; wc.lpszClassName = "WdeEditClass"; /* register the edit window class */ if( !RegisterClass( &wc ) ) { WdeDisplayErrorMsg( WDE_EDITREGISTERCLASSFAILED ); return( FALSE ); } /* fill in the window class structure for the edit window */ wc.style = CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = WdeFormsWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = sizeof( WdeResInfo * ); wc.hInstance = app_inst; wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = WdeFormsBrush; wc.lpszMenuName = NULL; wc.lpszClassName = "WdeFormsClass"; /* register the edit window class */ if( !RegisterClass( &wc ) ) { WdeDisplayErrorMsg( WDE_EDITREGISTERCLASSFAILED ); return( FALSE ); } return( TRUE ); }
bool WdeDDEDumpConversation( HINSTANCE inst ) { HCONV hconv; HSZ hservice; HSZ htopic; bool ok; ok = WdeDDEStart( inst ); if( ok ) { hservice = DdeCreateStringHandle( IdInst, WRE_SERVICE_NAME, CP_WINANSI ); ok = (hservice != (HSZ)NULL); } if( ok ) { htopic = DdeCreateStringHandle( IdInst, WRE_DIALOG_DUMP, CP_WINANSI ); ok = (htopic != (HSZ)NULL); } if( ok ) { // We expect the server to reject this connect attempt. // If it doesn't, then we terminate the conversation. hconv = DdeConnect( IdInst, hservice, htopic, (LPVOID)NULL ); if( hconv != (HCONV)NULL ) { DdeDisconnect( hconv ); } } if( hservice != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hservice ); } if( htopic != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, htopic ); } WdeDDEEnd(); if( !ok ) { WdeDisplayErrorMsg( WDE_DDEDEATHMSG ); } return( ok ); }
bool WdeRegisterResClass( HINSTANCE app_inst ) { WNDCLASS wc; /* fill in the WINDOW CLASS structure for the edit window */ wc.style = CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = WdeResWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = sizeof( LONG_PTR ); wc.hInstance = app_inst; wc.hIcon = LoadIcon( app_inst, "ResIcon" ); wc.hCursor = NULL; wc.hbrBackground = GetStockObject( WHITE_BRUSH ); wc.lpszMenuName = NULL; wc.lpszClassName = "WdeResClass"; /* register the edit window class */ if( !RegisterClass( &wc ) ) { WdeDisplayErrorMsg( WDE_REGISTEREDITFAILED ); return( FALSE ); } return( TRUE ); }
char *WdeGetFileName( WdeGetFileStruct *gf, DWORD flags, WdeGetFileNameAction action ) { OPENFILENAME wdeofn; HWND owner_window; DWORD error; char fn_drive[_MAX_DRIVE]; char fn_dir[_MAX_DIR]; char fn_name[_MAX_FNAME]; char fn_ext[_MAX_EXT]; char ext[_MAX_EXT + 1]; HINSTANCE app_inst; int len; int filter; bool ret; if( gf == NULL ) { return( NULL ); } owner_window = WdeGetMainWindowHandle(); app_inst = WdeGetAppInstance(); if( app_inst == NULL || owner_window == NULL ) { return( NULL ); } /* set the initial directory */ if( *wde_initial_dir == '\0' ) { getcwd( wde_initial_dir, MAXFILENAME ); } if( gf->title != NULL ) { len = strlen( gf->title ); if ( len < MAX_NAME ) { memcpy( wdefntitle, gf->title, len + 1 ); } else { memcpy( wdefntitle, gf->title, MAX_NAME ); wdefntitle[MAX_NAME - 1] = 0; } } else { wdefntitle[0] = 0; } filter = 0; if( gf->file_name != NULL && *gf->file_name != '\0' ) { _splitpath( gf->file_name, fn_drive, fn_dir, fn_name, fn_ext ); if( *fn_drive != '\0' || *fn_dir != '\0' ) { _makepath( wde_initial_dir, fn_drive, fn_dir, NULL, NULL ); } _makepath( wde_file_name, NULL, NULL, fn_name, fn_ext ); if( fn_ext[0] != '\0' ) { ext[0] = '*'; strcpy( ext + 1, fn_ext ); filter = WdeFindFileFilterIndex( gf->filter, ext ); } } else { wde_file_name[0] = 0; } if( filter == 0 ) { filter = WdeFindFileFilterIndex( gf->filter, WdeFileFilter ); if( filter < 1 ) { filter = 1; } } // CTL3D no longer requires this #if !defined( __NT__ ) flags |= OFN_ENABLEHOOK; #endif /* initialize the OPENFILENAME struct */ memset( &wdeofn, 0, sizeof( OPENFILENAME ) ); /* fill in non-variant fields of OPENFILENAME struct */ wdeofn.lStructSize = sizeof( OPENFILENAME ); wdeofn.hwndOwner = owner_window; wdeofn.hInstance = app_inst; wdeofn.lpstrFilter = gf->filter; wdeofn.lpstrCustomFilter = NULL; wdeofn.nMaxCustFilter = 0; wdeofn.nFilterIndex = filter; wdeofn.lpstrFile = wde_file_name; wdeofn.nMaxFile = MAXFILENAME; wdeofn.lpstrFileTitle = wdefntitle; wdeofn.nMaxFileTitle = MAXFILENAME; wdeofn.lpstrInitialDir = wde_initial_dir; wdeofn.lpstrTitle = wdefntitle; wdeofn.Flags = flags; #if !defined( __NT__ ) wdeofn.lpfnHook = (LPOFNHOOKPROC)MakeProcInstance( (FARPROC)WdeOpenHookProc, app_inst ); #endif #if 0 wdeofn.nFileOffset = 0L; wdeofn.nFileExtension = 0L; wdeofn.lpstrDefExt = NULL; wdeofn.lCustData = NULL; wdeofn.lpfnHook = NULL; wdeofn.lpTemplateName = NULL; #endif if( action == WDEOPENFILE ) { ret = GetOpenFileName( (LPOPENFILENAME)&wdeofn ); } else if( action == WDESAVEFILE ) { ret = GetSaveFileName( (LPOPENFILENAME)&wdeofn ); } else { return( NULL ); } #ifndef __NT__ if( wdeofn.lpfnHook != NULL ) { FreeProcInstance( (FARPROC)wdeofn.lpfnHook ); } #endif gf->fn_offset = wdeofn.nFileOffset; gf->ext_offset = wdeofn.nFileExtension; /* show the dialog box */ if( !ret ) { error = CommDlgExtendedError(); if( error ) { WdeDisplayErrorMsg( WDE_ERRORSELECTINGFILE ); } return( NULL ); } else { memcpy( wde_initial_dir, wde_file_name, wdeofn.nFileOffset ); if( wde_initial_dir[wdeofn.nFileOffset - 1] == '\\' && wde_initial_dir[wdeofn.nFileOffset - 2] != ':' ) { wde_initial_dir[wdeofn.nFileOffset - 1] = '\0'; } else { wde_initial_dir[wdeofn.nFileOffset] = '\0'; } _splitpath( wde_file_name, NULL, NULL, NULL, fn_ext + 1 ); if( fn_ext[1] != '\0' ) { fn_ext[0] = '*'; WdeSetFileFilter( fn_ext ); } else { char *out_ext; out_ext = WdeFindFileFilterFromIndex( gf->filter, wdeofn.nFilterIndex ); if( out_ext[2] != '*' ) { strcat( wde_file_name, &out_ext[1] ); } } } UpdateWindow( WdeGetMainWindowHandle() ); return( WdeStrDup( wde_file_name ) ); }
/* Function to initialize all instances of Wde */ bool WdeInitInst( HINSTANCE app_inst ) { RECT rect, screen, t; char *title; /* initialize global variables */ WdeInitOpts(); if( !JDialogInit() ) { return( FALSE ); } if( !WdeInitResStrings() ) { return( FALSE ); } if( !WdeInitCreateTable() ) { WdeDisplayErrorMsg( WDE_NOINITCONTROLOBJECTS ); return( FALSE ); } WdeCtl3DInit( app_inst ); WdeGetScreenPosOption( &rect ); /* load the accelerator table */ WdeAccel = LoadAccelerators( app_inst, "WdeAccelTable"); /* if the window could not be created return FALSE */ if( WdeAccel == (HACCEL)NULL ) { WdeDisplayErrorMsg( WDE_LOADACCELFAILED ); return( FALSE ); } GetWindowRect( GetDesktopWindow(), &screen ); if( !IntersectRect( &t, &screen, &rect ) ) { t.right = rect.right - rect.left; t.bottom = rect.bottom - rect.top; t.left = 0; if( screen.right - screen.left - t.right > 0 ) t.left = ( screen.right - screen.left - t.right ) / 2; t.top = 0; if( screen.bottom - screen.top - t.bottom > 0 ) t.top = ( screen.bottom - screen.top - t.bottom ) / 2; t.right += t.left; t.bottom += t.top; } else { t = rect; } title = WdeAllocRCString( WDE_APPTITLE ); /* attempt to create the main application window */ hWinWdeMain = CreateWindow( WdeMainClass, title, WS_OVERLAPPEDWINDOW, t.left, t.top, t.right - t.left, t.bottom - t.top, (HWND)NULL, (HMENU)NULL, app_inst, NULL ); if( title != NULL ) { WdeFreeRCString( title ); } /* if the window could not be created return FALSE */ if( hWinWdeMain == NULL ) { WdeDisplayErrorMsg( WDE_NOCREATEMAINWINDOW ); return( FALSE ); } hWinWdeMDIClient = WdeCreateMDIClientWindow( hWinWdeMain, app_inst ); /* attempt to create the main application info window */ if( !WdeCreateInfoWindow( hWinWdeMain, app_inst ) ) { WdeDisplayErrorMsg( WDE_NOCREATEINFOWINDOW ); return( FALSE ); } if( !WdeCreateStatusLine( hWinWdeMain, app_inst ) ) { WdeDisplayErrorMsg( WDE_NOCREATESTATUSLINE ); return( FALSE ); } WdeInitialMenu = GetMenu( hWinWdeMain ); WdeCurrentMenu = WdeInitialMenu; WdeResMenu = LoadMenu( app_inst, "WdeResMenu" ); WdeDDEMenu = LoadMenu( app_inst, "WdeDDEMenu" ); if( IsDDE ) { WdeSetAppMenuToRes( TRUE ); } if( !WdeInitialMenu || !WdeResMenu ) { WdeDisplayErrorMsg( WDE_NOINITMENUS ); return( FALSE ); } if( !WdeInitHints() ) { WdeDisplayErrorMsg( WDE_NOINITHINTS ); return( FALSE ); } WdeInitRibbon( app_inst ); if( WdeGetOption( WdeOptIsRibbonVisible ) ) { WdeShowRibbon(); } /* if the window was created Show and Update it */ if( WdeGetOption( WdeOptIsScreenMax ) ) { ShowWindow( hWinWdeMain, SW_SHOWMAXIMIZED ); } else { ShowWindow( hWinWdeMain, SW_SHOWNORMAL ); } UpdateWindow( hWinWdeMain ); WdeSetFontList( hWinWdeMain ); if( !IsDDE ) { WdeDisplaySplashScreen( hInstWde, hWinWdeMain, 1125 ); } if( IsDDE ) { WdeInitToolMenu( app_inst, WdeDDEMenu ); } else { WdeInitToolMenu( app_inst, WdeResMenu ); } WdeInitControls( app_inst ); if( WdeGetOption( WdeOptIsCntlsTBarVisible ) ) { if( !WdeCreateControlsToolBar ( ) ) { WdeDisplayErrorMsg( WDE_NOCREATETOOLBOX ); return( FALSE ); } } SetFocus( hWinWdeMain ); return( TRUE ); }
int PASCAL WinMain( HINSTANCE hinstCurrent, HINSTANCE hinstPrevious, LPSTR lpszCmdLine, int nCmdShow ) { MSG msg; #ifndef __NT__ #if 0 HWND win; HWND child; #endif #endif /* touch unused vars to get rid of warning */ _wde_touch( lpszCmdLine ); _wde_touch( nCmdShow ); #ifdef __NT__ _wde_touch( hinstPrevious ); #endif #if defined( __NT__ ) && !defined( __WATCOMC__ ) _argc = __argc; _argv = __argv; #endif WRInit(); WdeInitDisplayError( hinstCurrent ); /* store the handle to this instance of Wde in a static variable */ hInstWde = hinstCurrent; //check we are running in DDE mode IsDDE = WdeIsDDEArgs( _argv, _argc ); WdeFirstInst = (hinstPrevious == NULL); WdeInitEditClass(); /* is this the first instance of the application? */ #ifndef __NT__ if( WdeFirstInst ) { #endif /* if so call the routine to initialize the application */ if( !WdeInit( hinstCurrent ) ) { if( IsDDE ) { WdeDDEDumpConversation( hinstCurrent ); } return( FALSE ); } #ifndef __NT__ } #if 0 else if( IsDDE ) { WdeDisplayErrorMsg( WDE_NOMULTIPLEINSTANCES ); WdeDDEDumpConversation( hinstCurrent ); return( FALSE ); } else { win = FindWindow( WdeMainClass, NULL ); if( win != NULL ) { child = GetLastActivePopup( win ); PostMessage( win, WM_USER, 0, 0 ); BringWindowToTop( win ); if( child != (HWND)NULL && child != win ) { BringWindowToTop( child ); } } else { WdeDisplayErrorMsg( WDE_NOMULTIPLEINSTANCES ); } return( FALSE ); } #endif #endif if( !WdeInitInst( hinstCurrent ) ) { WdeDisplayErrorMsg( WDE_INITFAILED ); if( IsDDE ) { WdeDDEDumpConversation( hinstCurrent ); } return( FALSE ); } if( IsDDE ) { if( WdeDDEStart( hinstCurrent ) ) { if( !WdeDDEStartConversation() ) { WdeDisplayErrorMsg( WDE_DDEINITFAILED ); PostMessage( hWinWdeMain, WDE_FATAL_EXIT, 0, 0 ); } } else { WdeDisplayErrorMsg( WDE_DDEINITFAILED ); PostMessage( hWinWdeMain, WDE_FATAL_EXIT, 0, 0 ); } } WdeEnableMenuInput( TRUE ); if( setjmp( WdeEnv ) ) { PostMessage( hWinWdeMain, WDE_FATAL_EXIT, 0, 0 ); if( setjmp( WdeEnv ) ) { WdeDisplayErrorMsg( WDE_EXCEPTIONDURINGABNORMALEXIT ); exit( -1 ); } WdePushEnv( &WdeEnv ); } else { WdePushEnv( &WdeEnv ); WdeProcessArgs( _argv, _argc ); } if( !WdeGetNumRes() ) { WdeCreateNewResource( NULL ); } /* create the message loop */ while( GetMessage( &msg, (HWND)NULL, 0, 0 ) ) { if( !WdeIsTestMessage( &msg ) && !WdeIsInfoMessage( &msg ) && !WRIsWRDialogMsg( &msg ) ) { if( !WdeWasAcceleratorHandled( &msg ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } } } if( IsDDE ) { WdeDDEEndConversation(); } WdePopEnv( &WdeEnv ); if( IsDDE ) { WdeDDEEnd(); } WRFini(); return( msg.wParam ); }
bool WdeSaveResource( WdeResInfo *res_info, bool get_name ) { WdeGetFileStruct gf; char *filter; char *fn; int fn_offset; bool got_name; bool ok; OBJPTR main_obj; fn_offset = 0; got_name = FALSE; ok = (res_info != NULL && res_info->info != NULL); if( ok ) { if( res_info->info->save_name != NULL ) { fn = res_info->info->save_name; } else { res_info->info->save_type = res_info->info->file_type; fn = WdeStrDup( res_info->info->file_name ); got_name = TRUE; } if( get_name || fn == NULL || *fn == '\0' ) { filter = WdeSelectSaveFilter( res_info->info->file_type ); gf.file_name = fn; gf.title = WdeResSaveTitle; gf.filter = filter; fn = WdeGetSaveFileName( &gf ); got_name = TRUE; res_info->info->save_type = WR_DONT_KNOW; } ok = (fn != NULL && *fn != '\0'); } if( ok ) { if( got_name && res_info->info->save_name != NULL ) { WRMemFree( res_info->info->save_name ); } res_info->info->save_name = fn; if( res_info->info->save_type == WR_DONT_KNOW ) { res_info->info->save_type = WdeSelectFileType( fn, res_info->is32bit ); } ok = (res_info->info->save_type != WR_DONT_KNOW); } if( ok ) { if( WdeIsHashTableDirty( res_info->hash_table ) && !WdeIsHashSaveRejectedSet( res_info->hash_table ) ) { if( res_info->sym_name == NULL ) { res_info->sym_name = WdeCreateSymName( fn ); } } } if( ok ) { if( WdeIsHashTableDirty( res_info->hash_table ) ) { if( (main_obj = GetMainObject()) != NULL ) { Forward( main_obj, RESOLVE_HELPSYMBOL, &ok, NULL ); /* JPK */ Forward( main_obj, RESOLVE_SYMBOL, &ok, NULL ); } } WdeCreateDLGInclude( res_info, res_info->sym_name ); ok = WdeSaveResourceToFile( res_info ); if( !ok ) { WdeDisplayErrorMsg( WDE_SAVEFAILED ); } } if( ok ) { if( WdeIsHashTableDirty( res_info->hash_table ) && !WdeIsHashSaveRejectedSet( res_info->hash_table ) ) { WdeWriteSymbols( res_info->hash_table, &res_info->sym_name, get_name ); } } if( ok ) { //fn_offset = WRFindFnOffset( fn ); SendMessage( res_info->res_win, WM_SETTEXT, 0, (LPARAM)(LPVOID)&fn[fn_offset] ); } return( ok ); }
bool WdeOpenResource( char *fn ) { char *name; WdeResInfo *res_info; WdeGetFileStruct gf; bool ok, got_name; WdeSetWaitCursor( TRUE ); res_info = NULL; name = NULL; got_name = FALSE; if( fn != NULL ) { if( WdeFileExists( fn ) ) { name = WdeStrDup( fn ); gf.fn_offset = WRFindFnOffset( name ); } else { return( FALSE ); } } else { gf.file_name = NULL; gf.title = WdeResOpenTitle; gf.filter = WdeResOpenFilter; ok = ((name = WdeGetOpenFileName( &gf )) != NULL); } if( ok ) { got_name = TRUE; ok = ((res_info = WdeLoadResource( name )) != NULL); } if( ok ) { res_info->hash_table = WRInitHashTable(); ok = (res_info->hash_table != NULL); } if( ok ) { if( res_info->info->internal_type != WR_DONT_KNOW ) { res_info->is32bit = WRIs32Bit( res_info->info->internal_type ); } else { res_info->is32bit = WRIs32Bit( res_info->info->file_type ); } ok = WdeAddDlgItems( res_info ); } if( ok ) { WdeFindAndLoadSymbols( res_info ); ok = WdeCreateResourceWindow( res_info, gf.fn_offset, NULL ); } if( ok ) { if( WdeResInfoHasDialogs( res_info ) ) { WdeSelectDialog( res_info ); } else { WdeDisplayErrorMsg( WDE_PRJHASNODIALOGS ); } ListAddElt( &WdeResList, (void *)res_info ); WdeSetResModified( res_info, FALSE ); WdeCheckBaseScrollbars( FALSE ); } if( !ok ) { if( res_info != NULL ) { WdeFreeResInfo( res_info ); res_info = NULL; } if( got_name ) { WdeDisplayErrorMsg( WDE_RESOURCESNOTLOADED ); } } if( name != NULL ) { WRMemFree( name ); } WdeSetWaitCursor( FALSE ); return( ok ); }
Bool WdeCreateStatusLine( HWND main, HINSTANCE inst ) { RECT rect; LOGFONT lf; TEXTMETRIC tm; HFONT old_font; HDC dc; status_block_desc sbd; char *status_font; char *cp; int point_size; Bool use_default; memset( &lf, 0, sizeof( LOGFONT ) ); dc = GetDC( main ); lf.lfWeight = FW_BOLD; use_default = TRUE; status_font = WdeAllocRCString( WDE_STATUSFONT ); if( status_font != NULL ) { cp = (char *)_mbschr( (unsigned char *)status_font, '.' ); if( cp != NULL ) { *cp = '\0'; strcpy( lf.lfFaceName, status_font ); cp++; point_size = atoi( cp ); use_default = FALSE; } WdeFreeRCString( status_font ); } if( use_default ) { strcpy( lf.lfFaceName, STATUS_FONTNAME ); point_size = STATUS_POINTSIZE; } lf.lfHeight = -MulDiv( point_size, GetDeviceCaps( dc, LOGPIXELSY ), 72 ); WdeStatusFont = CreateFontIndirect( &lf ); old_font = SelectObject( dc, WdeStatusFont ); GetTextMetrics( dc, &tm ); SelectObject( dc, old_font ); ReleaseDC( main, dc ); GetClientRect( main, &rect ); WdeStatusDepth = tm.tmHeight + STATUS_LINE_PAD + VERT_BORDER * 2; rect.top = rect.bottom - WdeStatusDepth; if( !StatusWndInit( inst, WdeStatusHookProc, 0, (HCURSOR)NULL ) ) { return( FALSE ); } WdeStatusBar = StatusWndStart(); sbd.separator_width = STATUS_LINE_PAD; sbd.width = STATUS1_WIDTH; sbd.width_is_percent = FALSE; sbd.width_is_pixels = TRUE; StatusWndSetSeparators( WdeStatusBar, 1, &sbd ); WdeStatusWindow = StatusWndCreate( WdeStatusBar, main, &rect, inst, NULL ); if( WdeStatusWindow == NULL ) { WdeDisplayErrorMsg( WDE_NOCREATESTATUS ); return( FALSE ); } /* set the text in the status window */ WdeSetStatusReadyText(); GetWindowRect( WdeStatusWindow, &rect ); WdeStatusDepth = rect.bottom - rect.top; return( TRUE ); }
bool WdeSaveObjectInto( WdeResInfo *rinfo, WdeDialogBoxInfo *dbi, WResID *name, void *data, uint_32 size, WResLangType *lang ) { char *fname; WdeGetFileStruct gf; bool dup; WRSaveIntoData idata; WdeResDlgItem ditem; bool is_rc; bool ok; idata.type = NULL; fname = NULL; dup = false; ok = (rinfo != NULL && dbi != NULL && name != NULL && data != NULL); if( ok ) { gf.file_name = NULL; gf.title = WdeDlgSaveIntoTitle; gf.filter = WdeResSaveFilter; fname = WdeGetOpenFileName( &gf ); ok = (fname != NULL && *fname != '\0'); } if( ok ) { is_rc = WdeIsFileAnRCFile( fname ); if( !is_rc ) { ok = ((idata.type = WResIDFromNum( RESOURCE2INT( RT_DIALOG ) )) != NULL); } } if( ok ) { if( is_rc ) { memset( &ditem, 0, sizeof( WdeResDlgItem ) ); ditem.dialog_info = dbi; ditem.dialog_name = name; ok = WdeSaveObjectToRC( fname, rinfo, &ditem, TRUE ); } else { idata.next = NULL; idata.name = name; idata.data = data; idata.lang = *lang; idata.size = size; idata.MemFlags = dbi->MemoryFlags; ok = WRSaveObjectInto( fname, &idata, &dup ) && !dup; } } if( dup ) { WdeDisplayErrorMsg( WDE_DUPRESNAMEINFILE ); } if( fname != NULL ) { WRMemFree( fname ); } if( idata.type != NULL ) { WResIDFree( idata.type ); } return( ok ); }