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

📄 wremain.c

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

                case IDM_EXIT:
                    /* clean up before we exit */
                    PostMessage( WREMainWin, WM_CLOSE, 0, 0 );
                    break;

                case IDM_SHOW_RIBBON:
                    WREShowRibbon ( menu );
                    pass_to_def = FALSE;
                    break;

                case IDM_HELP:
                    WREHelpRoutine();
                    pass_to_def = FALSE;
                    break;

                case IDM_ABOUT:
                    WREDisplayAboutBox ( WREInst, WREMainWin, 0 );
                    pass_to_def = FALSE;
                    break;
            }
            break;

        case WM_DESTROY:
            WWinHelp( WREMainWin, "resedt.hlp", HELP_QUIT, 0 );
            PostQuitMessage(0);
            break;

        case WRE_FATAL_EXIT:
            WREFatalExit = TRUE;
            WREQueryKillApp ( TRUE );
            PostMessage( WREMainWin, WM_CLOSE, 0, 0 );
            break;

        case WM_ENDSESSION:
            if ( !wParam ) {
                WREFatalExit = FALSE;
            }
            break;

        case WM_QUERYENDSESSION:
            if ( ret = WREQueryKillApp ( FALSE ) ) {
                WREFatalExit = TRUE;
            }
            pass_to_def = FALSE;
            break;

        case WM_CLOSE:
            /* clean up before we exit */
            if( WRECleanupStarted ) {
                pass_to_def = FALSE;
                break;
            }
            WRECleanupStarted  = TRUE;
            if( !WRECleanup( WREFatalExit ) ) {
                WRECleanupStarted  = FALSE;
                pass_to_def = FALSE;
            }
    }

    if ( pass_to_def ) {
        ret = DefFrameProc( hWnd, WREMDIWin, message, wParam, lParam );
    }
    return ( ret );
}

void WREHideSessions( Bool show )
{
    WREShowAllDialogSessions( show );
    WREShowAllImageSessions( show );
}

Bool WREHandleResEdit( void )
{
    WRECurrentResInfo  curr;
    Bool               ok;

    if( WREGetPendingService() != NoServicePending ) {
        WRESetStatusByID( 0, WRE_EDITSESSIONPENDING );
        return( TRUE );
    }

    ok = WREGetCurrentResource ( &curr );

    // correct ok if this the 'All Strings' entry
    if( !ok ) {
        ok = ( curr.info && curr.type &&
                 ( curr.info->current_type == (uint_16)RT_STRING ) );
    }

    if( ok ) {
        ok = FALSE;
        if( curr.info->current_type == (uint_16)RT_ACCELERATOR ) {
            ok = WREEditAccelResource( &curr );
        } else if( curr.info->current_type == (uint_16)RT_MENU ) {
            ok = WREEditMenuResource( &curr );
        } else if( curr.info->current_type == (uint_16)RT_STRING ) {
            ok = WREEditStringResource( &curr );
        } else if( curr.info->current_type == (uint_16)RT_DIALOG ) {
            ok =  WREEditDialogResource( &curr );
        } else if( curr.info->current_type == (uint_16)RT_GROUP_CURSOR ) {
            ok =  WREEditImageResource( &curr );
        } else if( curr.info->current_type == (uint_16)RT_GROUP_ICON ) {
            ok =  WREEditImageResource( &curr );
        } else if( curr.info->current_type == (uint_16)RT_BITMAP ) {
            ok =  WREEditImageResource( &curr );
        }
    }

    return ( ok );
}

LRESULT WREHandleMDIArrangeEvents ( WORD w )
{
    UINT   msg;
    WPARAM wp;

    wp = 0;
    switch ( w ) {
        case IDM_MDI_CASCADE:
            msg = WM_MDICASCADE;
            break;

        case IDM_MDI_TILEV:
            msg = WM_MDITILE;
            wp = MDITILE_VERTICAL;
            break;

        case IDM_MDI_TILEH:
            msg = WM_MDITILE;
            wp = MDITILE_HORIZONTAL;
            break;

        case IDM_MDI_ARRANGE:
            msg = WM_MDIICONARRANGE;
            break;

        default:
            return ( FALSE );
    }

    return ( SendMessage ( WREMDIWin, msg, wp, 0 ) );
}

