void WdeSetBaseObjectMenu( Bool has_hash ) { HMENU menu; int i; i = WdeIsCurrentMDIWindowZoomed() ? 1 : 0; menu = WdeGetMenuHandle(); if( WdeLastObject != BASE ) { WdeEnableAllMenuItems( GetSubMenu( menu, EDIT_MENU + i ), FALSE ); EnableMenuItem( menu, IDM_OPTIONS, MF_ENABLED | MF_BYCOMMAND ); WdeEnableAllMenuItems( GetSubMenu( menu, DIALOG_MENU + i ), FALSE ); EnableMenuItem( menu, IDM_DIALOG_NEW, MF_ENABLED | MF_BYCOMMAND ); if( has_hash ) { EnableMenuItem( menu, IDM_WRITE_SYMBOLS, MF_ENABLED | MF_BYCOMMAND ); } else { EnableMenuItem( menu, IDM_WRITE_SYMBOLS, MF_GRAYED | MF_BYCOMMAND ); } WdeLastObject = BASE; } WdeEnableSelectDialogItem( menu ); //WdeEnableGotoMenu( menu ); menu = GetSubMenu( menu, EDIT_MENU + i ); EnableMenuItem( menu, SYMBOLS_SUBMENU, MF_ENABLED | MF_BYPOSITION ); #if 0 DrawMenuBar( WdeGetMainWindowHandle() ); #endif }
void WdeSetDialogObjectMenu ( Bool restorable, Bool res_has_hash, WdeOrderMode mode ) { HMENU menu; int i; i = WdeIsCurrentMDIWindowZoomed() ? 1 : 0; menu = WdeGetMenuHandle(); if( WdeLastObject != DIALOG || WdeLastDlgRestorable != restorable || mode != WdeLastOrderMode ) { WdeSetDialogObjectDialogMenu( menu, i, restorable, res_has_hash, mode ); WdeEnableAllMenuItems( GetSubMenu( menu, EDIT_MENU + i ), TRUE ); WdeLastObject = DIALOG; WdeLastDlgRestorable = restorable; } WdeEnableSelectDialogItem( menu ); WdeEnableAlignTools( menu, i ); //WdeEnableTest( menu, mode == WdeSelect ); //WdeEnableGotoMenu( menu ); #if 0 DrawMenuBar( WdeGetMainWindowHandle() ); #endif }
void WdeSetControlObjectMenu ( Bool dlg_is_parent, Bool dlg_restorable, Bool res_has_hash, WdeOrderMode mode ) { HMENU menu; int i; i = WdeIsCurrentMDIWindowZoomed() ? 1 : 0; menu = WdeGetMenuHandle(); if ( WdeLastObject != CONTROL || mode != WdeLastOrderMode || WdeLastDlgIsParent != dlg_is_parent ) { if( dlg_is_parent ) { WdeSetDialogObjectDialogMenu( menu, i, dlg_restorable, res_has_hash, mode ); } else { if( mode != WdeLastOrderMode ) { WdeCheckModeMenu( menu, WdeLastOrderMode, MF_UNCHECKED ); WdeCheckModeMenu( menu, mode, MF_CHECKED ); WdeLastOrderMode = mode; } WdeEnableAllMenuItems( GetSubMenu( menu, DIALOG_MENU + i ), FALSE ); EnableMenuItem( menu, IDM_DIALOG_NEW, MF_ENABLED ); } WdeEnableAllMenuItems( GetSubMenu( menu, EDIT_MENU + i ), TRUE ); WdeLastObject = CONTROL; WdeLastDlgIsParent = dlg_is_parent; } WdeEnableSelectDialogItem( menu ); WdeEnableAlignTools( menu, i ); //WdeEnableTest( menu, mode == WdeSelect ); //WdeEnableGotoMenu( menu ); #if 0 DrawMenuBar( WdeGetMainWindowHandle() ); #endif }
void WdeSetTestModeMenu( Bool testing ) { HMENU menu; int i; i = WdeIsCurrentMDIWindowZoomed() ? 1 : 0; menu = WdeGetMenuHandle(); WdeEnableAllMenuItems( menu, !testing ); WdeEnableAllMenuItems( GetSubMenu( menu, DIALOG_MENU + i ), !testing ); if( testing ) { EnableMenuItem( menu, DIALOG_MENU + i, MF_ENABLED | MF_BYPOSITION ); EnableMenuItem( menu, IDM_TEST_MODE, MF_ENABLED ); CheckMenuItem( menu, IDM_TEST_MODE, MF_CHECKED ); } else { CheckMenuItem( menu, IDM_TEST_MODE, MF_UNCHECKED ); } WdeSetRibbonItemState( IDM_TEST_MODE, testing ); DrawMenuBar( WdeGetMainWindowHandle() ); }
void WdeHandleMenuSelect( WPARAM wParam, LPARAM lParam ) { HMENU menu; HMENU popup; WORD flags; menu = WdeGetMenuHandle(); flags = GET_WM_MENUSELECT_FLAGS( wParam, lParam ); if( flags == (WORD)-1 && GET_WM_MENUSELECT_HMENU( wParam, lParam ) == (HMENU)NULL ) { WdeSetStatusText( NULL, "", TRUE ); } else if( flags & (MF_SYSMENU | MF_SEPARATOR) ) { WdeSetStatusText( NULL, "", TRUE ); } else if( flags & MF_POPUP ) { popup = (HMENU)GET_WM_MENUSELECT_ITEM( wParam, lParam ); #ifdef __NT__ popup = GetSubMenu( (HMENU)lParam, (int)popup ); #endif WdeHandlePopupHint( menu, popup ); } else { WdeDisplayHint( (int)GET_WM_MENUSELECT_ITEM( wParam, lParam ) ); } }
bool WdeIsMenuIDValid( HMENU menu, WORD id ) { UINT st; if( !EnableMenuInput ) { return( FALSE ); } if( WdeGetTestMode() ) { if( id != IDM_TEST_MODE ) { return( FALSE ); } } switch( id ) { case IDM_TAB: case IDM_STAB: case IDM_ESCAPE: case IDM_GOTO_INFOBAR: return( TRUE ); } if( menu == (HMENU)NULL ) { menu = WdeGetMenuHandle(); } handleInitMenu( menu ); st = GetMenuState( menu, id, MF_BYCOMMAND ); if( st == -1 || (st & MF_GRAYED) == MF_GRAYED ) { return( FALSE ); } return( TRUE ); }
WINEXPORT LRESULT CALLBACK WdeMainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { HMENU menu; LRESULT ret; bool pass_to_def; WdeResInfo *res_info; WORD wp; about_info ai; 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_MEASUREITEM: WdeHandleMeasureItem( (MEASUREITEMSTRUCT *)lParam ); ret = TRUE; pass_to_def = FALSE; break; case WM_DRAWITEM: WdeHandleDrawItem( (DRAWITEMSTRUCT *)lParam ); ret = TRUE; pass_to_def = FALSE; 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: case IDM_SPACE_HORZ: case IDM_SPACE_VERT: 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; #if 0 /* this strategy has been rejected in favor of the hide option */ case IDM_REMOVE_DIALOG: WdeRemoveDialog( res_info ); pass_to_def = FALSE; break; #endif 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_HELP_SEARCH: WdeHelpSearchRoutine(); pass_to_def = FALSE; break; case IDM_HELP_ON_HELP: WdeHelpOnHelpRoutine(); pass_to_def = FALSE; break; case IDM_ABOUT: ai.owner = hWnd; ai.inst = hInstWde; ai.name = AllocRCString( WDE_ABOUT_NAME ); ai.version = AllocRCString( WDE_ABOUT_VERSION ); ai.first_cr_year = "1984"; ai.title = AllocRCString( WDE_ABOUT_TITLE ); DoAbout( &ai ); FreeRCString( ai.name ); FreeRCString( ai.version ); FreeRCString( ai.title ); 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 ); break; case WM_ENDSESSION: if ( !wParam ) { WdeFatalExit = FALSE; } break; case WM_QUERYENDSESSION: ret = WdeQueryKillApp( FALSE ); if( ret ) { WdeFatalExit = TRUE; pass_to_def = FALSE; } break; case WM_CLOSE: // this prevents the user from closing the editor during // DDE initialization if( !wParam && !EnableMenuInput ) { return( 0 ); } /* clean up before we exit */ WdeCleanupStarted = TRUE; if( wParam ) { // wParam is non-zero if the DDE connection died WdeFatalExit = TRUE; WdeQueryKillApp( TRUE ); wParam = 0; } if( !WdeCleanup( res_info, WdeFatalExit ) ) { WdeCleanupStarted = FALSE; pass_to_def = FALSE; } } if( pass_to_def ) { ret = DefFrameProc( hWnd, hWinWdeMDIClient, message, wParam, lParam ); } return( ret ); }