⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gadgets.c

📁 Programming Windows 程序开发设计指南
💻 C
📖 第 1 页 / 共 2 页
字号:
                              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 + -