void WREUpdateScreenPosOpt ( void )
{
    RECT        rect;

    GetWindowRect ( WREMainWin, &rect );

    WRESetScreenPosOption ( &rect );
}

void WREResizeWindows( void )
{
    RECT        rect;
    int         ribbon_depth;
    int         stat_depth;

    if( !WRECleanupStarted ) {
        ribbon_depth = WREGetRibbonHeight();
        stat_depth = WREGetStatusDepth();
        GetClientRect( WREMainWin, &rect );
        WREResizeStatusWindows( &rect );
        WREResizeRibbon( &rect );
        MoveWindow( WREMDIWin, 0, ribbon_depth,
                    ( rect.right  - rect.left ),
                    ( rect.bottom -
                        ( rect.top + stat_depth + ribbon_depth ) ), TRUE );
    }
}

Bool WRECleanup( Bool fatal_exit )
{
    /* clean up before we exit */

    if( !WREEndAllStringSessions( fatal_exit ) ||
        !WREEndAllMenuSessions  ( fatal_exit ) ||
        !WREEndAllAccelSessions ( fatal_exit ) ||
        !WREEndAllImageSessions ( fatal_exit ) ||
        !WREEndAllDialogSessions( fatal_exit ) ) {
        return ( FALSE );
    }

    if( fatal_exit || WREQueryKillApp( FALSE ) ) {
        WREFreeResList();
    } else {
        return( FALSE );
    }

    WRESetOption( WREOptScreenMax, IsZoomed( WREMainWin ) );

    WREFiniHints           ();
    WREOptsShutdown        ();
    WREDestroyRibbon       ();
    WREDestroyStatusLine   ();
    WREShutdownRibbon      ();
    WREFiniTypeNames       ();
    WREFiniTotalText       ();
    WREFiniResources       ();
    WREShutdownToolBars    ();
    WREFiniClipboard       ();
    WRECtl3DFini           ( WREInst );
    WREFreeFileFilter      ();
    JDialogFini();

    return( TRUE );
}

Bool WREProcessArgs( char **argv, int argc )
{
    int  i;
    Bool ok;

    ok = TRUE;

    for( i = 1; i<argc; i++ ) {
        if( !stricmp( argv[i], CREATE_NEW_FLAG ) ) {
            WRECreateNewFiles = TRUE;
        } else if( !stricmp( argv[i], NO_IFACE_FLAG ) ) {
            WRENoInterface = TRUE;
        } else {
            if( WRFileExists( argv[i] ) ) {
                ok = WREOpenResource( argv[i] ) && ok;
            } else if( WRECreateNewFiles ) {
                ok = ( WRECreateNewResource( argv[i] ) != NULL ) && ok;
            } else {
                ok = FALSE;
            }
        }
    }

    if( !ok ) {
        WREDisplayErrorMsg( WRE_INPUTFILESNOTLOADED );
    }

    return( ok );
}

#include "wrwresid.h"
extern  WResID *        WR_EXPORT WRMem2WResID  ( void *data, int is32bit );
extern  int             WR_EXPORT WRWResID2Mem  ( WResID *name, void **data,
                                                  uint_32 *size, int is32bit );
void WREDisplayAboutBox ( HINSTANCE inst, HWND parent, UINT msecs )
{
    FARPROC     lpProcAbout;

    lpProcAbout = MakeProcInstance ( (FARPROC) WREAbout, WREInst );
    JDialogBoxParam( inst, "WREAboutBox", parent, (DLGPROC) lpProcAbout,
                     (LPARAM) &msecs  );
    FreeProcInstance ( lpProcAbout );
}

