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

📄 wdemain.c

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    if ( set_to_res_menu ) {
        if( IsDDE ) {
            new_menu = WdeDDEMenu;
        } else {
            new_menu = WdeResMenu;
        }
    } else {
        new_menu = WdeInitialMenu;
    }

    if ( !new_menu || ( WdeCurrentMenu == new_menu ) ) {
        return;
    }

    if ( set_to_res_menu ) {
        menu = GetSubMenu ( new_menu, WINDOW_MENU );
    } else {
        menu = GetSubMenu ( new_menu, 0 );
    }

#ifdef __NT__
    SendMessage ( hWinWdeMDIClient, WM_MDISETMENU,
                  (WPARAM)new_menu, (LPARAM)menu );
#else
    SendMessage ( hWinWdeMDIClient, WM_MDISETMENU,
                  FALSE, MAKELPARAM(new_menu,menu) );
#endif

    WdeCurrentMenu = new_menu;

    DrawMenuBar ( hWinWdeMain );
}

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 );
}

Bool WdeIsFirstInst( void )
{
    return( WdeFirstInst );
}

void WdeEnableMenuInput( Bool enable )
{
    EnableMenuInput = enable;
}

Bool WdeIsDDE( void )
{
    return( IsDDE );
}

HMENU WdeGetInitialMenuHandle ( void )
{
    return ( WdeInitialMenu );
}

HMENU WdeGetResMenuHandle ( void )
{
    if( IsDDE ) {
        return ( WdeDDEMenu );
    } else {
        return ( WdeResMenu );
    }
}

HMENU WdeGetMenuHandle ( void )
{
    if ( hWinWdeMain ) {
        return ( WdeCurrentMenu );
    } else {
        return ( NULL );
    }
}

HWND WdeGetMDIWindowHandle ( void )
{
    return (hWinWdeMDIClient);
}

HWND WdeGetMainWindowHandle ( void )
{
    return (hWinWdeMain);
}

HINSTANCE WdeGetAppInstance ( void )
{
    return (hInstWde);
}

Bool WdeInCleanup( void )
{
    return( WdeCleanupStarted );
}

static void handleInitMenu( HMENU menu )
{
    WdeEnableCommonControlsMenu( menu );
    WdeEnableSelectCustCntl( menu );
    WdeEnableCustCntlTools( menu );
    if( WdeGetNumRes() ) {
        WdeEnablePasteItem( menu );
    }
}

LRESULT WINEXPORT WdeMainWndProc( HWND hWnd, UINT message,
                                  WPARAM wParam, LPARAM lParam )
{
    HMENU       menu;
    LRESULT     ret;
    Bool        pass_to_def;
    WdeResInfo *res_info;
    WORD        wp;

    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_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:
                    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;

                // this strategy has been rejected in favour of the
                // hide option
                //case IDM_REMOVE_DIALOG:
                    //WdeRemoveDialog ( res_info );
                    //pass_to_def = FALSE;
                    //break;

                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_ABOUT:
                    {
                        char *text;
                        WdeSetControlFlagText( CLASS_STATIC, WS_VISIBLE | WS_CAPTION | WS_HSCROLL | SS_LEFT | SS_NOPREFIX, &text );
                        if( text ) {
                            WdeMemFree( text );
                        }
                    }
                    WdeDisplayAboutBox ( hInstWde, hWinWdeMain, 0 );
                    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 );

⌨️ 快捷键说明

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