📄 gadgets.c
字号:
ShowWindow (hwndClient, SW_HIDE) ;
}
else
{
ShowWindow (hwndClient, SW_SHOW) ;
GetClientRect (hwnd, &r) ;
PostMessage (hwnd, WM_SIZE, 0,
MAKELPARAM (r.right, r.bottom)) ;
}
break ;
}
// Clear contents of notification window
case IDM_NOTIFICATIONS_CLEAR :
ClearNotificationList () ;
break;
}
return 0;
}
case WM_INITMENU :
{
BOOL bCheck ;
HMENU hmenu = (HMENU) wParam ;
MenuCheckMark (hmenu, IDM_IGNORESIZE, bIgnoreSize) ;
MenuCheckMark (hmenu, IDM_STAT_IGNORESIZE, bIgnoreSize) ;
// Toolbar menu items.
MenuCheckMark (hmenu, IDM_STRINGS, bStrings) ;
MenuCheckMark (hmenu, IDM_LARGEICONS, bLargeIcons) ;
MenuCheckMark (hmenu, IDM_SMALLICONS, !bLargeIcons) ;
MenuCheckMark (hmenu, IDM_COMBOBOX, bComboBox) ;
bCheck = (dwToolBarStyles & CCS_NODIVIDER) ;
MenuCheckMark (hmenu, IDM_NODIVIDER, bCheck) ;
bCheck = (dwToolBarStyles & TBSTYLE_WRAPABLE) ;
MenuCheckMark(hmenu, IDM_WRAPABLE, bCheck) ;
bCheck = ((dwToolBarStyles & 3) == CCS_TOP) ;
MenuCheckMark(hmenu, IDM_TOP, bCheck) ;
bCheck = ((dwToolBarStyles & 3) == CCS_BOTTOM) ;
MenuCheckMark (hmenu, IDM_BOTTOM, bCheck) ;
bCheck = ((dwToolBarStyles & 3) == CCS_NOMOVEY) ;
MenuCheckMark (hmenu, IDM_NOMOVEY, bCheck) ;
bCheck = (dwToolBarStyles & CCS_NOPARENTALIGN) ;
MenuCheckMark (hmenu, IDM_NOPARENTALIGN, bCheck) ;
bCheck = (dwToolBarStyles & CCS_NORESIZE) ;
MenuCheckMark (hmenu, IDM_NORESIZE, bCheck) ;
bCheck = (dwToolBarStyles & CCS_ADJUSTABLE) ;
MenuCheckMark (hmenu, IDM_ADJUSTABLE, bCheck) ;
bCheck = (dwToolBarStyles & TBSTYLE_ALTDRAG) ;
MenuCheckMark (hmenu, IDM_ALTDRAG, bCheck) ;
bCheck = (dwToolBarStyles & TBSTYLE_TOOLTIPS) ;
MenuCheckMark (hmenu, IDM_TOOLTIPS, bCheck) ;
// Status bar menu items.
bCheck = (dwStatusBarStyles & SBARS_SIZEGRIP) ;
MenuCheckMark (hmenu, IDM_STAT_SIZEGRIP, bCheck) ;
bCheck = ((dwStatusBarStyles & 3) == CCS_TOP) ;
MenuCheckMark (hmenu, IDM_STAT_TOP, bCheck) ;
bCheck = ((dwStatusBarStyles & 3) == CCS_BOTTOM) ;
MenuCheckMark (hmenu, IDM_STAT_BOTTOM, bCheck) ;
bCheck = ((dwStatusBarStyles & 3) == CCS_NOMOVEY) ;
MenuCheckMark (hmenu, IDM_STAT_NOMOVEY, bCheck) ;
bCheck = (dwStatusBarStyles & CCS_NOPARENTALIGN) ;
MenuCheckMark (hmenu, IDM_STAT_NOPARENTALIGN, bCheck) ;
bCheck = (dwStatusBarStyles & CCS_NORESIZE) ;
MenuCheckMark (hmenu, IDM_STAT_NORESIZE, bCheck) ;
// View menu items.
bCheck = IsWindowVisible (hwndToolBar) ;
MenuCheckMark (hmenu, IDM_VIEW_TOOLBAR, bCheck) ;
bCheck = IsWindowVisible (hwndStatusBar) ;
MenuCheckMark (hmenu, IDM_VIEW_STATUS, bCheck) ;
bCheck = (hwndNotify != NULL) ;
MenuCheckMark (hmenu, IDM_VIEW_NOTIFICATIONS, bCheck) ;
return 0 ;
}
case WM_MENUSELECT :
return Statusbar_MenuSelect (hwnd, wParam, lParam) ;
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
case WM_NOTIFY :
{
LPNMHDR pnmh = (LPNMHDR) lParam ;
int idCtrl = (int) wParam ;
// Display notification details in notify window
DisplayNotificationDetails (wParam, lParam) ;
// Toolbar notifications
if ((pnmh->code >= TBN_LAST) &&
(pnmh->code <= TBN_FIRST))
{
return ToolBarNotify (hwnd, wParam, lParam) ;
}
// Fetch tooltip text
if (pnmh->code == TTN_NEEDTEXT)
{
LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT) lParam ;
CopyToolTipText (lpttt) ;
}
return 0 ;
}
case WM_SIZE :
{
int cx = LOWORD (lParam) ;
int cy = HIWORD (lParam) ;
int cyStatus ;
int cyTB ;
int x, y ;
DWORD dwStyle ;
RECT rWindow ;
// Ignore size message to allow auto-move and auto-size
// features to be more clearly seen.
if (bIgnoreSize)
return 0 ;
// Adjust toolbar size.
if (IsWindowVisible (hwndToolBar))
{
dwStyle = GetWindowLong (hwndToolBar, GWL_STYLE) ;
if (dwStyle & CCS_NORESIZE)
{
MoveWindow (hwndToolBar,
0, 0, cx, cyToolBar, FALSE) ;
}
else
{
ToolBar_AutoSize (hwndToolBar) ;
}
InvalidateRect (hwndToolBar, NULL, TRUE) ;
GetWindowRect (hwndToolBar, &rWindow) ;
ScreenToClient (hwnd, (LPPOINT) &rWindow.left) ;
ScreenToClient (hwnd, (LPPOINT) &rWindow.right) ;
cyTB = rWindow.bottom - rWindow.top ;
}
else
{
cyTB = 0 ;
}
// Adjust status bar size.
if (IsWindowVisible (hwndStatusBar))
{
GetWindowRect (hwndStatusBar, &rWindow) ;
cyStatus = rWindow.bottom - rWindow.top ;
MoveWindow (hwndStatusBar, 0, cy - cyStatus,
cx, cyStatus, TRUE) ;
}
else
{
cyStatus = 0 ;
}
// Adjust client window size.
x = 0 ;
y = cyTB ;
cy = cy - (cyStatus + cyTB) ;
MoveWindow (hwndClient, x, y, cx, cy, TRUE) ;
return 0;
}
default:
return (DefWindowProc (hwnd, mMsg, wParam, lParam)) ;
}
}
//-------------------------------------------------------------------
LRESULT CALLBACK
ClientWndProc (HWND hwnd, UINT mMsg, WPARAM wParam, LPARAM lParam)
{
static COLORREF crBack ;
static HBRUSH hbr ;
switch (mMsg)
{
case WM_CREATE :
hwndNotify = ViewNotificationsToggle (hwnd) ;
crBack = GetSysColor (COLOR_APPWORKSPACE) ;
hbr = CreateSolidBrush (crBack) ;
return 0 ;
case WM_DESTROY :
DeleteObject (hbr) ;
return 0 ;
case WM_CTLCOLORLISTBOX :
{
DefWindowProc (hwnd, mMsg, wParam, lParam) ;
SetBkColor ((HDC) wParam, crBack) ;
SetBkMode ((HDC) wParam, TRANSPARENT) ;
return (LRESULT) (HBRUSH) hbr ;
}
case WM_SIZE :
{
HWND hwndNotify = GetWindow (hwnd, GW_CHILD) ;
int cx = LOWORD (lParam) ;
int cy = HIWORD (lParam) ;
// Ignore if notification window is absent.
if (hwndNotify != NULL)
{
MoveWindow (hwndNotify, 0, 0, cx, cy, TRUE) ;
}
return 0 ;
}
default :
return (DefWindowProc (hwnd, mMsg, wParam, lParam)) ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -