⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdectool.c

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
}

void WdeSetBaseObject ( WORD menu_selection )
{
    HMENU               menu;
    OBJ_ID              obj_id;
    WORD                id;
    WdeToolBar          *tbar;

    if( !WdeGetNumRes() ) {
        return;
    }

    tbar   = WdeControls;
    menu   = WdeGetResMenuHandle();
    id     = WdeGetCToolID();
    obj_id = -1;

    if( ( id != (WORD)-1 ) && ( id != menu_selection ) ) {
        CheckMenuItem( menu, id, MF_BYCOMMAND | MF_UNCHECKED );
        WdeSetToolBarItemState( tbar, id, BUTTON_UP );
    }

    if( menu_selection != (WORD)-1 ) {
        obj_id = WdeGetOBJIDFromMenu( menu_selection );
        if( obj_id != -1 ) {
            SetBaseObjType( obj_id );
            CheckMenuItem( menu, menu_selection, MF_BYCOMMAND | MF_CHECKED );
            WdeSetToolBarItemState( tbar, menu_selection, BUTTON_DOWN );
            WdeSetStatusText( NULL, "", TRUE );
        }
    }
}

WORD WdeGetMenuFromOBJID ( OBJ_ID id )
{
    int i;

    for ( i = 0; WdeControlBits[i].up != NULL; i++ ) {
        if ( WdeControlBits[i].obj_id == id ) {
            return ( WdeControlBits[i].id );
        }
    }

    return ( -1 );
}

OBJ_ID WdeGetOBJIDFromMenu ( WORD id )
{
    int i;

    for ( i = 0; WdeControlBits[i].up != NULL; i++ ) {
        if ( WdeControlBits[i].id == id ) {
            return ( WdeControlBits[i].obj_id );
        }
    }

    return ( -1 );
}

Bool WdeCreateControlsToolBar ( void )
{
    RECT        t, r, screen;
    HWND        parent;
    WORD        id;
    char        *text;

    if ( WdeControls ) {
        return ( TRUE );
    }

    WdeSetStatusText( NULL, "", FALSE );
    WdeSetStatusByID( WDE_CREATINGTOOLBOX, -1 );

    parent = WdeGetMainWindowHandle();

    WdeGetCntlTBarPosOption( &t );

    if( ( t.left == t.right ) &&
        ( t.top == t.bottom ) ) {
        GetWindowRect ( parent, &r );
        t.left = r.right - CONTROLS_DEFX;
        t.top  = r.top + CONTROLS_INSET;
        t.right  = r.right;
        t.bottom = t.top  + CONTROLS_DEFY;
    }

    GetWindowRect( GetDesktopWindow(), &screen );
    if( !IntersectRect ( &r, &screen, &t ) ) {
        r.right  = t.right  - t.left;
        r.bottom = t.bottom - t.top;
        r.left   = min ( 0, (screen.right  - r.right ) )/2;
        r.top    = min ( 0, (screen.bottom - screen.top  - r.bottom) )/2;
        r.right  += r.left;
        r.bottom += r.top;
        t = r;
    }

    WdeControlsInfo->dinfo.area = t;

    WdeControls = WdeCreateToolBar( WdeControlsInfo, parent );

    if( !WdeControls ) {
        return( FALSE );
    }

    text = WdeAllocRCString( WDE_TOOLBOXCAPTION );
    SendMessage( WdeControls->win, WM_SETTEXT, 0, (LPARAM)(LPCSTR)text );
    if( text ) {
        WdeFreeRCString( text );
    }

    text = WdeAllocRCString( WDE_HIDETOOLBOX );
    ModifyMenu ( WdeGetInitialMenuHandle(), IDM_SHOW_TOOLS,
                 MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text );
    ModifyMenu ( WdeGetResMenuHandle(), IDM_SHOW_TOOLS,
                 MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text );
    if( text ) {
        WdeFreeRCString( text );
    }

    if( WdeGetNumRes() ) {
        id = WdeGetMenuFromOBJID( GetBaseObjType() );
        if( id != (WORD)-1 ) {
            WdeSetToolBarItemState( WdeControls, id, BUTTON_DOWN );
        }
        WdeSetStickyMode( WdeStickyMode );
    }

    WdeSetStatusReadyText( );

    return( TRUE );
}

void WdeHandleShowToolsMenu ( void )
{
    if ( WdeControls ) {
        WdeDestroyControls ();
        WdeSetOption ( WdeOptIsCntlsTBarVisible, FALSE );
    } else {
        WdeCreateControlsToolBar ();
        WdeSetOption ( WdeOptIsCntlsTBarVisible, TRUE );
    }
}

