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

📄 wremain.c

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    if( WREMainWin == NULL ) {
        WREDisplayErrorMsg( WRE_NOCREATEAPPWINDOW );
        return( FALSE );
    }

    WREMDIWin = WRECreateMDIClientWindow ( WREMainWin, app_inst );

    /* attempt to create the main application ribbon */
    if( !WRECreateRibbon( WREMainWin ) ) {
        WREDisplayErrorMsg( WRE_NOCREATETOOLRIBBON );
        return( FALSE );
    }

    if( !WRECreateStatusLine( WREMainWin, app_inst ) ) {
        WREDisplayErrorMsg( WRE_NOCREATESTATUSLINE );
        return( FALSE );
    }

    WREMenu = GetMenu ( WREMainWin );
    if( WREMenu != (HMENU)NULL ) {
        EnableMenuItem( WREMenu, IDM_CUT, MF_GRAYED );
        EnableMenuItem( WREMenu, IDM_COPY, MF_GRAYED );
        EnableMenuItem( WREMenu, IDM_OPTIONS, MF_GRAYED );
    }

    WREEnableMenus( FALSE );

    if( !WREInitHints() ) {
        WREDisplayErrorMsg( WRE_NOINITHINTS );
        return( FALSE );
    }

    /* if the window was created Show and Update it */
    if( !WRENoInterface ) {
        if ( WREGetOption ( WREOptScreenMax ) ) {
            ShowWindow ( WREMainWin, SW_SHOWMAXIMIZED );
        } else {
            ShowWindow ( WREMainWin, SW_SHOWNORMAL );
        }
        UpdateWindow ( WREMainWin );

        WREDisplayAboutBox ( WREInst, WREMainWin, 1250 );
    }

    return ( TRUE );
}

Bool WREIsEditWindowDialogMessage ( MSG *msg )
{
    int ret;

    ret = WAccelIsDlgMsg( msg );
    ret |= WMenuIsDlgMsg( msg );
    ret |= WStringIsDlgMsg( msg );

    return( (Bool) ret );
}

Bool WREWasAcceleratorHandled ( MSG *msg )
{

    if ( !TranslateMDISysAccel ( WREMDIWin, msg ) &&
         !TranslateAccelerator ( WREMainWin, WREAccel, msg ) ) {
        return ( FALSE );
    }
    return ( TRUE );
}

HWND WRECreateMDIClientWindow ( HWND win, HINSTANCE app_inst )
{
    CLIENTCREATESTRUCT ccs;
    RECT               rect;
    HWND               client;
    int                ribbon_depth;
    int                stat_depth;

    ribbon_depth = WREGetRibbonHeight();

    stat_depth = WREGetStatusDepth ();

    GetClientRect ( win, &rect);

    ccs.hWindowMenu  = GetSubMenu ( GetMenu ( win ), 3 );
    ccs.idFirstChild = WRE_MDI_FIRST;

    /* attempt to create the main application edit window */
    client = CreateWindow( "MDIClient", "",
                           WS_CLIPCHILDREN | WS_CHILD | WS_VISIBLE |
                               WS_HSCROLL | WS_VSCROLL,
                           0, ribbon_depth,
                           ( rect.right  - rect.left ),
                           ( rect.bottom -
                                ( rect.top + stat_depth + ribbon_depth ) ),
                           win, (HMENU) NULL, app_inst, &ccs );

    /* if the window could not be created return FALSE */
    if( client == NULL) {
        WREDisplayErrorMsg( WRE_MOCREATEMDICLIENT );
        return( FALSE );
    }

    return( client );
}

