bool WRSaveResourceTo_RC( WRInfo *info, bool backup ) { char fn_path[_MAX_PATH]; bool ok; ok = (info != NULL && info->save_name != NULL); if( ok ) { WRGetInternalRESName( info->save_name, fn_path ); // if the internal save type has not been set up yet // then we must take a crude guess if( info->internal_type == WR_DONT_KNOW ) { info->internal_type = WRSelectFileType( (HWND)NULL, fn_path, #ifdef __NT__ TRUE, #else FALSE, #endif FALSE, NULL ); } ok = saveResourceToRES( info, backup, fn_path, info->internal_filename != NULL ? info->internal_filename : info->file_name ); } return( ok ); }
// We really should not reread the file but, alas, time demands // something a little less pristine. int WRRelinkInfo( WRInfo *info ) { char fn_path[_MAX_PATH]; WRInfo *tinfo; int ok; tinfo = NULL; ok = (info != NULL); if( ok ) { if( info->internal_filename != NULL ) { WRGetInternalRESName( info->save_name, fn_path ); } else { strcpy( fn_path, info->save_name ); } ok = WRCopyFileToTemp( info, fn_path ); } if( ok ) { tinfo = WRLoadResource( fn_path, info->save_type ); ok = (tinfo != NULL); } if( ok ) { ok = WRRelinkDir( info->dir, tinfo->dir ); } if( tinfo != NULL ) { WRFreeWRInfo( tinfo ); } return( ok ); }
bool WdeSaveResourceToFile( WdeResInfo *res_info ) { bool ok; char fn[_MAX_PATH]; WdeSetWaitCursor( TRUE ); ok = (res_info != NULL && res_info->info != NULL); if( ok ) { if( res_info->info->save_type == WR_WIN_RC_DLG || res_info->info->save_type == WR_WIN_RC ) { if( res_info->info->internal_type == WR_DONT_KNOW ) { WRGetInternalRESName( res_info->info->save_name, fn ); res_info->info->internal_type = WdeSelectFileType( fn, res_info->is32bit ); } } } if( ok ) { ok = WdeInfoToData( res_info ); } if( ok ) { if( res_info->info->save_type == WR_WIN_RC_DLG || res_info->info->save_type == WR_WIN_RC ) { ok = WdeSaveRC( res_info->info->save_name, res_info ); } } // if we are saving a .RES file then auto create a dlg script if( ok ) { if( res_info->info->save_type == WR_WIN16M_RES || res_info->info->save_type == WR_WIN16W_RES || res_info->info->save_type == WR_WINNTM_RES || res_info->info->save_type == WR_WINNTW_RES ) { char dlgName[_MAX_PATH]; if( WdeCreateDLGName( res_info->info->save_name, dlgName ) ) { ok = WdeSaveRC( dlgName, res_info ); } } } if( ok ) { ok = WRSaveResource( res_info->info, true ); } if( ok ) { WdeSetResModified( res_info, FALSE ); } if( res_info != NULL && res_info->info->save_type != WR_WIN_RC_DLG ) { WdeFreeInfoData( res_info ); } WdeSetWaitCursor( FALSE ); return( ok ); }
bool WRLoadResourceFrom_RC( WRInfo *info ) { WResTargetOS target_os; WRFileType target; char fn_path[_MAX_PATH]; bool is_wres; bool ok; ok = (info != NULL && info->file_name != NULL); if( ok ) { WRGetInternalRESName( info->file_name, fn_path ); } #ifndef __NT__ if( ok ) { target = WRIdentifyFile( fn_path ); ok = !WRIs32Bit( target ); if( !ok ) { WRDisplayErrorMsg( WR_NOLOAD32IN16 ); } } #endif if( ok ) { ok = loadResDirFromRES( info, fn_path, &is_wres ); } if( ok ) { target_os = WResGetTargetOS( info->dir ); target = WR_INVALID_FILE; switch( target_os ) { case WRES_OS_WIN16: target = WR_WIN16M_RES; if( is_wres ) { target = WR_WIN16W_RES; } break; case WRES_OS_WIN32: target = WR_WINNTM_RES; if( is_wres ) { target = WR_WINNTW_RES; } break; } info->internal_type = target; if( target == WR_INVALID_FILE ) { WRDisplayErrorMsg( WR_INVALIDFILE ); ok = false; } } if( ok ) { info->internal_filename = WRStrDup( fn_path ); ok = (info->internal_filename != NULL); } return( ok ); }