LRESULT CALLBACK WREResWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { WREResInfo *res_info; int msg_processed; LRESULT ret; msg_processed = FALSE; ret = FALSE; res_info = NULL; switch( message ) { case WM_CREATE: res_info = (WREResInfo *)((MDICREATESTRUCT *)((CREATESTRUCT *)lParam)->lpCreateParams)->lParam; res_info->res_win = hWnd; SET_WNDINFO( hWnd, (LONG_PTR)res_info ); break; case WM_SIZE: case WM_MDIACTIVATE: case WM_CLOSE: case WM_SETFOCUS: res_info = (WREResInfo *)GET_WNDINFO( hWnd ); break; case WM_DESTROY: SET_WNDINFO( hWnd, (LONG_PTR)NULL ); break; } if( res_info != NULL ) { switch( message ) { case WM_SETFOCUS: if( res_info->info_win != (HWND)NULL ) { SetFocus( res_info->info_win ); } break; case WM_SIZE: WResizeInfoWindow( res_info ); break; case WM_MDIACTIVATE: WREActivateResourceWindow( res_info, wParam, lParam ); break; case WM_CLOSE: WREEndResAccelSessions( res_info ); WREEndResMenuSessions( res_info ); WREEndResStringSessions( res_info ); WREEndResDialogSessions( res_info ); WREEndResImageSessions( res_info ); WREDestroyResourceWindow( res_info ); return( (LRESULT)FALSE ); } } if( !msg_processed ) { ret = DefMDIChildProc( hWnd, message, wParam, lParam ); } return( ret ); }
WINEXPORT LRESULT CALLBACK FileCompleteWindowProc( HWND hwnd, UINT msg, WPARAM w, LPARAM l ) { switch( msg ) { case WM_KEYDOWN: if( !BAD_ID( command_window_id ) ) { SetFocus( command_window_id ); SendMessage( command_window_id, msg, w, l ); return( 0 ); } break; case WM_ERASEBKGND: return( TRUE ); case WM_CREATE: SET_WNDINFO( hwnd, (LONG_PTR)&FileCompleteWindow ); break; case WM_LBUTTONDBLCLK: case WM_MBUTTONDBLCLK: case WM_RBUTTONDBLCLK: FileCompleteMouseClick( hwnd, GET_X( l ), GET_Y( l ), true ); break; case WM_LBUTTONUP: case WM_MBUTTONUP: case WM_RBUTTONUP: FileCompleteMouseClick( hwnd, GET_X( l ), GET_Y( l ), false ); break; } return( DefWindowProc( hwnd, msg, w, l ) ); }
void WFreeAccelEInfo( WAccelEditInfo *einfo ) { if( einfo != NULL ) { if( einfo->tbl != NULL ) { WFreeAccelTable( einfo->tbl ); einfo->tbl = NULL; } if( einfo->wsb != NULL ) { WDestroyStatusLine( einfo->wsb ); einfo->wsb = NULL; } if( einfo->ribbon != NULL ) { WDestroyRibbon( einfo ); } if( einfo->edit_dlg != (HWND)NULL && IsWindow( einfo->edit_dlg ) ) { DestroyWindow( einfo->edit_dlg ); einfo->edit_dlg = (HWND)NULL; } if( einfo->win != (HWND)NULL && IsWindow( einfo->win ) ) { SET_WNDINFO( einfo->win, 0 ); DestroyWindow( einfo->win ); einfo->win = (HWND)NULL; } if( einfo->file_name != NULL ) { WRMemFree( einfo->file_name ); } WRMemFree( einfo ); } }
WINEXPORT LRESULT CALLBACK CommandWindowProc( HWND hwnd, UINT msg, WPARAM w, LPARAM l ) { PAINTSTRUCT ps; HDC hdc; window_id wid; switch( msg ) { case WM_CREATE: command_window_id = hwnd; SET_WNDINFO( hwnd, (LONG_PTR)&CommandWindow ); break; case WM_SETFOCUS: /* turn on caret */ NewCursor( hwnd, EditVars.NormalCursorType ); break; case WM_KILLFOCUS: /* turn off the caret */ MyHideCaret( hwnd ); DestroyCaret(); wid = (window_id)w; if( !BAD_ID( wid ) && ( wid == root_window_id || GetWindow( wid, GW_OWNER ) == edit_container_id ) ) { /* hmmm... losing focus to one of our own windows - suicide */ if( ReadingAString ) { KeyAdd( VI_KEY( ESC ) ); } } break; case WM_KEYDOWN: if( WindowsKeyPush( w, HIWORD( l ) ) ) { return( 0 ); } break; case WM_PAINT: hdc = BeginPaint( hwnd, &ps ); FillRect( hdc, &ps.rcPaint, ColorBrush( WIN_TEXT_BACKCOLOR( &CommandWindow ) ) ); /* this will cause the command window to redraw itself in readstr.c */ KeyAdd( VI_KEY( ALT_END ) ); EndPaint( hwnd, &ps ); break; case WM_DESTROY: command_window_id = NO_WINDOW; break; } return( DefWindowProc( hwnd, msg, w, l ) ); }
/* * CreateContainerWindow */ window_id CreateContainerWindow( RECT *size ) { HWND container; CLIENTCREATESTRUCT client; client.hWindowMenu = (HMENU)NULLHANDLE; client.idFirstChild = 3000; // some arbitrary number that doesn't conflict container = CreateWindow( className, "Container", WS_CHILD | WS_CLIPCHILDREN | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE, size->left, size->top, size->right - size->left, size->bottom - size->top, root_window_id, (HMENU)NULLHANDLE, InstanceHandle, (LPVOID)&client ); SET_WNDINFO( container, 0 ); oldContainerProc = (WNDPROC)GET_WNDPROC( container ); SET_WNDPROC( container, (LONG_PTR)MakeWndProcInstance( ContainerWindowProc, InstanceHandle ) ); SetScrollRange( container, SB_VERT, 1, 1, FALSE ); SetScrollRange( container, SB_HORZ, 1, 1, FALSE ); return( container ); } /* CreateContainerWindow */
WINEXPORT LRESULT CALLBACK MessageWindowProc( HWND hwnd, UINT msg, WPARAM w, LPARAM l ) { PAINTSTRUCT ps; switch( msg ) { case WM_CREATE: SET_WNDINFO( hwnd, (LONG_PTR)&MessageBar ); break; case WM_PAINT: BeginPaint( hwnd, &ps ); if( !BAD_ID( MessageWindow ) ) { msgString( 1, msgString1 ); msgString( 2, msgString2 ); } EndPaint( hwnd, &ps ); return( 0 ); case WM_SETFOCUS: SetFocus( Root ); return( 0 ); } return( DefWindowProc( hwnd, msg, w, l ) ); }
/* * RepeatWindowProc - message procedure for the repeat count window */ WINEXPORT LRESULT CALLBACK RepeatWindowProc( HWND hwnd, UINT msg, WPARAM w, LPARAM l ) { PAINTSTRUCT ps; switch( msg ) { case WM_CREATE: SET_WNDINFO( hwnd, (LONG_PTR)&RepeatCountWindow ); break; case WM_PAINT: BeginPaint( hwnd, &ps ); if( !BAD_ID( repeat_window_id ) ) { drawRepeatString(); } EndPaint( hwnd, &ps ); return( 0 ); case WM_SETFOCUS: SetFocus( root_window_id ); return( 0 ); } return( DefWindowProc( hwnd, msg, w, l ) ); } /* RepeatWindowProc */
WINEXPORT LRESULT CALLBACK WdeResWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { WdeResInfo *res_info; int msg_processed; LRESULT ret; msg_processed = FALSE; ret = FALSE; res_info = NULL; switch( message ) { case WM_CREATE: res_info = (WdeResInfo *)((MDICREATESTRUCT *)((CREATESTRUCT *)lParam)->lpCreateParams)->lParam; res_info->res_win = hWnd; SET_WNDINFO( hWnd, (LONG_PTR)res_info ); break; //case WM_COMMAND: //case WM_KEYUP: //case WM_KEYDOWN: case WM_SIZE: case WM_MDIACTIVATE: case WM_CLOSE: res_info = (WdeResInfo *)GET_WNDINFO( hWnd ); break; case WM_DESTROY: SET_WNDINFO( hWnd, (LONG_PTR)NULL ); break; } if( res_info != NULL ) { switch( message ) { #if 0 case WM_KEYUP: case WM_KEYDOWN: WdePassToEdit( message, wParam, lParam ); break; case WM_COMMAND: switch( LOWORD( wParam ) ) { case IDM_ESCAPE: ret = WdePassToEdit( message, wParam, lParam ); break; } break; #endif case WM_SIZE: WdeResizeEditWindows( res_info ); break; case WM_MDIACTIVATE: WdeActivateResourceWindow( res_info, wParam, lParam ); break; case WM_CLOSE: if( !WdeDestroyResourceWindow( res_info ) ) { return( (LRESULT)FALSE ); } break; } } if( !msg_processed ) { ret = DefMDIChildProc( hWnd, message, wParam, lParam ); } return( ret ); }
/* * DDETrackingWndProc - handle messages from the tracking windows */ LRESULT CALLBACK DDETrackingWndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { DDETrackInfo *info; WORD i; void **ptr; RECT area; WORD cmd; char *wintitle; info = (DDETrackInfo *)GET_WNDINFO( hwnd ); switch( msg ) { case WM_CREATE: info = MemAlloc( sizeof( DDETrackInfo ) ); memset( info, 0, sizeof( DDETrackInfo ) ); info->type = *(WORD *)((CREATESTRUCT *)lparam)->lpCreateParams; SET_WNDINFO( hwnd, (LONG_PTR)info ); switch( info->type ) { case DDEMENU_TRK_CONV: info->sorttype = PUSH_CLIENT; makePushWin( info, hwnd, ConvHdr, CNV_HDR_CNT ); wintitle = GetRCString( STR_CONVERSATIONS ); break; case DDEMENU_TRK_STR: info->sorttype = PUSH_STR_TEXT; makePushWin( info, hwnd, StrHdr, STR_HDR_CNT ); wintitle = GetRCString( STR_STRINGS ); break; case DDEMENU_TRK_LINK: info->sorttype = PUSH_CLIENT; makePushWin( info, hwnd, LnkHdr, LNK_HDR_CNT ); wintitle = GetRCString( STR_LINKS ); break; case DDEMENU_TRK_SERVER: info->sorttype = PUSH_INST; makePushWin( info, hwnd, SrvHdr, SRV_HDR_CNT ); wintitle = GetRCString( STR_REG_SERVERS ); break; } SetWindowText( hwnd, wintitle ); CreateListBox( hwnd, &info->list ); info->config = &Tracking[info->type - DDE_TRK_FIRST]; if( info->config->visible ) { ShowWindow( hwnd, SW_SHOWNORMAL ); } break; case WM_MOVE: GetWindowRect( hwnd, &area ); info->config->xpos = area.left; info->config->ypos = area.top; break; case WM_SIZE: ResizeListBox( LOWORD( lparam ), HIWORD( lparam ), &info->list ); GetWindowRect( hwnd, &area ); if( wparam != SIZE_MAXIMIZED && wparam != SIZE_MINIMIZED ) { info->config->xsize = area.right - area.left; info->config->ysize = area.bottom - area.top; } break; case WM_COMMAND: cmd = LOWORD( wparam ); switch( info->type ) { case DDEMENU_TRK_STR: doStrSort( cmd, info ); break; case DDEMENU_TRK_CONV: doConvSort( cmd, info ); break; case DDEMENU_TRK_LINK: doLinkSort( cmd, info ); break; case DDEMENU_TRK_SERVER: doServerSort( cmd, info ); break; } break; case WM_CLOSE: DisplayTracking( info->type ); break; case WM_DESTROY: ptr = info->data; for( i = 0; i < info->cnt; i++ ) { MemFree( ptr[i] ); } if( ptr != NULL ) { MemFree( ptr ); } if( info->hdr != NULL ) { MemFree( info->hdr ); } MemFree( info ); break; default: return( DefWindowProc( hwnd, msg, wparam, lparam ) ); } return( TRUE ); } /* DDETrackingWndProc */
/* * SpyWindowProc - handle messages for the spy appl. */ LRESULT CALLBACK SpyWindowProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { int check; HWND selwin; HWND hinthwnd; WORD cmdid = 0; RECT area; BOOL pausestate; BOOL spyallstate; about_info ai; HMENU mh; switch ( msg ) { case WM_CREATE: GetClientRect( hwnd, &area ); mh = GetMenu( hwnd ); area.top = area.bottom - statusHite; StatusHdl = HintWndCreate( hwnd, &area, Instance, NULL ); statusHite = SizeHintBar( StatusHdl ); SetHintText( StatusHdl, (MenuItemHint *)menuHints, sizeof( menuHints ) / sizeof( MenuItemHint ) ); if( SpyMainWndInfo.show_hints ) { CheckMenuItem( mh, SPY_SHOW_HELP, MF_CHECKED | MF_BYCOMMAND ); } else { hinthwnd = GetHintHwnd( StatusHdl ); ShowWindow( hinthwnd, SW_HIDE ); } CreateSpyBox( hwnd ); SET_WNDINFO( hwnd, (LONG_PTR)SpyListBox ); CreateSpyTool( hwnd ); ShowSpyTool( SpyMainWndInfo.show_toolbar ); if( SpyMainWndInfo.show_toolbar ) { CheckMenuItem( mh, SPY_SHOW_TOOLBAR, MF_CHECKED | MF_BYCOMMAND ); } LogInit( hwnd, Instance, SpyLogTitle ); CheckMenuItem( SpyMenu, SPY_AUTO_SCROLL, MF_CHECKED ); EnableMenuItem( SpyMenu, SPY_ADD_WINDOW, MF_GRAYED ); EnableMenuItem( SpyMenu, SPY_STOP, MF_GRAYED ); EnableMenuItem( SpyMenu, SPY_OFFON, MF_GRAYED ); if( SpyMainWndInfo.on_top ) { CheckMenuItem( mh, SPY_TOP, MF_CHECKED | MF_BYCOMMAND ); SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); } break; case WM_TIMER: // See comment on setUpForPick KillTimer( hwnd, wparam ); switch( wparam ) { case SPY_ADD_WINDOW: selwin = DoPickDialog( wparam ); if( selwin != NULL ) { setMultipleWindows( hwnd ); AddSelectedWindow( selwin ); } break; case SPY_PEEK_WINDOW: DoPickDialog( wparam ); break; case SPY_WINDOW: selwin = DoPickDialog( cmdid ); if( selwin != NULL ) { ClearSelectedWindows(); setSingleWindow( hwnd, selwin ); enableSpy(); AddSelectedWindow( selwin ); } break; } break; #ifdef __NT__ case WM_COPYDATA: HandleMessage( (LPMSG)((COPYDATASTRUCT *)lparam)->lpData ); break; #endif case WM_MENUSELECT: hinthwnd = GetHintHwnd( StatusHdl ); HintMenuSelect( StatusHdl, hwnd, wparam, lparam ); break; case WM_COMMAND: cmdid = LOWORD( wparam ); switch( cmdid ) { case SPY_SHOW_HELP: SpyMainWndInfo.show_hints = !SpyMainWndInfo.show_hints; mh = GetMenu( hwnd ); hinthwnd = GetHintHwnd( StatusHdl ); if( SpyMainWndInfo.show_hints ) { CheckMenuItem( mh, SPY_SHOW_HELP, MF_CHECKED | MF_BYCOMMAND ); showHintBar( hwnd ); } else { CheckMenuItem( mh, SPY_SHOW_HELP, MF_UNCHECKED | MF_BYCOMMAND ); ShowWindow( hinthwnd, SW_HIDE ); } GetClientRect( hwnd, &area ); ResizeSpyBox( area.right - area.left, area.bottom - area.top ); break; case SPY_SHOW_TOOLBAR: SpyMainWndInfo.show_toolbar = !SpyMainWndInfo.show_toolbar; mh = GetMenu( hwnd ); if( SpyMainWndInfo.show_toolbar ) { CheckMenuItem( mh, SPY_SHOW_TOOLBAR, MF_CHECKED | MF_BYCOMMAND ); } else { CheckMenuItem( mh, SPY_SHOW_TOOLBAR, MF_UNCHECKED | MF_BYCOMMAND ); } ShowSpyTool( SpyMainWndInfo.show_toolbar ); GetClientRect( hwnd, &area ); ResizeSpyBox( area.right - area.left, area.bottom - area.top ); break; case SPY_TOP: SpyMainWndInfo.on_top = !SpyMainWndInfo.on_top; mh = GetMenu( hwnd ); if( SpyMainWndInfo.on_top ) { CheckMenuItem( mh, SPY_TOP, MF_CHECKED | MF_BYCOMMAND ); SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); } else { CheckMenuItem( mh, SPY_TOP, MF_UNCHECKED | MF_BYCOMMAND ); SetWindowPos( hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); } break; case SPY_MARK: pausestate = SpyMessagesPaused; SpyMessagesPaused = FALSE; /* make sure marks are * always added */ ProcessMark( hwnd, Instance, markCallback ); SpyMessagesPaused = pausestate; break; case SPY_SET_FONT: if( ChooseMonoFont( hwnd ) ) { statusHite = SizeHintBar( StatusHdl ); ResetSpyListBox(); showHintBar( hwnd ); } break; case SPY_SAVE_AS: SaveListBox( SLB_SAVE_AS, SaveExtra, "", SpyName, hwnd, SpyListBox ); break; case SPY_SAVE: SaveListBox( SLB_SAVE_TMP, SaveExtra, ".\\wspy.txt", SpyName, hwnd, SpyListBox ); break; case SPY_LOG: if( LogToggle() ) { CheckMenuItem( SpyMenu, SPY_LOG, MF_BYCOMMAND | MF_CHECKED ); } else { CheckMenuItem( SpyMenu, SPY_LOG, MF_BYCOMMAND | MF_UNCHECKED ); CheckMenuItem( SpyMenu, SPY_PAUSE_LOG, MF_BYCOMMAND | MF_UNCHECKED ); } break; case SPY_CONFIG_LOG: LogConfigure(); break; case SPY_EXIT: ClearFilter(); DestroyWindow( hwnd ); break; case SPY_LIST_BOX: switch( GET_WM_COMMAND_CMD( wparam, lparam ) ) { case LBN_ERRSPACE: ClearSpyBox(); break; case LBN_DBLCLK: DoMessageSelDialog( hwnd ); break; } break; case SPY_SHOW_SELECTED_WINDOWS: spyallstate = spyAll; DoShowSelectedDialog( hwnd, &spyallstate ); if( spyallstate ) { doSpyAll( hwnd, spyallstate ); if( spyAll ) { SetSpyState( ON ); } break; } if( WindowCount == 0 ) { SetWindowText( hwnd, SpyName ); disableSpy(); break; } if( WindowCount == 1 ) { setSingleWindow( hwnd, WindowList[0] ); } else { setMultipleWindows( hwnd ); } if( SpyState == NEITHER ) { enableSpy(); } break; case SPY_HELP_CONTENTS: if( !WHtmlHelp( hwnd, "spy.chm", HELP_CONTENTS, 0 ) ) { WWinHelp( hwnd, "spy.hlp", HELP_CONTENTS, 0 ); } break; case SPY_HELP_SRCH: if( !WHtmlHelp( hwnd, "spy.chm", HELP_PARTIALKEY, (HELP_DATA)"" ) ) { WWinHelp( hwnd, "spy.hlp", HELP_PARTIALKEY, (HELP_DATA)"" ); } break; case SPY_HELP_ON_HELP: WWinHelp( hwnd, "winhelp.hlp", HELP_HELPONHELP, 0 ); break; case SPY_ABOUT: ai.owner = hwnd; ai.inst = Instance; ai.name = AllocRCString( STR_ABOUT_NAME ); ai.version = AllocRCString( STR_ABOUT_VERSION ); ai.first_cr_year = "1993"; ai.title = AllocRCString( STR_ABOUT_TITLE ); DoAbout( &ai ); FreeRCString( ai.name ); FreeRCString( ai.version ); FreeRCString( ai.title ); break; case SPY_AUTO_SCROLL: if( SpyMessagesAutoScroll ) { SpyMessagesAutoScroll = FALSE; CheckMenuItem( SpyMenu, SPY_AUTO_SCROLL, MF_UNCHECKED ); } else { SpyMessagesAutoScroll = TRUE; CheckMenuItem( SpyMenu, SPY_AUTO_SCROLL, MF_CHECKED ); } break; case SPY_PAUSE_LOG: if( SpyLogPauseToggle() ) { CheckMenuItem( SpyMenu, SPY_PAUSE_LOG, MF_BYCOMMAND | MF_CHECKED ); } else { CheckMenuItem( SpyMenu, SPY_PAUSE_LOG, MF_BYCOMMAND | MF_UNCHECKED ); } break; case SPY_PAUSE_MESSAGES: SpyMessagePauseToggle(); break; case SPY_CLEAR_MESSAGES: ClearSpyBox(); ClearMessageCount(); break; case SPY_MESSAGES_ASCFG: if( AutoSaveConfig ) { check = MF_UNCHECKED; AutoSaveConfig = FALSE; } else { AutoSaveConfig = TRUE; check = MF_CHECKED; } CheckMenuItem( SpyMenu, SPY_MESSAGES_ASCFG, check ); break; case SPY_MESSAGES_SAVE: DoSaveSpyConfig(); break; case SPY_MESSAGES_LOAD: DoLoadSpyConfig(); break; case SPY_MESSAGES_WATCH: case SPY_MESSAGES_STOP: DoMessageDialog( hwnd, cmdid ); break; case SPY_OFFON: if( SpyState != NEITHER ) { SetSpyState( !SpyState ); } break; case SPY_STOP: disableSpy(); ClearSelectedWindows(); SetWindowText( hwnd, SpyName ); break; case SPY_ANOTHER_WINDOW: if( SpyState == NEITHER || spyAll ) { SendMessage( hwnd, WM_COMMAND, GET_WM_COMMAND_MPS( SPY_WINDOW, 0, 0 ) ); } else { SendMessage( hwnd, WM_COMMAND, GET_WM_COMMAND_MPS( SPY_ADD_WINDOW, 0, 0 ) ); } break; case SPY_PEEK_WINDOW: case SPY_ADD_WINDOW: case SPY_WINDOW: setUpForPick( hwnd, cmdid ); break; case SPY_ALL_WINDOWS: doSpyAll( hwnd, !spyAll ); if( spyAll ) { SetSpyState( ON ); } break; } break; #ifdef __NT__ case WM_NOTIFY: if( ((NMHDR *)lparam)->code == NM_DBLCLK && ((NMHDR *)lparam)->idFrom == SPY_LIST_BOX ) { DoMessageSelDialog( hwnd ); } break; #endif case WM_CLOSE: PostMessage( hwnd, WM_COMMAND, GET_WM_COMMAND_MPS( SPY_EXIT, 0, 0 ) ); break; case WM_ENDSESSION: if( wparam ) { SpyFini(); } break; case WM_DESTROY: HintWndDestroy( StatusHdl ); HintFini(); StatusWndFini(); DestroyMonoFonts(); DestroySpyTool(); WWinHelp( hwnd, "spy.hlp", HELP_QUIT, 0 ); PostQuitMessage( 0 ); break; case WM_MOVE: GetWindowRect( hwnd, &area ); if( !SpyMainWndInfo.minimized ) { SpyMainWndInfo.last_xpos = SpyMainWndInfo.xpos; SpyMainWndInfo.last_ypos = SpyMainWndInfo.ypos; SpyMainWndInfo.xpos = area.left; SpyMainWndInfo.ypos = area.top; } break; case WM_SIZE: if( wparam != SIZE_MAXIMIZED && wparam != SIZE_MINIMIZED ) { GetWindowRect( hwnd, &area ); SpyMainWndInfo.xsize = area.right - area.left; SpyMainWndInfo.ysize = area.bottom - area.top; } else { SpyMainWndInfo.xpos = SpyMainWndInfo.last_xpos; SpyMainWndInfo.ypos = SpyMainWndInfo.last_ypos; } SpyMainWndInfo.minimized = ( wparam == SIZE_MINIMIZED ); GetClientRect( hwnd, &area ); area.top = area.bottom - statusHite; hinthwnd = GetHintHwnd( StatusHdl ); MoveWindow( hinthwnd, area.left, area.top, area.right - area.left, statusHite, TRUE ); ResizeSpyBox( LOWORD( lparam ), HIWORD( lparam ) ); ResizeSpyTool( LOWORD( lparam ), HIWORD( lparam ) ); showHintBar( hwnd ); return( DefWindowProc( hwnd, msg, wparam, lparam ) ); break; #if defined( __NT__ ) case WM_ERASEBKGND: { static RECT r; GetClientRect( hwnd, &r ); FillRect( (HDC)wparam, &r, (HBRUSH)(COLOR_BTNFACE + 1) ); return 1; } #endif default: return( DefWindowProc( hwnd, msg, wparam, lparam ) ); } return( 0 ); } /* SpyWindowProc */