void WREEnableMenus( Bool enable )
{
    HMENU       submenu;
    int         flag;

    if( WREMenu != (HMENU)NULL ) {
        flag = MF_GRAYED;
        if( enable ) {
            flag = MF_ENABLED;
        }
        EnableMenuItem( WREMenu, IDM_SAVE, flag );
        EnableMenuItem( WREMenu, IDM_SAVEAS, flag );
        EnableMenuItem( WREMenu, IDM_RES_EDIT, flag );
        EnableMenuItem( WREMenu, IDM_RES_SAVEAS, flag );
        EnableMenuItem( WREMenu, IDM_RES_SAVE_INTO, flag );
        EnableMenuItem( WREMenu, IDM_RES_RENAME, flag );
        EnableMenuItem( WREMenu, IDM_RES_MEM_FLAGS, flag );
        submenu = GetSubMenu( WREMenu, 2 );
        if( submenu != (HMENU)NULL ) {
            EnableMenuItem( submenu, 2, MF_BYPOSITION | flag );
        }
    }
}

HMENU WREGetMenuHandle ( void )
{
    return ( WREMenu );
}

HWND WREGetMDIWindowHandle ( void )
{
    return ( WREMDIWin );
}

HWND WREGetMainWindowHandle ( void )
{
    return ( WREMainWin );
}

