Changeset 2eeb220 in nscp
- Timestamp:
- 02/16/05 23:29:22 (8 years ago)
- Children:
- 05bfaf2
- Parents:
- c67f92f
- Location:
- trunk/modules/SysTray
- Files:
-
- 5 edited
-
SysTray.aps (modified) (previous)
-
SysTray.cpp (modified) (1 diff)
-
TrayIcon.cpp (modified) (5 diffs)
-
TrayIcon.h (modified) (1 diff)
-
stdafx.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/modules/SysTray/SysTray.cpp
re0705d4 r2eeb220 34 34 } 35 35 } 36 37 36 bool SysTray::loadModule() { 38 37 hThread_ = ::CreateThread(NULL, NULL, threadProc, this, NULL, &dwThreadID_); -
trunk/modules/SysTray/TrayIcon.cpp
re0705d4 r2eeb220 2 2 #include ".\trayicon.h" 3 3 #include "resource.h" 4 #include <strEx.h> 4 5 #include <ShellAPI.h> 5 6 6 7 namespace TrayIcon 7 8 { 8 HWND ghDlgWnd ;9 HWND ghDlgWnd = NULL; 9 10 HANDLE ghMutex; 10 11 std::string defaultCommand; … … 35 36 } 36 37 37 BOOLCALLBACK TrayIcon::DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)38 INT_PTR CALLBACK TrayIcon::DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) 38 39 { 40 DWORD tmp = 0; 39 41 switch (uMsg) 40 42 { 41 43 case WM_INITDIALOG: 42 ShowWindow(hwndDlg, SW_HIDE); 43 SetWindowPos(hwndDlg,NULL,-10,-10,0,0,SWP_NOZORDER|SWP_NOMOVE); 44 ghDlgWnd = hwndDlg; 45 addIcon(); 44 addIcon(hwndDlg); 45 // return TRUE; 46 46 break; 47 47 … … 53 53 POINT pt; 54 54 GetCursorPos(&pt); 55 SetForegroundWindow( hwndDlg);56 int cmd = TrackPopupMenu(hSubMenu, TPM_LEFTALIGN|TPM_RETURNCMD, pt.x, pt.y, 0, hwndDlg, &r);55 SetForegroundWindow(ghDlgWnd); 56 int cmd = TrackPopupMenu(hSubMenu, TPM_LEFTALIGN|TPM_RETURNCMD, pt.x, pt.y, 0, ghDlgWnd, &r); 57 57 DestroyMenu(hMenu); 58 58 switch (cmd) { … … 68 68 break; 69 69 case ID_POPUP_SHOWLOG: 70 ShellExecute(hwndDlg, "notepad", NSCModuleHelper::getSettingsString("log", "file", "").c_str(), NULL, NULL, SW_SHOWNORMAL); 70 // SE_ERR_ACCESSDENIED 71 if ((tmp = (INT)ShellExecute(ghDlgWnd, "open", (NSCModuleHelper::getBasePath() + NSCModuleHelper::getSettingsString("log", "file", "")).c_str(), NULL, NULL, SW_SHOWNORMAL))<=32) { 72 NSC_LOG_ERROR("ShellExecute failed : " + strEx::itos((INT)tmp)); 73 } 71 74 } 75 return TRUE; 72 76 } 73 break;74 case WM_MY_CLOSE:75 EndDialog(ghDlgWnd, 0);76 77 break; 77 78 } 78 79 return FALSE; 79 80 } 80 void TrayIcon::addIcon(void) { 81 void TrayIcon::addIcon(HWND hWnd) { 82 assert(NSCModuleWrapper::getModule() != NULL); 83 assert(hWnd != NULL); 84 81 85 NOTIFYICONDATA ndata; 82 86 ndata.cbSize=sizeof(NOTIFYICONDATA); 83 ndata.hWnd= ghDlgWnd;87 ndata.hWnd=hWnd; 84 88 ndata.uID=2000; 85 89 ndata.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP; … … 101 105 if (!ghMutex) 102 106 throw std::string("Could not create mutex."); 103 DialogBox(NSCModuleWrapper::getModule(),MAKEINTRESOURCE(IDD_NSTRAYDLG),NULL,DialogProc); 107 108 ghDlgWnd = ::CreateDialog(NSCModuleWrapper::getModule(),MAKEINTRESOURCE(IDD_NSTRAYDLG),NULL,DialogProc); 109 110 MSG Msg; 111 while(::GetMessage(&Msg, ghDlgWnd, 0, 0)) 112 { 113 if (Msg.message == WM_MY_CLOSE) 114 break; 115 if (!::IsWindow(ghDlgWnd) || !::IsDialogMessage(ghDlgWnd, &Msg)) { 116 ::TranslateMessage(&Msg); 117 ::DispatchMessage(&Msg); 118 } 119 } 120 121 ::DestroyWindow(ghDlgWnd); 104 122 ::ReleaseMutex(ghMutex); 105 123 } 106 124 void TrayIcon::destroyDialog(void) { 107 :: SendMessage(ghDlgWnd, WM_MY_CLOSE, NULL, NULL);125 ::PostMessage(ghDlgWnd, WM_MY_CLOSE, NULL, NULL); 108 126 } 109 127 bool TrayIcon::waitForTermination(DWORD timeout /* = 5000L */) { -
trunk/modules/SysTray/TrayIcon.h
re0705d4 r2eeb220 6 6 namespace TrayIcon 7 7 { 8 BOOLCALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);8 INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); 9 9 BOOL CALLBACK InjectDialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); 10 10 void createDialog(void); 11 11 void destroyDialog(void); 12 12 void removeIcon(void); 13 void addIcon( void);13 void addIcon(HWND hWnd); 14 14 bool waitForTermination(DWORD timeout = 5000L); 15 15 } -
trunk/modules/SysTray/stdafx.h
re0705d4 r2eeb220 14 14 #include <tchar.h> 15 15 #include <string> 16 //#include <iostream> 17 16 18 #include <NSCHelper.h> 17 19 20 #include <assert.h>
Note: See TracChangeset
for help on using the changeset viewer.








