bool WdeSBNoodleSize( OBJPTR obj, bool recreate ) { HWND hWnd; WdeSBarObject *sb_obj; if( obj == NULL ) { return( FALSE ); } sb_obj = (WdeSBarObject *)obj; if( recreate ) { Forward( obj, DESTROY_WINDOW, FALSE, NULL ); Forward( obj, CREATE_WINDOW, FALSE, NULL ); } if( Forward( (OBJPTR)sb_obj->object_handle, GET_WINDOW_HANDLE, &hWnd, NULL ) ) { WdeResInfo *rinfo; rinfo = WdeGetCurrentRes(); if( rinfo != NULL ) { RECT rect; GetWindowRect( hWnd, &rect ); MapWindowPoints( (HWND)NULL, rinfo->forms_win, (POINT *)&rect, 2 ); HideSelectBoxes(); Resize( sb_obj->control, &rect, FALSE ); WdeUpdateCDialogUnits( sb_obj->control, &rect, NULL ); ShowSelectBoxes(); } } return( TRUE ); }
Bool WdeIsCurrentMDIWindowZoomed( void ) { WdeResInfo *info; info = WdeGetCurrentRes(); if( info != NULL && info->res_win != NULL ) { return( IsZoomed( info->res_win ) ); } else { return( FALSE ); } }
LRESULT WdePassToEdit( UINT message, WPARAM wParam, LPARAM lParam ) { WdeResInfo *info; info = WdeGetCurrentRes(); if( info != NULL && info->forms_win != NULL ) { return( SendMessage( info->forms_win, message, wParam, lParam ) ); } return( FALSE ); }
static WdeResDlgItem *WdeGetDlgItem( void ) { WdeResInfo *rinfo; WdeResDlgItem *ditem; ditem = NULL; rinfo = WdeGetCurrentRes(); if( rinfo != NULL && rinfo->dlg_item_list != NULL ) { ditem = (WdeResDlgItem *)ListElement( rinfo->dlg_item_list ); } return( ditem ); }
HWND WdeGetEditWindowHandle( WdeResInfo *info ) { if( info != NULL ) { return( info->edit_win ); } else { info = WdeGetCurrentRes(); if( info ) { return( info->edit_win ); } else { return( NULL ); } } }
void WdeSOP( OBJPTR obj, OBJPTR parent ) { LIST *ilist, *tlist, *clist; WdeResInfo *info; RECT orect; OBJPTR sib; OBJ_ID id; bool clear; POINT origin; info = WdeGetCurrentRes(); if( info == NULL ) { return; } GetClientRect( info->edit_win, &orect ); GetOffset( &origin ); OffsetRect( &orect, origin.x, origin.y ); if( parent == NULL ) { GetObjectParent( obj, &parent ); if( parent == NULL ) { return; } } Forward( parent, GET_SUBOBJ_LIST, &tlist, NULL ); if( tlist != NULL && WdeFindObjectsInRect( &orect, &ilist, tlist ) && ilist != NULL ) { clist = NULL; tlist = NULL; for( ; ilist != NULL; ilist = ListConsume( ilist ) ) { sib = ListElement( ilist ); if( (Forward( sib, IS_OBJECT_CLEAR, &clear, NULL ) && clear) || (Forward( sib, IDENTIFY, &id, NULL ) && id == DIALOG_OBJ) ) { WdeInsertObject( &clist, sib ); } else { WdeInsertObject( &tlist, sib ); } } if( clist != NULL ) { WdeListConcat( &tlist, clist, 0 ); ListFree( clist ); } if( tlist != NULL ) { WdeReorderObjectWindows( tlist ); ListFree( tlist ); } } }
bool WdeUpdateDDEEditSession( void ) { WdeResInfo *rinfo; WdeResDlgItem *ditem; HDDEDATA hdata; bool ok; hdata = (HDDEDATA)NULL; ditem = WdeGetDlgItem(); ok = (WdeClientConv != (HCONV)NULL && ditem != NULL); if( ok ) { hdata = WdeCreateResData( ditem ); ok = (hdata != (HDDEDATA)NULL); } if( ok ) { ok = DdeClientTransaction( (LPBYTE)hdata, -1, WdeClientConv, hDataItem, WdeDataClipbdFormat, XTYP_POKE, TIME_OUT, NULL ) != 0; } if( hdata != (HDDEDATA)NULL ) { DdeFreeDataHandle( hdata ); } if( ok ) { hdata = WdeCreateResNameData( ditem->dialog_name, ditem->is32bit ); ok = (hdata != (HDDEDATA)NULL); } if( ok ) { ok = DdeClientTransaction( (LPBYTE)hdata, -1, WdeClientConv, hNameItem, WdeDataClipbdFormat, XTYP_POKE, TIME_OUT, NULL ) != 0; } if( hdata != (HDDEDATA)NULL ) { DdeFreeDataHandle( hdata ); } if( ok ) { rinfo = WdeGetCurrentRes(); WdeSetResModified( rinfo, FALSE ); } return( ok ); }
void WdeEnablePasteItem( HMENU menu ) { UINT cmd; WdeResInfo *rinfo; cmd = MF_GRAYED; rinfo = WdeGetCurrentRes(); if( rinfo != NULL && rinfo->editting ) { InitState( rinfo->forms_win ); if( FMPasteValid() ) { cmd = MF_ENABLED; } } EnableMenuItem( menu, IDM_PASTEOBJECT, cmd | MF_BYCOMMAND ); }
static void WdeEnableSelectDialogItem( HMENU menu ) { WdeResInfo *info; UINT cmd; info = WdeGetCurrentRes(); if( WdeResInfoHasDialogs( info ) ) { cmd = MF_ENABLED; } else { cmd = MF_GRAYED; } EnableMenuItem( menu, IDM_SELECT_DIALOG, cmd | MF_BYCOMMAND ); EnableMenuItem( menu, IDM_REMOVE_DIALOG, cmd | MF_BYCOMMAND ); }
void WdeHandlePokedData( HDDEDATA hdata ) { HWND main; char *cmd; WdeResInfo *rinfo; if( hdata == (HDDEDATA)NULL ) { return; } cmd = (char *)WdeHData2Mem( hdata ); if( cmd == NULL ) { return; } main = WdeGetMainWindowHandle(); if( stricmp( cmd, "show" ) == 0 ) { ShowWindow( main, SW_RESTORE ); ShowWindow( main, SW_SHOWNA ); } else if( stricmp( cmd, "hide" ) == 0 ) { ShowWindow( main, SW_SHOWMINNOACTIVE ); ShowWindow( main, SW_HIDE ); } else if( stricmp( cmd, "endsession" ) == 0 ) { if( GotEndSession == FALSE ) { GotEndSession = TRUE; rinfo = WdeGetCurrentRes(); WdeDestroyResourceWindow( rinfo ); } } else if( stricmp( cmd, "bringtofront" ) == 0 ) { if( IsIconic( main ) ) { ShowWindow( main, SW_RESTORE ); } #ifdef __NT__ SetWindowPos( main, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); SetWindowPos( main, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); SetWindowPos( main, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); SetForegroundWindow( main ); #else SetActiveWindow( main ); SetWindowPos( main, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); #endif } WRMemFree( cmd ); }
OBJPTR WdeGetCurrentDialog( void ) { WdeResInfo *info; OBJPTR curr_obj; OBJPTR ancestor; OBJ_ID id; info = WdeGetCurrentRes(); if( info == NULL ) { return( NULL ); } InitState( info->forms_win ); curr_obj = GetCurrObject(); if( curr_obj == NULL ) { return( NULL ); } if( !Forward( curr_obj, IDENTIFY, &id, NULL ) ) { WdeWriteTrail( "WdeGetCurrentDialog: IDENTIFY failed!" ); return( NULL ); } while( id != DIALOG_OBJ && id != BASE_OBJ ) { GetObjectParent( curr_obj, &ancestor ); if( ancestor == NULL ) { WdeWriteTrail( "WdeGetCurrentDialog: IDENTIFY failed!" ); return( NULL ); } curr_obj = ancestor; if( !Forward( curr_obj, IDENTIFY, &id, NULL ) ) { WdeWriteTrail( "WdeGetCurrentDialog: IDENTIFY failed!" ); return( NULL ); } } if( id != DIALOG_OBJ ) { return( NULL ); } return( curr_obj ); }
bool WdeSetObjectInfo( OBJPTR dlg, WdeResInfo **ri, WdeResDlgItem **di, WResID *id ) { WdeResInfo *res_info; WdeResDlgItem *item; WResID *name; bool ok; ok = (dlg != NULL && id != NULL && ri != NULL && di != NULL); if( ok ) { ok = ((res_info = WdeGetCurrentRes()) != NULL); } if( ok ) { ok = ((item = WdeAllocResDlgItem()) != NULL); } if( ok ) { ok = ((name = WdeCopyWResID( id )) != NULL); } if( ok ) { item->object = dlg; item->dialog_name = name; item->modified = true; item->is32bit = res_info->is32bit; WdeAddResDlgItemToResInfo( res_info, item ); *ri = res_info; *di = item; } else { if( item != NULL ) { WdeFreeResDlgItem( &item, FALSE ); } if( name != NULL ) { WResIDFree( name ); } } return( ok ); }
WINEXPORT LRESULT CALLBACK WdeMainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { HMENU menu; LRESULT ret; bool pass_to_def; WdeResInfo *res_info; WORD wp; about_info ai; if( WdeCleanupStarted ) { if( message == WM_DESTROY ) { PostQuitMessage( 0 ); } return( DefFrameProc( hWnd, hWinWdeMDIClient, message, wParam, lParam ) ); } pass_to_def = TRUE; ret = FALSE; res_info = WdeGetCurrentRes(); menu = WdeGetMenuHandle(); switch( message ) { case WM_INITMENU: handleInitMenu( menu ); break; case WM_USER: WdeSetStatusByID( -1, WDE_ONLYONEINSTANCE ); break; case WM_MENUSELECT: WdeHandleMenuSelect( wParam, lParam ); break; case WM_MEASUREITEM: WdeHandleMeasureItem( (MEASUREITEMSTRUCT *)lParam ); ret = TRUE; pass_to_def = FALSE; break; case WM_DRAWITEM: WdeHandleDrawItem( (DRAWITEMSTRUCT *)lParam ); ret = TRUE; pass_to_def = FALSE; break; case WM_MOVE: if( IsZoomed( hWnd ) ) { WdeSetOption( WdeOptIsScreenMax, TRUE ); } else if( !IsIconic( hWnd ) ) { WdeUpdateScreenPosOpt(); WdeSetOption( WdeOptIsScreenMax, FALSE ); } break; case WM_SIZE: if( wParam == SIZE_MAXIMIZED ) { WdeSetOption( WdeOptIsScreenMax, TRUE ); } else if( wParam != SIZE_MINIMIZED ) { WdeUpdateScreenPosOpt(); WdeSetOption( WdeOptIsScreenMax, FALSE ); } if( wParam != SIZE_MINIMIZED ) { WdeResizeWindows(); } pass_to_def = FALSE; break; case WM_COMMAND: wp = LOWORD( wParam ); if( !WdeIsMenuIDValid( menu, wp ) ) { break; } switch( wp ) { case IDM_SELECT_MODE: case IDM_DIALOG_TOOL: case IDM_PBUTTON_TOOL: case IDM_CBUTTON_TOOL: case IDM_RBUTTON_TOOL: case IDM_GBUTTON_TOOL: case IDM_FRAME_TOOL: case IDM_TEXT_TOOL: case IDM_ICON_TOOL: case IDM_EDIT_TOOL: case IDM_LISTBOX_TOOL: case IDM_COMBOBOX_TOOL: case IDM_HSCROLL_TOOL: case IDM_VSCROLL_TOOL: case IDM_SIZEBOX_TOOL: case IDM_STATUSBAR_TOOL: case IDM_LISTVIEW_TOOL: case IDM_TREEVIEW_TOOL: case IDM_TABCNTL_TOOL: case IDM_ANIMATE_TOOL: case IDM_UPDOWN_TOOL: case IDM_TRACKBAR_TOOL: case IDM_PROGRESS_TOOL: case IDM_HOTKEY_TOOL: case IDM_HEADER_TOOL: case IDM_CUSTOM1_TOOL: case IDM_CUSTOM2_TOOL: WdeSetBaseObject( wp ); pass_to_def = FALSE; break; case IDM_STICKY_TOOLS: WdeToggleStickyTools(); pass_to_def = FALSE; break; case IDM_FMLEFT: case IDM_FMRIGHT: case IDM_FMTOP: case IDM_FMBOTTOM: case IDM_FMVCENTRE: case IDM_FMHCENTRE: case IDM_ESCAPE: case IDM_DELETEOBJECT: case IDM_SPACE_HORZ: case IDM_SPACE_VERT: ret = WdePassToEdit( message, wParam, lParam ); pass_to_def = FALSE; break; case IDM_SELECT_DIALOG: WdeSelectDialog( res_info ); pass_to_def = FALSE; break; case IDM_OPTIONS: WdeDisplayOptions (); pass_to_def = FALSE; break; case IDM_NEW_RES: WdeCreateNewResource( NULL ); pass_to_def = FALSE; break; case IDM_DDE_CLEAR: WdeClearCurrentResource(); pass_to_def = FALSE; break; case IDM_OPEN_RES: WdeOpenResource( NULL ); pass_to_def = FALSE; break; case IDM_SAVE_RES: WdeSaveResource( res_info, FALSE ); pass_to_def = FALSE; break; case IDM_SAVEAS_RES: WdeSaveResource( res_info, TRUE ); pass_to_def = FALSE; break; case IDM_DDE_UPDATE_PRJ: WdeUpdateDDEEditSession(); break; case IDM_PASTEOBJECT: if( FMPasteValid() ) { ret = WdePassToEdit( message, wParam, lParam ); } pass_to_def = FALSE; break; case IDM_CUTOBJECT: case IDM_COPYOBJECT: ret = WdePassToEdit( message, wParam, lParam ); pass_to_def = FALSE; break; case IDM_SAME_WIDTH: WdeSameSize( R_RIGHT ); pass_to_def = FALSE; break; case IDM_SAME_HEIGHT: WdeSameSize( R_BOTTOM ); pass_to_def = FALSE; break; case IDM_SAME_SIZE: WdeSameSize( R_BOTTOM | R_RIGHT ); pass_to_def = FALSE; break; case IDM_SIZETOTEXT: WdeHandleSizeToText(); pass_to_def = FALSE; break; case IDM_GOTO_INFOBAR: WdeSetFocusToInfo(); pass_to_def = FALSE; break; case IDM_GOTO_OBJECT: WdeHandleGotoCurrentObject(); pass_to_def = FALSE; break; case IDM_DIALOG_RESTORE: WdeRestoreCurrentDialog(); pass_to_def = FALSE; break; case IDM_TAB: case IDM_STAB: WdeHandleTabEvent( wp == IDM_TAB ); pass_to_def = FALSE; break; #if 0 /* this strategy has been rejected in favor of the hide option */ case IDM_REMOVE_DIALOG: WdeRemoveDialog( res_info ); pass_to_def = FALSE; break; #endif case IDM_HIDE_DIALOG: WdeHideCurrentDialog(); pass_to_def = FALSE; break; case IDM_TEST_MODE: WdeHandleTestModeMenu( res_info ); pass_to_def = FALSE; break; case IDM_DIALOG_NEW: if( WdeCreateNewDialog( NULL, res_info->is32bit ) ) { WdeHandleGotoCurrentObject(); } pass_to_def = FALSE; break; case IDM_DIALOG_SAVE: case IDM_DIALOG_SAVEAS: case IDM_DIALOG_SAVEINTO: WdeSaveCurrentDialog( wp ); pass_to_def = FALSE; break; case IDM_SET_ORDER: case IDM_SET_TABS: case IDM_SET_GROUPS: WdeSetDialogMode( wp ); pass_to_def = FALSE; break; case IDM_DEFINEOBJECT: case IDM_GEN_DEFINEOBJECT: if( !WdeDefineCurrentObject( wp ) ) { WdeWriteTrail( "WdeResWndProc: Define failed!" ); } pass_to_def = FALSE; break; case IDM_MDI_CASCADE: case IDM_MDI_TILEV: case IDM_MDI_TILEH: case IDM_MDI_ARRANGE: WdeHandleMDIArrangeEvents( wp ); pass_to_def = FALSE; break; case IDM_EXIT: /* clean up before we exit */ PostMessage( hWinWdeMain, WM_CLOSE, 0, 0 ); break; case IDM_SELCUST1: case IDM_SELCUST2: if( !WdeSetCurrentCustControl( wp - IDM_SELCUST1 ) ) { WdeWriteTrail( "WdeMainWndProc: WdeSetCurrentCustControl failed!" ); WdeSetStatusByID( -1, WDE_SETFAILED ); } pass_to_def = FALSE; break; case IDM_MS_CUSTOM: WdeLoadCustomLib( TRUE, FALSE ); pass_to_def = FALSE; break; #ifndef __NT__ case IDM_BOR_CUSTOM: WdeLoadCustomLib( FALSE, FALSE ); pass_to_def = FALSE; break; #endif case IDM_LOADLIB: WdeLoadCustomLib( FALSE, TRUE ); pass_to_def = FALSE; break; case IDM_WRITE_SYMBOLS: WdeResourceHashTableAction( res_info, WRITE_HASH ); pass_to_def = FALSE; break; case IDM_LOAD_SYMBOLS: WdeResourceHashTableAction( res_info, LOAD_HASH ); pass_to_def = FALSE; break; case IDM_VIEW_SYMBOLS: WdeResourceHashTableAction( res_info, VIEW_HASH ); pass_to_def = FALSE; break; case IDM_SHOW_TOOLS: WdeHandleShowToolsMenu(); pass_to_def = FALSE; break; case IDM_SHOW_RIBBON: WdeShowRibbon(); pass_to_def = FALSE; break; case IDM_HELP: WdeHelpRoutine(); pass_to_def = FALSE; break; case IDM_HELP_SEARCH: WdeHelpSearchRoutine(); pass_to_def = FALSE; break; case IDM_HELP_ON_HELP: WdeHelpOnHelpRoutine(); pass_to_def = FALSE; break; case IDM_ABOUT: ai.owner = hWnd; ai.inst = hInstWde; ai.name = AllocRCString( WDE_ABOUT_NAME ); ai.version = AllocRCString( WDE_ABOUT_VERSION ); ai.first_cr_year = "1984"; ai.title = AllocRCString( WDE_ABOUT_TITLE ); DoAbout( &ai ); FreeRCString( ai.name ); FreeRCString( ai.version ); FreeRCString( ai.title ); pass_to_def = FALSE; break; } break; case WM_DESTROY: WWinHelp( hWinWdeMain, "resdlg.hlp", HELP_QUIT, 0 ); PostQuitMessage( 0 ); break; case WDE_FATAL_EXIT: WdeFatalExit = TRUE; WdeQueryKillApp( TRUE ); PostMessage( hWinWdeMain, WM_CLOSE, 0, 0 ); break; case WM_ENDSESSION: if ( !wParam ) { WdeFatalExit = FALSE; } break; case WM_QUERYENDSESSION: ret = WdeQueryKillApp( FALSE ); if( ret ) { WdeFatalExit = TRUE; pass_to_def = FALSE; } break; case WM_CLOSE: // this prevents the user from closing the editor during // DDE initialization if( !wParam && !EnableMenuInput ) { return( 0 ); } /* clean up before we exit */ WdeCleanupStarted = TRUE; if( wParam ) { // wParam is non-zero if the DDE connection died WdeFatalExit = TRUE; WdeQueryKillApp( TRUE ); wParam = 0; } if( !WdeCleanup( res_info, WdeFatalExit ) ) { WdeCleanupStarted = FALSE; pass_to_def = FALSE; } } if( pass_to_def ) { ret = DefFrameProc( hWnd, hWinWdeMDIClient, message, wParam, lParam ); } return( ret ); }
static bool WdeMouseRtnResize( HWND win, RECT *r ) { POINT pt; LIST *l; OBJPTR curr_obj; OBJ_ID oid; OBJPTR obj; OBJPTR ro; RECT rect; RECT nc; WdeResizeRatio resizer; bool adjust; WdeResInfo *info; DialogSizeInfo dsize; SUBOBJ_REQUEST req; rect = *r; adjust = FALSE; /* try to find the object id of resized object */ curr_obj = GetCurrObject(); if( curr_obj == NULL || !Forward( curr_obj, IDENTIFY, &oid, NULL ) ) { oid = 0; } if( oid == DIALOG_OBJ ) { if( !Forward( curr_obj, GET_NC_SIZE, &nc, NULL ) ) { return( FALSE ); } rect.left += nc.left; rect.top += nc.top; rect.right -= nc.right; rect.bottom -= nc.bottom; if( rect.right < rect.left ) { rect.right = rect.left; } if( rect.bottom < rect.top ) { rect.bottom = rect.top; } if( !Forward( curr_obj, GET_RESIZER, &resizer, &ro ) ) { return( FALSE ); } } else { l = NULL; req.p.ty = AT_POINT; req.p.pt.x = rect.left; req.p.pt.y = rect.top; Forward( GetMainObject(), FIND_SUBOBJECTS, &req, &l ); obj = WdeIsDialogInList( l ); if( l != NULL ) { ListFree( l ); } if( obj != NULL ) { adjust = TRUE; } else { obj = GetMainObject(); } if( !Forward( obj, GET_RESIZER, &resizer, &ro ) ) { return( FALSE ); } } if( adjust ) { if( !Forward( ro, GET_WINDOW_HANDLE, &win, NULL ) ) { return( FALSE ); } GetOffset( &pt ); OffsetRect( &rect, -pt.x, -pt.y ); if( (info = WdeGetCurrentRes()) != NULL ) { MapWindowPoints( info->edit_win, win, (POINT *)&rect, 2 ); } } if( WdeScreenToDialog( NULL, &resizer, &rect, &dsize ) ) { WdeWriteObjectDimensions( (int_16)dsize.x, (int_16)dsize.y, (int_16)dsize.width, (int_16)dsize.height ); } return( TRUE ); }
static bool WdeMouseRtnCreate( HWND win, RECT *r ) { RECT *ncp; RECT rect; LIST *l; SUBOBJ_REQUEST req; OBJPTR obj; OBJPTR ro; bool adjust; POINT pt; WdeResizeRatio resizer; WdeResInfo *info; DialogSizeInfo dsize; rect = *r; /* if we are creating a dialog discard the NC area */ if( GetBaseObjType() == DIALOG_OBJ ) { ncp = WdeGetDefaultDialogNCSize(); rect.left += ncp->left; rect.top += ncp->top; rect.right -= ncp->right; rect.bottom -= ncp->bottom; if( rect.right < rect.left ) { rect.right = rect.left; } if( rect.bottom < rect.top ) { rect.bottom = rect.top; } adjust = FALSE; obj = GetMainObject(); } else { l = NULL; req.p.ty = AT_POINT; req.p.pt.x = rect.left; req.p.pt.y = rect.top; Forward( GetMainObject(), FIND_SUBOBJECTS, &req, &l ); obj = WdeIsDialogInList( l ); if( l ) { ListFree( l ); } if( obj ) { adjust = TRUE; } else { adjust = FALSE; obj = GetMainObject(); } } if( !Forward( obj, GET_RESIZER, &resizer, &ro ) ) { return( FALSE ); } if( adjust ) { if( !Forward( ro, GET_WINDOW_HANDLE, &win, NULL) ) { return( FALSE ); } GetOffset( &pt ); OffsetRect( &rect, -pt.x, -pt.y ); if( (info = WdeGetCurrentRes()) != NULL ) { MapWindowPoints( info->edit_win, win, (POINT *)&rect, 2 ); } } if( WdeScreenToDialog( NULL, &resizer, &rect, &dsize ) ) { WdeWriteObjectDimensions( (int_16)dsize.x, (int_16)dsize.y, (int_16)dsize.width, (int_16)dsize.height ); } return( TRUE ); }