HINSTANCE WREGetAppInstance ( void )
{
    return ( WREInst );
}

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

    if( WRECleanupStarted && ( message != WM_CLOSE ) ) {
        if ( message == WM_DESTROY ) {
            PostQuitMessage(0);
        }
        return ( DefFrameProc( hWnd, WREMDIWin, message, wParam, lParam ) );
    }

    pass_to_def = TRUE;
    ret         = FALSE;
    res_info    = WREGetCurrentRes ();
    menu        = WREGetMenuHandle ();

    switch (message) {

        case WM_DESTROYCLIPBOARD:
            WRForgetBitmapName();
            break;

        case WM_INITMENU:
            if( wParam == (WPARAM) GetMenu(hWnd) ) {
                WRESetCopyMenuItem( hWnd );
                WRESetPasteMenuItem( hWnd );
            }
            break;

        case WM_MENUSELECT:
            WREHandleMenuSelect ( wParam, lParam );
            break;

        case WM_MOVE:
            if ( IsZoomed ( hWnd ) ) {
                WRESetOption ( WREOptScreenMax, TRUE );
            } else if ( !IsIconic ( hWnd ) ) {
                WREUpdateScreenPosOpt ();
                WRESetOption ( WREOptScreenMax, FALSE );
            }
            break;

        case WM_SIZE:
            if( wParam == SIZE_MAXIMIZED ) {
                WRESetOption( WREOptScreenMax, TRUE );
            } else if( wParam == SIZE_MINIMIZED ) {
                WREHideSessions( FALSE );
                WREIsMinimized = TRUE;
            } else {
                WREUpdateScreenPosOpt ();
                WRESetOption( WREOptScreenMax, FALSE );
            }
            if( wParam != SIZE_MINIMIZED && WREIsMinimized ) {
                WREHideSessions( TRUE );
                BringWindowToTop( hWnd );
                WREIsMinimized = FALSE;
            }
            WREResizeWindows();
            pass_to_def = FALSE;
            break;

        case ACCEL_I_HAVE_CLOSED:
            WREEndEditAccelResource( (WAccelHandle) lParam );
            if( WRENoInterface ) {
                WRERemoveResource( res_info );
            }
            pass_to_def = FALSE;
            break;

        case ACCEL_PLEASE_SAVEME:
            WRESaveEditAccelResource( (WAccelHandle) lParam );
            pass_to_def = FALSE;
            break;

        case MENU_I_HAVE_CLOSED:
            WREEndEditMenuResource( (WMenuHandle) lParam );
            if( WRENoInterface ) {
                WRERemoveResource( res_info );
            }
            pass_to_def = FALSE;
            break;

        case MENU_PLEASE_SAVEME:
            WRESaveEditMenuResource( (WMenuHandle) lParam );
            pass_to_def = FALSE;
            break;

        case STRING_I_HAVE_CLOSED:
            WREEndEditStringResource( (WStringHandle) lParam );
            if( WRENoInterface ) {
                WRERemoveResource( res_info );
            }
            pass_to_def = FALSE;
            break;

        case STRING_PLEASE_SAVEME:
            WRESaveEditStringResource( (WStringHandle) lParam );
            pass_to_def = FALSE;
            break;

        case ACCEL_PLEASE_OPENME:
        case MENU_PLEASE_OPENME:
        case STRING_PLEASE_OPENME:
            ret = pleaseOpenFile( message );
            pass_to_def = FALSE;
            break;

        case WM_COMMAND:
            wp = LOWORD(wParam);
            switch ( wp ) {

                case IDM_OPTIONS:
                    pass_to_def = FALSE;
                    break;

                case IDM_LOAD_SYMBOLS:
                    WRELoadResourceSymbols( res_info );
                    pass_to_def = FALSE;
                    break;

                case IDM_EDIT_SYMBOLS:
                    WREEditResourceSymbols( res_info );
                    pass_to_def = FALSE;
                    break;

                case IDM_SAVE_SYMBOLS:
                    WREResourceSaveSymbols( res_info );
                    pass_to_def = FALSE;
                    break;

                case IDM_NEW:
                    WRECreateNewResource( NULL );
                    pass_to_def = FALSE;
                    break;

                case IDM_OPEN:
                    WREOpenResource ( NULL );
                    pass_to_def = FALSE;
                    break;

                case IDM_SAVE:
                    WRESaveResource ( res_info, FALSE );
                    pass_to_def = FALSE;
                    break;

                case IDM_SAVEAS:
                    WRESaveResource ( res_info, TRUE );
                    pass_to_def = FALSE;
                    break;

                case IDM_DELETE:
                    WREDeleteCurrResource( FALSE );
                    pass_to_def = FALSE;
                    break;

                case IDM_PASTE:
                    WREPasteResource( hWnd );
                    pass_to_def = FALSE;
                    break;

                case IDM_CUT:
                    WREClipCurrentResource( hWnd, TRUE );
                    pass_to_def = FALSE;
                    break;

                case IDM_COPY:
                    WREClipCurrentResource( hWnd, FALSE );
                    pass_to_def = FALSE;
                    break;

                case IDM_NEW_CURSOR:
                    WRENewImageResource( CursorService, (uint_16)RT_GROUP_CURSOR );
                    break;

                case IDM_NEW_BITMAP:
                    WRENewImageResource( BitmapService, (uint_16)RT_BITMAP );
                    break;

                case IDM_NEW_ICON:
                    WRENewImageResource( IconService, (uint_16)RT_GROUP_ICON );
                    break;

                case IDM_NEW_DIALOG:
                    WRENewDialogResource();
                    break;

                case IDM_NEW_FONT:
                case IDM_NEW_RCDATA:
                    pass_to_def = FALSE;
                    break;

                case IDM_NEW_ACCELERATOR:
                    WRENewAccelResource();
                    pass_to_def = FALSE;
                    break;

                case IDM_NEW_MENU:
                    WRENewMenuResource();
                    pass_to_def = FALSE;
                    break;

                case IDM_NEW_STRING:
                    WRENewStringResource();
                    pass_to_def = FALSE;
                    break;

                case IDM_RES_SAVEAS:
                case IDM_RES_SAVE_INTO:
                    if( res_info != NULL ) {
                        if( res_info->current_type == (uint_16)RT_STRING ) {
                            SaveMultObjects( wp == IDM_RES_SAVE_INTO );
                        } else {
                            SaveObject ( wp == IDM_RES_SAVE_INTO );
                        }
                    }
                    pass_to_def = FALSE;
                    break;

                case IDM_RES_EDIT:
                    WREHandleResEdit();
                    pass_to_def = FALSE;
                    break;

                case IDM_RES_MEM_FLAGS:
                    WREChangeMemFlags ();
                    pass_to_def = FALSE;
                    break;

                case IDM_RES_RENAME:
                    WRERenameResource ( );
                    pass_to_def = FALSE;
                    break;

                case IDM_MDI_CASCADE:
                case IDM_MDI_TILEV:
                case IDM_MDI_TILEH:
                case IDM_MDI_ARRANGE:
                    WREHandleMDIArrangeEvents ( wp );
                    pass_to_def = FALSE;
                    break;

⌨️ 快捷键说明

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