Changeset 402f042 in nscp for modules


Ignore:
Timestamp:
02/16/05 23:29:22 (8 years ago)
Author:
Michael Medin <michael@…>
Branches:
master, 0.4.0, 0.4.1, 0.4.2, stable
Children:
55159fd
Parents:
8cf56a5
Message:

Changed dialog code and log view to work better

Location:
modules/SysTray
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • modules/SysTray/SysTray.cpp

    ra0528c4 r402f042  
    3434  } 
    3535} 
    36  
    3736bool SysTray::loadModule() { 
    3837  hThread_ = ::CreateThread(NULL, NULL, threadProc, this, NULL, &dwThreadID_); 
  • modules/SysTray/TrayIcon.cpp

    ra0528c4 r402f042  
    22#include ".\trayicon.h" 
    33#include "resource.h" 
     4#include <strEx.h> 
    45#include <ShellAPI.h> 
    56 
    67namespace TrayIcon 
    78{ 
    8   HWND ghDlgWnd; 
     9  HWND ghDlgWnd = NULL; 
    910  HANDLE ghMutex; 
    1011  std::string defaultCommand; 
     
    3536} 
    3637 
    37 BOOL CALLBACK TrayIcon::DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) 
     38INT_PTR CALLBACK TrayIcon::DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) 
    3839{ 
     40  DWORD tmp = 0; 
    3941  switch (uMsg)  
    4042  { 
    4143  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; 
    4646    break; 
    4747 
     
    5353      POINT pt; 
    5454      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); 
    5757      DestroyMenu(hMenu); 
    5858      switch (cmd) { 
     
    6868        break; 
    6969      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        } 
    7174      } 
     75      return TRUE; 
    7276    } 
    73     break; 
    74   case WM_MY_CLOSE: 
    75     EndDialog(ghDlgWnd, 0); 
    7677    break; 
    7778  } 
    7879  return FALSE; 
    7980} 
    80 void TrayIcon::addIcon(void) { 
     81void TrayIcon::addIcon(HWND hWnd) { 
     82  assert(NSCModuleWrapper::getModule() != NULL); 
     83  assert(hWnd != NULL); 
     84 
    8185  NOTIFYICONDATA ndata; 
    8286  ndata.cbSize=sizeof(NOTIFYICONDATA); 
    83   ndata.hWnd=ghDlgWnd; 
     87  ndata.hWnd=hWnd; 
    8488  ndata.uID=2000; 
    8589  ndata.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP; 
     
    101105  if (!ghMutex) 
    102106    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); 
    104122  ::ReleaseMutex(ghMutex); 
    105123} 
    106124void TrayIcon::destroyDialog(void) { 
    107   ::SendMessage(ghDlgWnd, WM_MY_CLOSE, NULL, NULL); 
     125  ::PostMessage(ghDlgWnd, WM_MY_CLOSE, NULL, NULL); 
    108126} 
    109127bool TrayIcon::waitForTermination(DWORD timeout /* = 5000L */) { 
  • modules/SysTray/TrayIcon.h

    ra0528c4 r402f042  
    66namespace TrayIcon 
    77{ 
    8   BOOL CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); 
     8  INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); 
    99  BOOL CALLBACK InjectDialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); 
    1010  void createDialog(void); 
    1111  void destroyDialog(void); 
    1212  void removeIcon(void); 
    13   void addIcon(void); 
     13  void addIcon(HWND hWnd); 
    1414  bool waitForTermination(DWORD timeout = 5000L); 
    1515} 
  • modules/SysTray/stdafx.h

    ra0528c4 r402f042  
    1414#include <tchar.h> 
    1515#include <string> 
     16//#include <iostream> 
     17 
    1618#include <NSCHelper.h> 
    1719 
     20#include <assert.h> 
Note: See TracChangeset for help on using the changeset viewer.