Bool WINEXPORT WREAbout( HWND hDlg, WORD message,
                         WPARAM wParam, LPARAM lParam )
{
    UINT        msecs, timer, start;
    HDC         dc, tdc;
    HBITMAP     old;
    HWND        w666;
    RECT        rect, arect;
    PAINTSTRUCT ps;
    WORD        w;
    char        *title;

    static BITMAP    bm;
    static HBITMAP   logo;
    static HBRUSH    brush;
    static COLORREF  color;

    switch ( message ) {

        case WM_SYSCOLORCHANGE:
            WRECtl3dColorChange ();
            break;

        case WM_DESTROY:
            if ( logo ) {
                DeleteObject ( logo );
            }
            if ( brush ) {
                DeleteObject ( brush );
            }
            break;

        case WM_INITDIALOG:
            msecs = *((UINT *)lParam);
            if( msecs ) {
                timer = SetTimer ( hDlg, ABOUT_TIMER, msecs, NULL );
                if( timer ) {
                    SetWindowLong( hDlg, DWL_USER, (LONG) timer );
                    ShowWindow( GetDlgItem( hDlg, IDOK ), SW_HIDE );
                    title = WREAllocRCString( WRE_APPNAME );
                    SendMessage( hDlg, WM_SETTEXT, 0, (LPARAM) title );
                    if( title ) {
                        WREFreeRCString( title );
                    }
                }
            }

            logo = LoadBitmap( WREInst, "AboutLogo" );

            /*
            color = RGB(128,128,128);
            */
            color = GetSysColor ( COLOR_BTNFACE );
            brush = CreateSolidBrush ( color );

            GetObject ( logo, sizeof(BITMAP), &bm );
            return( TRUE );

#if 0
#ifdef __NT__
        case WM_CTLCOLORSTATIC:
            if ( brush ) {
                dc = (HDC) wParam;
                SetBkColor ( dc, color );
                return ( (LRESULT) brush );
            }
            break;
#else
        case WM_CTLCOLOR:
            if ( brush ) {
                dc = (HDC) wParam;
                if ( HIWORD(lParam) == CTLCOLOR_STATIC ) {
                    SetBkColor ( dc, color );
                }
                return ( (LRESULT) brush );
            }
            break;
#endif

        case WM_ERASEBKGND:
            if ( brush ) {
                GetClientRect( hDlg, &rect );
                UnrealizeObject( brush );
                FillRect( (HDC)wParam, &rect, brush );
                return ( TRUE );
            }
            break;
#endif

        case WM_PAINT:
            dc = BeginPaint ( hDlg, &ps );
            if ( dc ) {
                w666 = GetDlgItem ( hDlg, 666 );
                GetClientRect ( w666, &rect );
                GetClientRect ( hDlg, &arect );
                start = ( arect.right - arect.left - bm.bmWidth ) / 2;
                MapWindowPoints ( w666, hDlg, (POINT *) &rect, 2 );
                tdc = CreateCompatibleDC ( dc );
                old = SelectObject ( tdc, logo );
                BitBlt ( dc, start, rect.top + 20, bm.bmWidth, bm.bmHeight,
                         tdc, 0, 0, SRCCOPY );
                SelectObject ( tdc, old );
                DeleteDC ( tdc );
                EndPaint ( hDlg, &ps );
            }
            break;

        case WM_TIMER:
            timer = (UINT) GetWindowLong ( hDlg, DWL_USER );
            if ( timer ) {
                KillTimer ( hDlg, timer );
            }
            EndDialog ( hDlg, TRUE );
            return ( TRUE );
            break;

        case WM_COMMAND:
            w = LOWORD(wParam);
            if ( ( w == IDOK ) || ( w == IDCANCEL ) ) {
                timer = (UINT) GetWindowLong ( hDlg, DWL_USER );
                if ( timer ) {
                    KillTimer ( hDlg, timer );
                }
                EndDialog(hDlg, TRUE);
                return ( TRUE );
            }
            break;

    }

    return ( FALSE );
}

void CALLBACK WREHelpRoutine( void )
{
    WWinHelp( WREMainWin, "resedt.hlp", HELP_CONTENTS, 0 );
}

⌨️ 快捷键说明

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