void WdeMouseRtn( HWND win, RECT *r ) { if( GetBaseObjType() == EDIT_SELECT ) { WdeMouseRtnResize( win, r ); } else { WdeMouseRtnCreate( win, r ); } }
static bool wdeControlsHook( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { MINMAXINFO *minmax; WdeToolBar *tbar; OBJ_ID obj_id; WORD id; char *text; OBJPTR obj; WdeOrderMode mode; ctl_id cid; bool ignore_msg; bool ret; ignore_msg = FALSE; if( WdeGetNumRes() && !WdeInCleanup() ) { obj = WdeGetCurrentDialog(); if( obj != NULL && Forward( obj, GET_ORDER_MODE, &mode, NULL ) && mode != WdeSelect ) { ignore_msg = TRUE; } } if( !ignore_msg && WdeGetTestMode() ) { ignore_msg = TRUE; } if( ignore_msg ) { switch( msg ) { case WM_RBUTTONDOWN: case WM_RBUTTONDBLCLK: case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK: case WM_RBUTTONUP: case WM_LBUTTONUP: return( true ); } } if( (tbar = WdeControls) == NULL ) { if( msg == WM_GETMINMAXINFO ) { minmax = (MINMAXINFO *)lParam; minmax->ptMinTrackSize.x = 8; } return( false ); } ret = false; switch( msg ) { case WM_USER: if( WdeGetNumRes() ) { obj_id = GetBaseObjType(); id = WdeGetMenuFromOBJID( obj_id ); if( id == wParam || (wParam == IDM_STICKY_TOOLS && WdeStickyMode) ) { lParam = !lParam; } WdeHandleStickyToolPress( tbar, wParam, lParam ); } break; case WM_RBUTTONDOWN: case WM_RBUTTONDBLCLK: case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK: if( FindToolIDAtPoint( tbar->tbar, wParam, lParam, &cid ) ) { if( cid == IDM_CUSTOM1_TOOL ) { ret = !WdeIsCurrentCustControlSet( 0 ); } else if( cid == IDM_CUSTOM2_TOOL ) { ret = !WdeIsCurrentCustControlSet( 1 ); } } break; case WM_SIZE: if ( wParam != SIZE_MAXIMIZED && wParam != SIZE_MINIMIZED ) { GetWindowRect( hwnd, &tbar->last_pos ); } break; case WM_MOVE: if( !IsZoomed( hwnd ) ) { GetWindowRect( hwnd, &tbar->last_pos ); } break; case WM_GETMINMAXINFO: if( GetModuleHandle( "COMCTL32.DLL" ) == NULL ) { minmax = (MINMAXINFO *)lParam; minmax->ptMinTrackSize.x = 2 * GetSystemMetrics( SM_CXFRAME ) + tbar->info->dinfo.border_size.x + tbar->info->dinfo.button_size.x - 1; minmax->ptMinTrackSize.y = 2 * GetSystemMetrics( SM_CYFRAME ) + GetSystemMetrics(SM_CYCAPTION) + tbar->info->dinfo.border_size.y + tbar->info->dinfo.button_size.y - 1; ret = true; } break; case WM_CLOSE: WdeDestroyControls(); WdeSetOption ( WdeOptIsCntlsTBarVisible, FALSE ); ret = true; break; case WM_DESTROY: WdeControls = NULL; WdeSetCntlTBarPosOption( &tbar->last_pos ); text = WdeAllocRCString( WDE_SHOWTOOLBOX ); ModifyMenu( WdeGetResMenuHandle(), IDM_SHOW_TOOLS, MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text ); ModifyMenu( WdeGetInitialMenuHandle(), IDM_SHOW_TOOLS, MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text ); if( text != NULL ) { WdeFreeRCString( text ); } WdeCloseToolBar( tbar ); break; } return( ret ); }
static bool WdeMouseRtnCreate( HWND win, RECT *r ) { RECT *ncp; RECT rect; LIST *l; SUBOBJ_REQUEST req; OBJPTR obj; OBJPTR ro; bool adjust; POINT pt; WdeResizeRatio resizer; WdeResInfo *info; DialogSizeInfo dsize; rect = *r; /* if we are creating a dialog discard the NC area */ if( GetBaseObjType() == DIALOG_OBJ ) { ncp = WdeGetDefaultDialogNCSize(); rect.left += ncp->left; rect.top += ncp->top; rect.right -= ncp->right; rect.bottom -= ncp->bottom; if( rect.right < rect.left ) { rect.right = rect.left; } if( rect.bottom < rect.top ) { rect.bottom = rect.top; } adjust = FALSE; obj = GetMainObject(); } else { l = NULL; req.p.ty = AT_POINT; req.p.pt.x = rect.left; req.p.pt.y = rect.top; Forward( GetMainObject(), FIND_SUBOBJECTS, &req, &l ); obj = WdeIsDialogInList( l ); if( l ) { ListFree( l ); } if( obj ) { adjust = TRUE; } else { adjust = FALSE; obj = GetMainObject(); } } if( !Forward( obj, GET_RESIZER, &resizer, &ro ) ) { return( FALSE ); } if( adjust ) { if( !Forward( ro, GET_WINDOW_HANDLE, &win, NULL) ) { return( FALSE ); } GetOffset( &pt ); OffsetRect( &rect, -pt.x, -pt.y ); if( (info = WdeGetCurrentRes()) != NULL ) { MapWindowPoints( info->edit_win, win, (POINT *)&rect, 2 ); } } if( WdeScreenToDialog( NULL, &resizer, &rect, &dsize ) ) { WdeWriteObjectDimensions( (int_16)dsize.x, (int_16)dsize.y, (int_16)dsize.width, (int_16)dsize.height ); } return( TRUE ); }
bool WdeCreateControlsToolBar( void ) { RECT t, r, screen; HWND parent; int id; char *text; if( WdeControls != NULL ) { return ( true ); } WdeSetStatusText( NULL, "", false ); WdeSetStatusByID( WDE_CREATINGTOOLBOX, 0 ); parent = WdeGetMainWindowHandle(); WdeGetCntlTBarPosOption( &t ); if( t.left == t.right && t.top == t.bottom ) { GetWindowRect( parent, &r ); #ifdef __NT__ if( GetModuleHandle( "COMCTL32.DLL" ) == NULL ) { #endif t.left = r.right - CONTROLS_DEFX; t.top = r.top + CONTROLS_INSET; t.right = r.right; t.bottom = t.top + CONTROLS_DEFY; #ifdef __NT__ } else { t.left = r.right - CONTROLS_DEFXCC; t.top = r.top + CONTROLS_INSET; t.right = r.right; t.bottom = t.top + CONTROLS_DEFYCC; } #endif } GetWindowRect( GetDesktopWindow(), &screen ); if( !IntersectRect( &r, &screen, &t ) ) { r.right = t.right - t.left; r.bottom = t.bottom - t.top; r.left = 0; if( screen.right > r.right ) r.left = ( screen.right - r.right ) / 2; r.top = 0; if( screen.bottom - screen.top - r.bottom > 0 ) r.top = ( screen.bottom - screen.top - r.bottom ) / 2; r.right += r.left; r.bottom += r.top; t = r; } WdeControlsInfo->dinfo.area = t; WdeControls = WdeCreateToolBar( WdeControlsInfo, parent ); if( WdeControls == NULL ) { return( false ); } text = WdeAllocRCString( WDE_TOOLBOXCAPTION ); SendMessage( WdeControls->win, WM_SETTEXT, 0, (LPARAM)(LPCSTR)text ); if( text != NULL ) { WdeFreeRCString( text ); } text = WdeAllocRCString( WDE_HIDETOOLBOX ); ModifyMenu ( WdeGetInitialMenuHandle(), IDM_SHOW_TOOLS, MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text ); ModifyMenu ( WdeGetResMenuHandle(), IDM_SHOW_TOOLS, MF_BYCOMMAND | MF_STRING, IDM_SHOW_TOOLS, text ); if( text != NULL ) { WdeFreeRCString( text ); } if( WdeGetNumRes() ) { id = WdeGetMenuFromOBJID( GetBaseObjType() ); if( id != -1 ) { WdeSetToolBarItemState( WdeControls, id, BUTTON_DOWN ); } WdeSetStickyMode( WdeStickyMode ); } WdeSetStatusReadyText(); return( true ); }