📄 wdemain.c
字号:
if ( set_to_res_menu ) {
if( IsDDE ) {
new_menu = WdeDDEMenu;
} else {
new_menu = WdeResMenu;
}
} else {
new_menu = WdeInitialMenu;
}
if ( !new_menu || ( WdeCurrentMenu == new_menu ) ) {
return;
}
if ( set_to_res_menu ) {
menu = GetSubMenu ( new_menu, WINDOW_MENU );
} else {
menu = GetSubMenu ( new_menu, 0 );
}
#ifdef __NT__
SendMessage ( hWinWdeMDIClient, WM_MDISETMENU,
(WPARAM)new_menu, (LPARAM)menu );
#else
SendMessage ( hWinWdeMDIClient, WM_MDISETMENU,
FALSE, MAKELPARAM(new_menu,menu) );
#endif
WdeCurrentMenu = new_menu;
DrawMenuBar ( hWinWdeMain );
}
HWND WdeCreateMDIClientWindow ( HWND win, HINSTANCE app_inst )
{
CLIENTCREATESTRUCT ccs;
RECT rect;
HWND client;
int info_depth;
int stat_depth;
int ribbon_depth;
info_depth = WdeGetInfoWindowDepth(),
stat_depth = WdeGetStatusDepth (),
ribbon_depth = WdeGetRibbonHeight ();
GetClientRect ( win, &rect);
ccs.hWindowMenu = GetSubMenu ( GetMenu ( win ), 0 );
ccs.idFirstChild = WDE_MDI_FIRST;
/* attempt to create the main application edit window */
client = CreateWindow ( "MDIClient", "",
WS_CLIPCHILDREN | WS_CHILD | WS_VISIBLE |
WS_HSCROLL | WS_VSCROLL,
0, info_depth + ribbon_depth,
(rect.right - rect.left),
(rect.bottom -
(rect.top+stat_depth+info_depth+ribbon_depth)),
win, (HMENU) NULL, app_inst, &ccs );
/* if the window could not be created return FALSE */
if( client == NULL) {
WdeDisplayErrorMsg( WDE_NOCREATEMDICLIENT );
return( FALSE );
}
return( client );
}
Bool WdeIsFirstInst( void )
{
return( WdeFirstInst );
}
void WdeEnableMenuInput( Bool enable )
{
EnableMenuInput = enable;
}
Bool WdeIsDDE( void )
{
return( IsDDE );
}
HMENU WdeGetInitialMenuHandle ( void )
{
return ( WdeInitialMenu );
}
HMENU WdeGetResMenuHandle ( void )
{
if( IsDDE ) {
return ( WdeDDEMenu );
} else {
return ( WdeResMenu );
}
}
HMENU WdeGetMenuHandle ( void )
{
if ( hWinWdeMain ) {
return ( WdeCurrentMenu );
} else {
return ( NULL );
}
}
HWND WdeGetMDIWindowHandle ( void )
{
return (hWinWdeMDIClient);
}
HWND WdeGetMainWindowHandle ( void )
{
return (hWinWdeMain);
}
HINSTANCE WdeGetAppInstance ( void )
{
return (hInstWde);
}
Bool WdeInCleanup( void )
{
return( WdeCleanupStarted );
}
static void handleInitMenu( HMENU menu )
{
WdeEnableCommonControlsMenu( menu );
WdeEnableSelectCustCntl( menu );
WdeEnableCustCntlTools( menu );
if( WdeGetNumRes() ) {
WdeEnablePasteItem( menu );
}
}
LRESULT WINEXPORT WdeMainWndProc( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam )
{
HMENU menu;
LRESULT ret;
Bool pass_to_def;
WdeResInfo *res_info;
WORD wp;
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_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:
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;
// this strategy has been rejected in favour of the
// hide option
//case IDM_REMOVE_DIALOG:
//WdeRemoveDialog ( res_info );
//pass_to_def = FALSE;
//break;
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_ABOUT:
{
char *text;
WdeSetControlFlagText( CLASS_STATIC, WS_VISIBLE | WS_CAPTION | WS_HSCROLL | SS_LEFT | SS_NOPREFIX, &text );
if( text ) {
WdeMemFree( text );
}
}
WdeDisplayAboutBox ( hInstWde, hWinWdeMain, 0 );
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 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -