WMenuHandle WRESEAPI WRMenuStartEdit( WMenuInfo *info ) { int ok; WMenuEditInfo *einfo; einfo = NULL; ok = (info != NULL && info->parent != NULL && info->inst != NULL); if( ok ) { if( appWidth == -1 ) { WInitEditDlg( WGetEditInstance(), info->parent ); } ok = ((einfo = WAllocMenuEInfo()) != NULL); } if( ok ) { einfo->info = info; einfo->menu = WMakeMenuFromInfo( info ); ok = (einfo->menu != NULL); } if( ok ) { if( einfo->info->file_name != NULL ) { einfo->file_name = WStrDup( einfo->info->file_name ); ok = (einfo->file_name != NULL); if( ok ) { einfo->file_type = WRIdentifyFile( einfo->file_name ); ok = (einfo->file_type != WR_DONT_KNOW); } } } if( ok ) { ok = WResolveMenuEntries( einfo ); } if( ok ) { ok = WCreateEditWindow( WGetEditInstance(), einfo ); } if ( ok ) { einfo->hndl = WRegisterEditSession( einfo ); ok = (einfo->hndl != 0); } if( !ok ) { if( einfo != NULL ) { WFreeMenuEInfo( einfo ); } return( 0 ); } return( einfo->hndl ); }
WAccelHandle WRESEAPI WAccelStartEdit( WAccelInfo *info ) { bool ok; WAccelEditInfo *einfo; einfo = NULL; ok = (info != NULL && info->parent != NULL && info->inst != NULL); if( ok ) { if( appWidth == -1 ) { WInitEditDlg( WGetEditInstance(), info->parent ); } ok = ((einfo = WAllocAccelEInfo()) != NULL); } if( ok ) { einfo->info = info; einfo->tbl = WMakeAccelTableFromInfo( info ); ok = (einfo->tbl != NULL); } if( ok ) { if( einfo->info->file_name != NULL ) { einfo->file_name = WStrDup( einfo->info->file_name ); ok = (einfo->file_name != NULL); if( ok ) { einfo->file_type = WRIdentifyFile( einfo->file_name ); ok = (einfo->file_type != WR_DONT_KNOW); } } } if( ok ) { ok = WResolveAllEntrySymbols( einfo ); } if( ok ) { ok = WCreateEditWindow( WGetEditInstance(), einfo ); } if( ok ) { einfo->hndl = WRegisterEditSession( einfo ); ok = (einfo->hndl != 0); } if( !ok ) { if( einfo != NULL ) { WFreeAccelEInfo( einfo ); } return( 0 ); } return( einfo->hndl ); }
void WFini( void ) { HINSTANCE inst; inst = WGetEditInstance(); WFiniStatusLines(); WOptsShutdown(); WShutdownRibbons(); WShutdownToolBars(); WFiniEditWindows(); WCtl3DFini( inst ); UnregisterClass( WMainClass, inst ); WUnRegisterPrevClass( inst ); if( InsertBefore != (HBITMAP)NULL ) { DeleteObject( InsertBefore ); InsertBefore = (HBITMAP)NULL; } if( InsertAfter != (HBITMAP)NULL ) { DeleteObject( InsertAfter ); InsertAfter = (HBITMAP)NULL; } if( InsertSub != (HBITMAP)NULL ) { DeleteObject( InsertSub ); InsertSub = (HBITMAP)NULL; } if( InsertNoSub != (HBITMAP)NULL ) { DeleteObject( InsertNoSub ); InsertNoSub = (HBITMAP)NULL; } JDialogFini(); }
void WRESEAPI WMenuInit( void ) { HINSTANCE inst; inst = WGetEditInstance(); if( AccelTable == (HACCEL)NULL ) { AccelTable = LoadAccelerators( inst, "WMenuAccelTable"); } if( InsertBefore == (HBITMAP)NULL ) { InsertBefore = LoadBitmap( inst, "InsertBefore"); } if( InsertAfter == (HBITMAP)NULL ) { InsertAfter = LoadBitmap( inst, "InsertAfter"); } if( InsertSub == (HBITMAP)NULL ) { InsertSub = LoadBitmap( inst, "InsertSub"); } if( InsertNoSub == (HBITMAP)NULL ) { InsertNoSub = LoadBitmap( inst, "InsertNoSub"); } if( ref_count == 0 ) { WRInit(); WInitDisplayError( inst ); WInit( inst ); WInitDummyMenuEntry(); } ref_count++; }
void WHandleMemFlags( WStringEditInfo *einfo ) { char *rtext; char *ntext; WResID *rname; ntext = AllocRCString( W_STRINGNAMES ); if( einfo != NULL && einfo->current_block != NULL && ntext != NULL ) { WSetStatusByID( einfo->wsb, W_CHANGESTRINGMEMFLAGS, -1 ); // alloc space for ntext and two 16-bit ints rtext = (char *)WRMemAlloc( strlen( ntext ) + 20 ); if( rtext != NULL ) { sprintf( rtext, ntext, einfo->current_block->blocknum & 0xfff0, (einfo->current_block->blocknum & 0xfff0) + 16 - 1 ); } rname = WResIDFromStr( rtext ); if( rname != NULL ) { einfo->info->modified |= WChangeMemFlags( einfo->win, &einfo->current_block->MemFlags, rname, WGetEditInstance(), WStrHelpRoutine ); WRMemFree( rname ); } FreeRCString( ntext ); WSetStatusReadyText( einfo->wsb ); } }
static void handleSymbols( WStringEditInfo *einfo ) { if( !WEditSymbols( einfo->win, &einfo->info->symbol_table, WGetEditInstance(), WStrHelpRoutine ) ) { return; } WResolveStringTableSymIDs( einfo ); WHandleSelChange( einfo ); }
void WFini( void ) { HINSTANCE inst; inst = WGetEditInstance(); WFiniStatusLines(); WOptsShutdown(); WShutdownRibbons(); WShutdownToolBars(); WFiniEditWindows(); WCtl3DFini( inst ); UnregisterClass( WMainClass, inst ); JDialogFini(); }
void WRESEAPI WAccelInit( void ) { HINSTANCE inst; inst = WGetEditInstance(); if( AccelTable == (HACCEL)NULL ) { AccelTable = LoadAccelerators( inst, "WAccelAccelTable"); } if( ref_count == 0 ) { WRInit(); SetInstance( inst ); WInit( inst ); } ref_count++; }
void WINEXPORT WAccelInit( void ) { HINSTANCE inst; inst = WGetEditInstance(); if( AccelTable == (HACCEL)NULL ) { AccelTable = LoadAccelerators( inst, "WAccelAccelTable"); } if( ref_count == 0 ) { WRInit(); WInitDisplayError( inst ); WInit( inst ); } ref_count++; }
bool WHandleGetKeyValue( WAccelEditInfo *einfo, bool ignore_first ) { RECT r; bool ok; char *text; text = NULL; ok = (einfo != NULL); if( ok ) { if( einfo->current_entry == NULL ) { ok = WInsertAccelEntry( einfo ); } } if( ok ) { text = AllocRCString( W_SELECTKEY ); ok = (text != NULL); } if( ok ) { WGetKeyPressProc( NULL, 0, 0, 0 ); einfo->key_info.key = 0; GetWindowRect( GetDlgItem( einfo->edit_dlg, IDM_ACCEDLIST ), &r ); MapWindowPoints( (HWND)NULL, einfo->edit_dlg, (POINT *)&r, 2 ); einfo->key_info.text_win = CreateWindow( "static", text, WS_CHILD | WS_VISIBLE | SS_LEFT, r.left, r.top, r.right - r.left, r.bottom - r.top, einfo->edit_dlg, (HMENU)NULL, WGetEditInstance(), NULL ); ok = (einfo->key_info.text_win != (HWND)NULL); } if( ok ) { einfo->info->modified = true; SetFocus( einfo->win ); SetCapture( einfo->win ); einfo->key_info.ignore_first_key = ignore_first; einfo->getting_key = TRUE; } if( text != NULL ) { FreeRCString( text ); } return( ok ); }
static void handleSymbols( WMenuEditInfo *einfo ) { char *text; if( !WEditSymbols( einfo->win, &einfo->info->symbol_table, WGetEditInstance(), WMenuHelpRoutine ) ) { return; } WResolveMenuSymIDs( einfo ); text = WGetStrFromEdit( GetDlgItem( einfo->edit_dlg, IDM_MENUEDID ), NULL ); WRAddSymbolsToComboBox( einfo->info->symbol_table, einfo->edit_dlg, IDM_MENUEDID, WR_HASHENTRY_ALL ); if( text != NULL ) { WSetEditWithStr( GetDlgItem( einfo->edit_dlg, IDM_MENUEDID ), text ); WMemFree( text ); } WHandleSelChange( einfo ); }
WINEXPORT LRESULT CALLBACK WMainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { HMENU menu; #if 0 HWND win; #endif LRESULT ret; Bool pass_to_def; WMenuEditInfo *einfo; WORD wp; MINMAXINFO *minmax; about_info ai; pass_to_def = TRUE; ret = FALSE; einfo = (WMenuEditInfo *)GET_WNDLONGPTR( hWnd, 0 ); WSetCurrentEditInfo( einfo ); switch( message ) { case WM_ACTIVATE: if( GET_WM_ACTIVATE_FACTIVE( wParam, lParam ) && !GET_WM_ACTIVATE_FMINIMIZED( wParam, lParam ) && einfo != NULL && einfo->edit_dlg != (HWND)NULL ) { SetFocus( einfo->edit_dlg ); pass_to_def = FALSE; } break; case WM_INITMENU: if( wParam == (WPARAM)GetMenu( hWnd ) ) { // set the cut and copy menu items ret = SendDlgItemMessage( einfo->edit_dlg, IDM_MENUEDLIST, LB_GETCURSEL, 0, 0 ); if( ret != LB_ERR ) { EnableMenuItem( (HMENU)wParam, IDM_MENU_CUT, MF_ENABLED ); EnableMenuItem( (HMENU)wParam, IDM_MENU_COPY, MF_ENABLED ); } else { EnableMenuItem( (HMENU)wParam, IDM_MENU_CUT, MF_GRAYED ); EnableMenuItem( (HMENU)wParam, IDM_MENU_COPY, MF_GRAYED ); } // set the paste menu item if( OpenClipboard( hWnd ) ) { if( //IsClipboardFormatAvailable( WClipbdFormat ) || IsClipboardFormatAvailable( WItemClipbdFormat ) ) { EnableMenuItem( (HMENU)wParam, IDM_MENU_PASTE, MF_ENABLED ); } else { EnableMenuItem( (HMENU)wParam, IDM_MENU_PASTE, MF_GRAYED ); } CloseClipboard(); } ret = FALSE; } break; case WM_CREATE: einfo = ((CREATESTRUCT *)lParam)->lpCreateParams; SET_WNDLONGPTR( hWnd, 0, (LONG_PTR)einfo ); break; case WM_MENUSELECT: if( einfo != NULL ) { menu = WGetMenuHandle( einfo ); WHandleMenuSelect( einfo->wsb, menu, wParam, lParam ); } break; case WM_GETMINMAXINFO: minmax = (MINMAXINFO *)lParam; minmax->ptMinTrackSize.x = appWidth; minmax->ptMinTrackSize.y = appHeight; break; case WM_MOVE: if( einfo != NULL ) { if( IsZoomed( hWnd ) ) { WSetOption( WOptScreenMax, TRUE ); } else if( !IsIconic( hWnd ) ) { WUpdateScreenPosOpt( hWnd ); WSetOption( WOptScreenMax, FALSE ); } WMovePrevWindow( einfo ); } break; case WM_SETFOCUS: if( einfo != NULL && einfo->preview_window != (HWND)NULL ) { SendMessage( einfo->preview_window, WM_NCACTIVATE, (WPARAM)TRUE, (LPARAM)NULL ); } break; case WM_SHOWWINDOW: if( wParam ) { ShowWindow( einfo->preview_window, SW_SHOWNA ); } else { ShowWindow( einfo->preview_window, SW_HIDE ); } break; case WM_SIZE: if( einfo != NULL ) { if( wParam == SIZE_MAXIMIZED ) { WSetOption( WOptScreenMax, TRUE ); } else if ( wParam != SIZE_MINIMIZED ) { WUpdateScreenPosOpt( hWnd ); WSetOption( WOptScreenMax, FALSE ); } if( einfo->preview_window != (HWND)NULL ) { if( wParam == SIZE_MINIMIZED ) { ShowWindow( einfo->preview_window, SW_HIDE ); } else { ShowWindow( einfo->preview_window, SW_SHOWNA ); } } if( wParam != SIZE_MINIMIZED ) { WResizeWindows( einfo ); } } break; #if 0 case WM_ACTIVATE: if( GET_WM_ACTIVATE_FACTIVE( wParam, lParam ) != WA_INACTIVE ) { win = GET_WM_ACTIVATE_HWND( wParam, lParam ); einfo = (WMenuEditInfo *)GET_WNDLONGPTR( win, 0 ); WSetCurrentEditInfo( einfo ); } else { WSetCurrentEditInfo( NULL ); } break; #endif case WM_COMMAND: wp = LOWORD( wParam ); switch( wp ) { case IDM_MENU_CLEAR: WHandleClear( einfo ); pass_to_def = FALSE; break; case IDM_MENU_UPDATE: SendMessage( einfo->info->parent, MENU_PLEASE_SAVEME, 0, (LPARAM)einfo->hndl ); pass_to_def = FALSE; break; case IDM_MENU_OPEN: pass_to_def = FALSE; if( einfo->info->modified ) { ret = WQuerySave( einfo, FALSE ); if( !ret ) { break; } } ret = SendMessage( einfo->info->parent, MENU_PLEASE_OPENME, 0, (LPARAM)einfo->hndl ); ret = FALSE; break; case IDM_MENU_SAVE: WSaveObject( einfo, FALSE, FALSE ); pass_to_def = FALSE; break; case IDM_MENU_SAVEAS: WSaveObject( einfo, TRUE, FALSE ); pass_to_def = FALSE; break; case IDM_MENU_SAVEINTO: WSaveObject( einfo, TRUE, TRUE ); pass_to_def = FALSE; break; case IDM_MENU_EXIT: /* clean up before we exit */ PostMessage( einfo->win, WM_CLOSE, 0, 0 ); break; case IDM_MENU_PASTE: WPasteMenuItem( einfo ); pass_to_def = FALSE; break; case IDM_MENU_CUT: case IDM_MENU_COPY: WClipMenuItem( einfo, wp == IDM_MENU_CUT ); pass_to_def = FALSE; break; case IDM_MENU_DELETE: WDeleteMenuEntry( einfo ); pass_to_def = FALSE; break; case IDM_MENU_INSERTSUBITEMS: WToggleInsertSubitems( einfo ); break; case IDM_MENU_INSERTBEFORE: if( !einfo->insert_before ) { WToggleInsertBitmap( einfo ); } break; case IDM_MENU_INSERTAFTER: if( einfo->insert_before ) { WToggleInsertBitmap( einfo ); } break; case IDM_MENU_INSERTTOGGLE: WToggleInsertBitmap( einfo ); break; #if 0 case IDM_MENU_NEWITEM: WInsertNewMenuEntry( einfo, FALSE, FALSE ); pass_to_def = FALSE; break; case IDM_MENU_NEWPOPUP: WInsertNewMenuEntry( einfo, TRUE, FALSE ); pass_to_def = FALSE; break; case IDM_MENU_NEWSEPARATOR: WInsertNewMenuEntry( einfo, FALSE, TRUE ); pass_to_def = FALSE; break; #else case IDM_MENU_NEWITEM: WInsertNew( einfo ); pass_to_def = FALSE; break; #endif case IDM_MENU_SYMBOLS: handleSymbols( einfo ); pass_to_def = FALSE; break; case IDM_MENU_LOAD_SYMBOLS: handleLoadSymbols( einfo ); pass_to_def = FALSE; break; case IDM_MENU_SHOWRIBBON: menu = WGetMenuHandle( einfo ); WShowRibbon( einfo, menu ); pass_to_def = FALSE; break; case IDM_MENU_MEM_FLAGS: WSetStatusByID( einfo->wsb, W_CHANGEMENUMEMFLAGS, -1 ); einfo->info->modified |= WChangeMemFlags( einfo->win, &einfo->info->MemFlags, einfo->info->res_name, WGetEditInstance(), WMenuHelpRoutine ); WSetStatusReadyText( einfo->wsb ); pass_to_def = FALSE; break; case IDM_MENU_RENAME: WHandleRename( einfo ); pass_to_def = FALSE; break; case IDM_HELP: WMenuHelpRoutine(); pass_to_def = FALSE; break; case IDM_HELP_SEARCH: WMenuHelpSearchRoutine(); pass_to_def = FALSE; break; case IDM_HELP_ON_HELP: WMenuHelpOnHelpRoutine(); pass_to_def = FALSE; break; case IDM_MENU_ABOUT: ai.owner = hWnd; ai.inst = WGetEditInstance(); ai.name = AllocRCString( W_ABOUT_NAME ); ai.version = AllocRCString( W_ABOUT_VERSION ); ai.first_cr_year = "2002"; ai.title = AllocRCString( W_ABOUT_TITLE ); DoAbout( &ai ); FreeRCString( ai.name ); FreeRCString( ai.version ); FreeRCString( ai.title ); pass_to_def = FALSE; break; } break; case WM_DESTROY: WWinHelp( hWnd, "resmnu.hlp", HELP_QUIT, 0 ); WCleanup( einfo ); break; case WM_CLOSE: ret = TRUE; pass_to_def = WHandleWM_CLOSE( einfo, (Bool)wParam ); wParam = 0; break; } if( pass_to_def ) { ret = DefWindowProc( hWnd, message, wParam, lParam ); } return( ret ); }
WINEXPORT LRESULT CALLBACK WMainWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { HMENU menu; #if 0 HWND win; #endif LRESULT ret; bool pass_to_def; WAccelEditInfo *einfo; WORD wp; MINMAXINFO *minmax; about_info ai; pass_to_def = TRUE; ret = FALSE; einfo = (WAccelEditInfo *)GET_WNDLONGPTR( hWnd, 0 ); WSetCurrentEditInfo( einfo ); if( einfo != NULL && einfo->getting_key ) { if( WGetKeyPressProc( einfo, message, wParam, lParam ) ) { einfo->getting_key = FALSE; DestroyWindow( einfo->key_info.text_win ); ReleaseCapture(); WHandleChange( einfo ); pass_to_def = FALSE; } } switch( message ) { case WM_ACTIVATE: if( GET_WM_ACTIVATE_FACTIVE( wParam, lParam ) && !GET_WM_ACTIVATE_FMINIMIZED( wParam, lParam ) && einfo != NULL && einfo->edit_dlg != (HWND)NULL ) { SetFocus( einfo->edit_dlg ); pass_to_def = FALSE; } break; case WM_INITMENU: if( wParam == (WPARAM)GetMenu( hWnd ) ) { // set the cut and copy menu items if( SendDlgItemMessage( einfo->edit_dlg, IDM_ACCEDLIST, LB_GETCURSEL, 0, 0 ) != LB_ERR ) { EnableMenuItem( (HMENU)wParam, IDM_ACC_CUT, MF_ENABLED ); EnableMenuItem( (HMENU)wParam, IDM_ACC_COPY, MF_ENABLED ); } else { EnableMenuItem( (HMENU)wParam, IDM_ACC_CUT, MF_GRAYED ); EnableMenuItem( (HMENU)wParam, IDM_ACC_COPY, MF_GRAYED ); } // set the paste menu item if( OpenClipboard( hWnd ) ) { if( //IsClipboardFormatAvailable( WClipbdFormat ) || IsClipboardFormatAvailable( WItemClipbdFormat ) ) { EnableMenuItem( (HMENU)wParam, IDM_ACC_PASTE, MF_ENABLED ); } else { EnableMenuItem( (HMENU)wParam, IDM_ACC_PASTE, MF_GRAYED ); } CloseClipboard(); } } break; case WM_CREATE: einfo = ((CREATESTRUCT *)lParam)->lpCreateParams; SET_WNDLONGPTR( hWnd, 0, (LONG_PTR)einfo ); break; case WM_MENUSELECT: if( einfo != NULL ) { menu = WGetMenuHandle( einfo ); WHandleMenuSelect( einfo->wsb, menu, wParam, lParam ); setLastMenuSelect( einfo, wParam, lParam ); } break; case WM_GETMINMAXINFO: minmax = (MINMAXINFO *)lParam; minmax->ptMinTrackSize.x = appWidth; minmax->ptMinTrackSize.y = appHeight; break; case WM_MOVE: if( einfo != NULL ) { if( IsZoomed( hWnd ) ) { WSetOption( WOptScreenMax, TRUE ); } else if( !IsIconic( hWnd ) ) { WUpdateScreenPosOpt( hWnd ); WSetOption( WOptScreenMax, FALSE ); } } break; case WM_SIZE: if( einfo != NULL ) { if( wParam == SIZE_MAXIMIZED ) { WSetOption( WOptScreenMax, TRUE ); } else if( wParam != SIZE_MINIMIZED ) { WUpdateScreenPosOpt( hWnd ); WSetOption( WOptScreenMax, FALSE ); } WResizeWindows( einfo ); } break; #if 0 case WM_ACTIVATE: if( GET_WM_ACTIVATE_FACTIVE( wParam, lParam ) != WA_INACTIVE ) { einfo = (WAccelEditInfo *)GET_WNDLONGPTR( hWnd, 0 ); if( einfo != NULL && einfo->edit_dlg != (HWND)NULL ) { SetFocus( einfo->edit_dlg ); } WSetCurrentEditInfo( einfo ); } else { WSetCurrentEditInfo( NULL ); } break; #endif case WM_COMMAND: wp = LOWORD( wParam ); switch( wp ) { case IDM_ACC_CLEAR: WHandleClear( einfo ); pass_to_def = FALSE; break; case IDM_ACC_UPDATE: SendMessage( einfo->info->parent, ACCEL_PLEASE_SAVEME, 0, (LPARAM)einfo->hndl ); pass_to_def = FALSE; break; case IDM_ACC_OPEN: pass_to_def = FALSE; if( einfo->info->modified ) { ret = WQuerySave( einfo, FALSE ); if( !ret ) { break; } } ret = SendMessage( einfo->info->parent, ACCEL_PLEASE_OPENME, 0, (LPARAM)einfo->hndl ); ret = FALSE; break; case IDM_ACC_SAVE: WSaveObject( einfo, FALSE, FALSE ); pass_to_def = FALSE; break; case IDM_ACC_SAVEAS: WSaveObject( einfo, TRUE, FALSE ); pass_to_def = FALSE; break; case IDM_ACC_SAVEINTO: WSaveObject( einfo, TRUE, TRUE ); pass_to_def = FALSE; break; case IDM_ACC_EXIT: /* clean up before we exit */ PostMessage( einfo->win, WM_CLOSE, 0, 0 ); break; case IDM_ACC_PASTE: WPasteAccelItem( einfo ); pass_to_def = FALSE; break; case IDM_ACC_COPY: case IDM_ACC_CUT: WClipAccelItem( einfo, wp == IDM_ACC_CUT ); pass_to_def = FALSE; break; case IDM_ACC_DELETE: WDeleteAccelEntry( einfo ); pass_to_def = FALSE; break; case IDM_ACC_NEWITEM: WInsertAccelEntry( einfo ); pass_to_def = FALSE; break; case IDM_ACC_KEYVALUE: WSetStatusByID( einfo->wsb, W_GETTINGKEYS, -1 ); WHandleGetKeyValue( einfo, einfo->last_menu_select == IDM_ACC_KEYVALUE ); WSetStatusReadyText( einfo->wsb ); pass_to_def = FALSE; break; case IDM_ACC_SYMBOLS: handleSymbols( einfo ); pass_to_def = FALSE; break; case IDM_ACC_LOAD_SYMBOLS: handleLoadSymbols( einfo ); pass_to_def = FALSE; break; case IDM_ACC_SHOWRIBBON: menu = WGetMenuHandle( einfo ); WShowRibbon( einfo, menu ); pass_to_def = FALSE; break; case IDM_ACC_MEM_FLAGS: WSetStatusByID( einfo->wsb, W_CHANGEACCELMEMFLAGS, -1 ); einfo->info->modified |= WChangeMemFlags( einfo->win, &einfo->info->MemFlags, einfo->info->res_name, WGetEditInstance(), WAccHelpRoutine ); pass_to_def = FALSE; WSetStatusReadyText( einfo->wsb ); break; case IDM_ACC_RENAME: WHandleRename( einfo ); pass_to_def = FALSE; break; case IDM_HELP: WAccHelpRoutine(); pass_to_def = FALSE; break; case IDM_HELP_SEARCH: WAccHelpSearchRoutine(); pass_to_def = FALSE; break; case IDM_HELP_ON_HELP: WAccHelpOnHelpRoutine(); pass_to_def = FALSE; break; case IDM_ACC_ABOUT: ai.owner = hWnd; ai.inst = WGetEditInstance(); ai.name = AllocRCString( W_ABOUT_NAME ); ai.version = AllocRCString( W_ABOUT_VERSION ); ai.first_cr_year = "2002"; ai.title = AllocRCString( W_ABOUT_TITLE ); DoAbout( &ai ); FreeRCString( ai.name ); FreeRCString( ai.version ); FreeRCString( ai.title ); pass_to_def = FALSE; break; } break; case WM_DESTROY: WWinHelp( hWnd, "resacc.hlp", HELP_QUIT, 0 ); WCleanup( einfo ); break; case WM_CLOSE: ret = TRUE; pass_to_def = WHandleWM_CLOSE( einfo, wParam != 0 ); wParam = 0; break; } if( pass_to_def ) { ret = DefWindowProc( hWnd, message, wParam, lParam ); } return( ret ); }
bool WSaveObjectInto( WAccelEditInfo *einfo ) { char *fname; WGetFileStruct gf; bool dup; WRSaveIntoData idata; WRFileType ftype; bool ok; fname = NULL; dup = false; ok = (einfo != NULL); if( ok ) { idata.next = NULL; idata.type = WResIDFromNum( RESOURCE2INT( RT_ACCELERATOR ) ); ok = (idata.type != NULL); } if( ok ) { gf.file_name = NULL; gf.title = AllocRCString( W_SAVERESINTO ); gf.filter = AllocRCString( W_SAVERESFILTER ); WMassageFilter( gf.filter ); fname = WGetOpenFileName ( einfo->win, &gf ); if( gf.title != NULL ) { FreeRCString( gf.title ); } if( gf.filter != NULL ) { FreeRCString( gf.filter ); } ok = (fname != NULL); } if( ok ) { ftype = WSelectFileType( einfo->win, fname, einfo->info->is32bit, TRUE, WGetEditInstance(), WAccHelpRoutine ); if( ftype == WR_WIN_RC_ACCEL ) { ok = WSaveObjectToRC( einfo, fname, FALSE, TRUE ); } else { idata.name = einfo->info->res_name; idata.data = einfo->info->data; idata.lang = einfo->info->lang; idata.size = (uint_32)einfo->info->data_size; idata.MemFlags = einfo->info->MemFlags; ok = WRSaveObjectInto( fname, &idata, &dup ) && !dup; } } if( dup ) { WDisplayErrorMsg( W_RESDUPNAMEINFILE ); } if( fname != NULL ) { WRMemFree( fname ); } if( idata.type != NULL ) { WRMemFree( idata.type ); } return( ok ); }
bool WSaveObjectAs( bool get_name, WAccelEditInfo *einfo ) { char resfile[_MAX_PATH]; char *fname; WRFileType ftype; WRFileType rtype; WGetFileStruct gf; WRSaveIntoData idata; WRSaveIntoData idata2; bool got_name; bool ok; fname = NULL; got_name = FALSE; ok = (einfo != NULL); if( ok ) { memset( &idata2, 0, sizeof( idata2 ) ); if( einfo->info->symbol_file != NULL ) { idata2.next = NULL; idata2.type = WResIDFromNum( RESOURCE2INT( RT_RCDATA ) ); idata2.name = WResIDFromStr( "DLGINCLUDE" ); idata2.data = einfo->info->symbol_file; idata2.lang = einfo->info->lang; idata2.size = (uint_32)( strlen( einfo->info->symbol_file ) + 1 ); idata2.MemFlags = MEMFLAG_DISCARDABLE; } } if( ok ) { idata.next = NULL; if( einfo->info->symbol_file != NULL ) { idata.next = &idata2; } idata.type = WResIDFromNum( RESOURCE2INT( RT_ACCELERATOR ) ); ok = (idata.type != NULL); } if( ok ) { if( einfo->file_name == NULL || get_name ) { gf.file_name = NULL; gf.title = AllocRCString( W_SAVERESAS ); gf.filter = AllocRCString( W_SAVERESFILTER ); WMassageFilter( gf.filter ); fname = WGetSaveFileName( einfo->win, &gf ); if( gf.title != NULL ) { FreeRCString( gf.title ); } if( gf.filter != NULL ) { FreeRCString( gf.filter ); } if( fname != NULL ) { got_name = TRUE; } } else { fname = einfo->file_name; } ok = (fname != NULL); } if( ok ) { if( got_name ) { ftype = WSelectFileType( einfo->win, fname, einfo->info->is32bit, TRUE, WGetEditInstance(), WAccHelpRoutine ); } else { ftype = einfo->file_type; } ok = (ftype != WR_DONT_KNOW); } if( ok ) { if( ftype == WR_WIN_RC_ACCEL ) { ok = WSaveObjectToRC( einfo, fname, FALSE, FALSE ); if( ok ) { WGetInternalRESName( fname, resfile ); if( einfo->info->is32bit ) { rtype = WR_WINNTW_RES; } else { rtype = WR_WIN16W_RES; } } } else { strcpy( resfile, fname ); rtype = ftype; } } if( ok ) { idata.name = einfo->info->res_name; idata.data = einfo->info->data; idata.lang = einfo->info->lang; idata.size = (uint_32)einfo->info->data_size; idata.MemFlags = einfo->info->MemFlags; ok = WRSaveObjectAs( resfile, rtype, &idata ); } if( ok ) { if( got_name ) { if( einfo->file_name != NULL ) { WRMemFree( einfo->file_name ); } einfo->file_name = fname; einfo->file_type = ftype; WSetEditTitle( einfo ); } } else { if( fname != NULL && got_name ) { WRMemFree( fname ); } } if( idata.type != NULL ) { WRMemFree( idata.type ); } if( idata2.type != NULL ) { WRMemFree( idata2.type ); } if( idata2.name != NULL ) { WRMemFree( idata2.name ); } return( ok ); }