1 /* 2 * Copyright 2003, 2004 Martin Fuchs 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 19 20 // 21 // Explorer and Desktop clone 22 // 23 // desktopbar.h 24 // 25 // Martin Fuchs, 22.08.2003 26 // 27 28 29 #define CLASSNAME_EXPLORERBAR TEXT("Shell_TrayWnd") 30 #define TITLE_EXPLORERBAR TEXT("") // use an empty window title, so windows taskmanager does not show the window in its application list 31 32 33 #define DESKTOPBARBAR_HEIGHT (GetSystemMetrics(SM_CYSIZE) + 5 * GetSystemMetrics(SM_CYEDGE)) 34 #define REBARBAND_HEIGHT (GetSystemMetrics(SM_CYSIZE) + 2 * GetSystemMetrics(SM_CYEDGE)) 35 36 37 #define IDC_START 0x1000 38 #define IDC_LOGOFF 0x1001 39 #define IDC_SHUTDOWN 0x1002 40 #define IDC_LAUNCH 0x1003 41 #define IDC_START_HELP 0x1004 42 #define IDC_SEARCH_FILES 0x1005 43 #define IDC_SEARCH_COMPUTER 0x1006 44 #define IDC_SETTINGS 0x1007 45 #define IDC_ADMIN 0x1008 46 #define IDC_DOCUMENTS 0x1009 47 #define IDC_RECENT 0x100A 48 #define IDC_FAVORITES 0x100B 49 #define IDC_PROGRAMS 0x100C 50 #define IDC_EXPLORE 0x100D 51 #define IDC_NETWORK 0x100E 52 #define IDC_CONNECTIONS 0x100F 53 #define IDC_DRIVES 0x1010 54 #define IDC_CONTROL_PANEL 0x1011 55 #define IDC_SETTINGS_MENU 0x1012 56 #define IDC_PRINTERS 0x1013 57 #define IDC_PRINTERS_MENU 0x1014 58 #define IDC_BROWSE 0x1015 59 #define IDC_SEARCH_PROGRAM 0x1016 60 #define IDC_SEARCH 0x1017 61 #define IDC_TERMINATE 0x1018 62 #define IDC_RESTART 0x1019 63 64 #define IDC_FIRST_MENU 0x3000 65 66 // hotkeys 67 #define IDHK_EXPLORER 0 68 #define IDHK_RUN 1 69 #define IDHK_DESKTOP 2 70 #define IDHK_LOGOFF 3 71 #define IDHK_STARTMENU 4 72 73 /// desktop bar window, also known as "system tray" 74 struct DesktopBar : public 75 #ifdef __REACTOS__ 76 TrayIconControllerTemplate< 77 OwnerDrawParent<Window> > 78 #else 79 OwnerDrawParent<Window> 80 #endif 81 { 82 #ifdef __REACTOS__ 83 typedef TrayIconControllerTemplate< 84 OwnerDrawParent<Window> > super; 85 #else 86 typedef OwnerDrawParent<Window> super; 87 #endif 88 89 DesktopBar(HWND hwnd); 90 ~DesktopBar(); 91 92 static HWND Create(); 93 94 protected: 95 RECT _work_area_org; 96 int _taskbar_pos; 97 98 LRESULT Init(LPCREATESTRUCT pcs); 99 LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam); 100 int Notify(int id, NMHDR* pnmh); 101 int Command(int id, int code); 102 103 void Resize(int cx, int cy); 104 void ControlResize(WPARAM wparam, LPARAM lparam); 105 void RegisterHotkeys(); 106 void ProcessHotKey(int id_hotkey); 107 void ShowOrHideStartMenu(); 108 LRESULT ProcessCopyData(COPYDATASTRUCT* pcd); 109 110 WindowHandle _hwndTaskBar; 111 WindowHandle _hwndNotify; 112 WindowHandle _hwndQuickLaunch; 113 WindowHandle _hwndrebar; 114 /* Needed to make the StartButton pushed, if it's called by windowskey: SC_TASKLIST command */ 115 WindowHandle _hwndStartButton; 116 117 struct StartMenuRoot* _startMenuRoot; 118 119 #ifdef __REACTOS__ 120 TrayIcon _trayIcon; 121 122 void AddTrayIcons(); 123 virtual void TrayClick(UINT id, int btn); 124 virtual void TrayDblClick(UINT id, int btn); 125 #else 126 const UINT WM_TASKBARCREATED; 127 #endif 128 }; 129 130 131 /// special "Start" button with one click activation 132 struct StartButton : public PictureButton 133 { 134 typedef PictureButton super; 135 136 StartButton(HWND hwnd); 137 138 protected: 139 LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam); 140 }; 141