Esempio n. 1
0
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 );
}
Esempio n. 2
0
Bool WdeIsCurrentMDIWindowZoomed( void )
{
    WdeResInfo *info;

    info = WdeGetCurrentRes();

    if( info != NULL && info->res_win != NULL ) {
        return( IsZoomed( info->res_win ) );
    } else {
        return( FALSE );
    }
}
Esempio n. 3
0
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 );
}
Esempio n. 4
0
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 );
}
Esempio n. 5
0
HWND WdeGetEditWindowHandle( WdeResInfo *info )
{
    if( info != NULL ) {
        return( info->edit_win );
    } else {
        info = WdeGetCurrentRes();
        if( info ) {
            return( info->edit_win );
        } else {
            return( NULL );
        }
    }
}
Esempio n. 6
0
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 );
        }
    }
}
Esempio n. 7
0
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 );
}
Esempio n. 8
0
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 );
}
Esempio n. 9
0
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 );
}
Esempio n. 10
0
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 );
}
Esempio n. 11
0
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 );
}
Esempio n. 12
0
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 );
}
Esempio n. 13
0
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 );
}
Esempio n. 14
0
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 );
}
Esempio n. 15
0
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 );
}