void WdeCToolHelpHook ( HWND hwnd, WPARAM wParam, BOOL pressed )
{
    _wde_touch(hwnd);
    WdeHandleToolHint ( wParam, pressed );
}

BOOL WdeControlsHook ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    MINMAXINFO          *minmax;
    WdeToolBar          *tbar;
    OBJ_ID              obj_id;
    WORD                id;
    char                *text;
    OBJPTR              obj;
    WdeOrderMode        mode;
    UINT                cid;
    Bool                ignore_msg;
    Bool                ret;

    ignore_msg = FALSE;

    if( WdeGetNumRes() && !WdeInCleanup() ) {
        obj = WdeGetCurrentDialog();
        if( obj && Forward( obj, GET_ORDER_MODE, &mode, NULL ) &&
            ( mode != WdeSelect ) ) {
            ignore_msg = TRUE;
        }
    }

    if( !ignore_msg && WdeGetTestMode() ) {
        ignore_msg = TRUE;
    }

    if( ignore_msg ) {
        switch( msg ) {
            case WM_RBUTTONDOWN:
            case WM_RBUTTONDBLCLK:
            case WM_LBUTTONDOWN:
            case WM_LBUTTONDBLCLK:
            case WM_RBUTTONUP:
            case WM_LBUTTONUP:
                return( TRUE );
        }
    }

    if( !(tbar = WdeControls) ) {
        if( msg == WM_GETMINMAXINFO ) {
            minmax = (MINMAXINFO *) lParam;
            minmax->ptMinTrackSize.x = 8;
        }
        return( FALSE );
    }

    ret = FALSE;

    switch( msg ) {

        case WM_USER:
            if ( WdeGetNumRes() ) {
                obj_id = GetBaseObjType();
                id = WdeGetMenuFromOBJID ( obj_id );
                if ( ( id == wParam ) ||
                     ( (wParam == IDM_STICKY_TOOLS) && WdeStickyMode ) ) {
                    lParam = !lParam;
                }
                WdeHandleStickyToolPress ( tbar, wParam, lParam );
            }
            break;

        case WM_RBUTTONDOWN:
        case WM_RBUTTONDBLCLK:
        case WM_LBUTTONDOWN:
        case WM_LBUTTONDBLCLK:
            if( FindToolIDAtPoint( tbar->tbar, lParam, &cid ) ) {
                if( cid == IDM_CUSTOM1_TOOL ) {
                    ret = !WdeIsCurrentCustControlSet( 0 );
                } else if( cid == IDM_CUSTOM2_TOOL ) {
                    ret = !WdeIsCurrentCustControlSet( 1 );
                }
            }
            break;

        case WM_SIZE:
            if ( ( wParam != SIZE_MAXIMIZED ) &&
                 ( wParam != SIZE_MINIMIZED ) ) {
                GetWindowRect ( hwnd, &tbar->last_pos );
            }
            break;

        case WM_MOVE:
            if ( !IsZoomed ( hwnd ) ) {
                GetWindowRect ( hwnd, &tbar->last_pos );
            }
            break;

        case WM_GETMINMAXINFO:
            minmax = (MINMAXINFO *) lParam;
            minmax->ptMinTrackSize.x =
                2 * GetSystemMetrics(SM_CXFRAME) +
                tbar->info->dinfo.border_size.x +
                tbar->info->dinfo.button_size.x - 1;
            minmax->ptMinTrackSize.y =
                2 * GetSystemMetrics(SM_CYFRAME) +
                GetSystemMetrics(SM_CYCAPTION) +
                tbar->info->dinfo.border_size.y +
                tbar->info->dinfo.button_size.y - 1;
            ret = TRUE;
            break;

        case WM_CLOSE:
            WdeDestroyControls ();
            WdeSetOption ( WdeOptIsCntlsTBarVisible, FALSE );
            ret = TRUE;
            break;

        case WM_DESTROY:
            WdeControls = NULL;
            WdeSetCntlTBarPosOption( &tbar->last_pos );
            text = WdeAllocRCString( WDE_SHOWTOOLBOX );
            ModifyMenu( WdeGetResMenuHandle(), IDM_SHOW_TOOLS,
                        MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text );
            ModifyMenu( WdeGetInitialMenuHandle(), IDM_SHOW_TOOLS,
                        MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text );
            if( text ) {
                WdeFreeRCString( text );
            }
            WdeCloseToolBar( tbar );
            break;

    }

    return ( ret );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -