📄 wremain.c
字号:
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 + -