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