📄 wdectool.c
字号:
}
void WdeSetBaseObject ( WORD menu_selection )
{
HMENU menu;
OBJ_ID obj_id;
WORD id;
WdeToolBar *tbar;
if( !WdeGetNumRes() ) {
return;
}
tbar = WdeControls;
menu = WdeGetResMenuHandle();
id = WdeGetCToolID();
obj_id = -1;
if( ( id != (WORD)-1 ) && ( id != menu_selection ) ) {
CheckMenuItem( menu, id, MF_BYCOMMAND | MF_UNCHECKED );
WdeSetToolBarItemState( tbar, id, BUTTON_UP );
}
if( menu_selection != (WORD)-1 ) {
obj_id = WdeGetOBJIDFromMenu( menu_selection );
if( obj_id != -1 ) {
SetBaseObjType( obj_id );
CheckMenuItem( menu, menu_selection, MF_BYCOMMAND | MF_CHECKED );
WdeSetToolBarItemState( tbar, menu_selection, BUTTON_DOWN );
WdeSetStatusText( NULL, "", TRUE );
}
}
}
WORD WdeGetMenuFromOBJID ( OBJ_ID id )
{
int i;
for ( i = 0; WdeControlBits[i].up != NULL; i++ ) {
if ( WdeControlBits[i].obj_id == id ) {
return ( WdeControlBits[i].id );
}
}
return ( -1 );
}
OBJ_ID WdeGetOBJIDFromMenu ( WORD id )
{
int i;
for ( i = 0; WdeControlBits[i].up != NULL; i++ ) {
if ( WdeControlBits[i].id == id ) {
return ( WdeControlBits[i].obj_id );
}
}
return ( -1 );
}
Bool WdeCreateControlsToolBar ( void )
{
RECT t, r, screen;
HWND parent;
WORD id;
char *text;
if ( WdeControls ) {
return ( TRUE );
}
WdeSetStatusText( NULL, "", FALSE );
WdeSetStatusByID( WDE_CREATINGTOOLBOX, -1 );
parent = WdeGetMainWindowHandle();
WdeGetCntlTBarPosOption( &t );
if( ( t.left == t.right ) &&
( t.top == t.bottom ) ) {
GetWindowRect ( parent, &r );
t.left = r.right - CONTROLS_DEFX;
t.top = r.top + CONTROLS_INSET;
t.right = r.right;
t.bottom = t.top + CONTROLS_DEFY;
}
GetWindowRect( GetDesktopWindow(), &screen );
if( !IntersectRect ( &r, &screen, &t ) ) {
r.right = t.right - t.left;
r.bottom = t.bottom - t.top;
r.left = min ( 0, (screen.right - r.right ) )/2;
r.top = min ( 0, (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 ) {
return( FALSE );
}
text = WdeAllocRCString( WDE_TOOLBOXCAPTION );
SendMessage( WdeControls->win, WM_SETTEXT, 0, (LPARAM)(LPCSTR)text );
if( text ) {
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 ) {
WdeFreeRCString( text );
}
if( WdeGetNumRes() ) {
id = WdeGetMenuFromOBJID( GetBaseObjType() );
if( id != (WORD)-1 ) {
WdeSetToolBarItemState( WdeControls, id, BUTTON_DOWN );
}
WdeSetStickyMode( WdeStickyMode );
}
WdeSetStatusReadyText( );
return( TRUE );
}
void WdeHandleShowToolsMenu ( void )
{
if ( WdeControls ) {
WdeDestroyControls ();
WdeSetOption ( WdeOptIsCntlsTBarVisible, FALSE );
} else {
WdeCreateControlsToolBar ();
WdeSetOption ( WdeOptIsCntlsTBarVisible, TRUE );
}
}
void WdeCToolHelpHook ( HWND hwnd, WPARAM wParam, BOOL pressed )
{
_wde_touch(hwnd);
WdeHandleToolHint ( wParam, pressed );
}
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;
UINT cid;
Bool ignore_msg;
Bool ret;
ignore_msg = FALSE;
if( WdeGetNumRes() && !WdeInCleanup() ) {
obj = WdeGetCurrentDialog();
if( obj && 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) ) {
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, 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:
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 ) {
WdeFreeRCString( text );
}
WdeCloseToolBar( tbar );
break;
}
return ( ret );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -