MainFrame.cpp
上传用户:kklily621
上传日期:2013-06-25
资源大小:252k
文件大小:6k
- // MainFrame.cpp : implementation file
- //
- #include "stdafx.h"
- #include "..Property.h"
- #include "MainFrame.h"
- #include "..MainSheet.h"
- #include "....commondebug.h"
- #include "..GuiRes.h"
- #include "..MainSheet.h"
- #include "..PacketMonitor.h"
- #include "..LogQuery.h"
- #include "..About.h"
- #include "..Acl.h"
- #include "..SystemSet.h"
- #include "....commonxlogfile.h"
- #include "..Splash.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- //=============================================================================================
- // CMainFrame
- extern CPropertyApp theApp;
- extern CAclFile m_AclFile;
- CMainSheet *dlg = NULL;
- CSystemTray m_TrayIcon;
- BOOL m_IsSplash = FALSE;
- int m_MessageIndex = 0;
- IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
- CMainFrame::CMainFrame()
- {
- }
- CMainFrame::~CMainFrame()
- {
- }
- BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
- //{{AFX_MSG_MAP(CMainFrame)
- ON_WM_CREATE()
- ON_WM_TIMER()
- //}}AFX_MSG_MAP
- ON_MESSAGE(WM_ICON_NOTIFY, OnTrayNotification)
- ON_MESSAGE(WM_SESSION_NOTIFY, OnSessionNotification)
- ON_MESSAGE(WM_QUERY_ACL_NOTIFY, OnAclNotification)
- ON_MESSAGE(WM_NET_MESSAGE, OnShowNetMessage)
- END_MESSAGE_MAP()
- //=============================================================================================
- // CMainFrame message handlers
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
- return -1;
- if (!m_TrayIcon.Create(this, WM_ICON_NOTIFY, GUI_APP_CAPTION, theApp.LoadIcon(IDI_SMALL_PASS), IDR_MAINFRAME))
- return -1;
- theApp.SetTrayIcon();
- if(!m_TrayIcon.SetMenuDefaultItem(2,TRUE))
- return -1;
-
- DWORD dwFlags;
- if(InternetGetConnectedState(&dwFlags, 0))
- theApp.m_DownloadCommand.InitNetCommand();
- else
- SetTimer(1, 600000, NULL);
- if(!theApp.m_RegisterRequest.m_IsUploaded)
- SetTimer(2, 300000, NULL);
- // CG: The following line was added by the Splash Screen component.
CSplashWnd::ShowSplashScreen(this);
- return 0;
- }
- LRESULT CMainFrame::OnTrayNotification(WPARAM wParam, LPARAM lParam)
- {
- if(wParam == IDR_MAINFRAME && lParam == WM_LBUTTONDOWN)
- {
- if(m_MessageIndex != 0)
- {
- int tmpIndex = m_MessageIndex;
- m_MessageIndex = 0;
- AfxMessageBox(theApp.m_sMessage[tmpIndex], MB_ICONINFORMATION);
- return 0;
- }
- lParam = WM_LBUTTONDBLCLK;
- }
- return m_TrayIcon.OnTrayNotification(wParam, lParam);
- }
- void CMainFrame::InitMainSheet(int iActivePage)
- {
- theApp.SetTrayIcon();
- if(dlg != NULL)
- {
- if(iActivePage >= 0)
- dlg->SetActivePage(iActivePage);
- if(!dlg->IsWindowVisible())
- dlg->ShowWindow(SW_SHOW);
-
- dlg->SetForegroundWindow();
- return;
- }
- CLogQuery mLogQuery;
- CPacketMonitor mPacketMonitor;
- CAcl mAcl;
- CSystemSet mSystemSet;
- CAbout mAbout;
- dlg = new CMainSheet(GUI_APP_CAPTION);
- dlg->AddPage(&mPacketMonitor);
- dlg->AddPage(&mLogQuery);
- dlg->AddPage(&mAcl);
- dlg->AddPage(&mSystemSet);
- dlg->AddPage(&mAbout);
- dlg->SetLogoText(GUI_APP_LOGO);
- if(iActivePage >= 0)
- dlg->SetActivePage(iActivePage);
- dlg->DoModal();
- delete dlg;
- dlg = NULL;
- ODS(_T("XFILTER: release dlg = null"))
- }
- LRESULT CMainFrame::OnSessionNotification(UINT wParam, LONG lParam)
- {
- static CXLogFile m_LogFile;
- if(theApp.m_XfIoControl == NULL)
- return XERR_SUCCESS;
- XFILTER_IO_CONTROL ioControl;
- ioControl.isession = wParam;
- ioControl.session = new SESSION;
- theApp.m_XfIoControl(IO_CONTROL_GET_SESSION, &ioControl);
- if(ioControl.session->s == 0)
- return XERR_SUCCESS;
- CPacketMonitor::InsertOneList(
- CPacketMonitor::m_pListPacketMonitor,
- ioControl.session,
- CPacketMonitor::IsMonitor,
- CPacketMonitor::IsScroll
- );
-
- if(CAclFile::GetBit(m_AclFile.mAclHeader.bSet, 0))
- m_LogFile.AddLog(ioControl.session, m_AclFile.mAclHeader.uiLogSize);
- if(ioControl.session->bAction == ACL_ACTION_DENY)
- {
- if(CAclFile::GetBit(m_AclFile.mAclHeader.bSet, 2))
- MessageBeep(0xFFFFFFFF);
- if(!m_IsSplash && CAclFile::GetBit(m_AclFile.mAclHeader.bSet, 3))
- {
- DWORD dwThreadId;
- ::CreateThread(NULL, 0, SplashIcon, 0, 0, &dwThreadId);
- }
- }
- free(ioControl.session);
- return XERR_SUCCESS;
- }
- LRESULT CMainFrame::OnAclNotification(UINT wParam, LONG lParam)
- {
- if(wParam < 0 || wParam > MAX_QUERY_SESSION)
- return XERR_INVALID_PARAMETER;
- XFILTER_IO_CONTROL ioControl;
- ioControl.isession = wParam;
- theApp.m_XfIoControl(IO_CONTROL_GET_QUERY_SESSION, &ioControl);
- CAcl::AddAclQuery(ioControl.sPathName, FALSE);
-
- theApp.m_XfIoControl(IO_CONTROL_SET_QUERY_SESSION, &ioControl);
- return XERR_SUCCESS;
- }
- DWORD WINAPI SplashIcon(LPVOID pVoid)
- {
- m_IsSplash = TRUE;
- for(int i = 0; i < 3; i++)
- {
- m_TrayIcon.SetIcon(IDI_SMALL_ALERT);
- if(i == 2)
- continue;
- Sleep(180);
- m_TrayIcon.SetIcon(IDI_SMALL_NULL);
- Sleep(400);
- }
-
- m_IsSplash = FALSE;
- return 0;
- }
- void CMainFrame::OnTimer(UINT nIDEvent)
- {
- if(nIDEvent == 1)
- {
- DWORD dwFlags;
- if(InternetGetConnectedState(&dwFlags, 0))
- {
- theApp.m_DownloadCommand.InitNetCommand();
- KillTimer(nIDEvent);
- }
- }
- else if(nIDEvent == 2)
- {
- if(theApp.m_DownloadCommand.PreUpload())
- KillTimer(nIDEvent);
- }
-
- CFrameWnd::OnTimer(nIDEvent);
- }
- LRESULT CMainFrame::OnShowNetMessage(UINT wParam, LONG lParam)
- {
- if(wParam <= 0 || wParam > MAX_NET_COMMAND)
- return XERR_INVALID_PARAMETER;
- ODS(theApp.m_sMessage[wParam]);
-
- static DWORD dwThreadId = NULL;
- if(dwThreadId == NULL)
- ::CreateThread(NULL, 0, SplashMessage, 0, 0, &dwThreadId);
- return XERR_SUCCESS;
- }
- DWORD WINAPI SplashMessage(LPVOID pVoid)
- {
- for(int i = 0; i < MAX_NET_COMMAND; i++)
- {
- if(theApp.m_sMessage[i][0] != ' ')
- {
- m_MessageIndex = i;
- m_IsSplash = TRUE;
- while(m_MessageIndex)
- {
- m_TrayIcon.SetIcon(IDI_SMALL_MESSAGE);
- Sleep(180);
- m_TrayIcon.SetIcon(IDI_SMALL_NULL);
- Sleep(400);
- }
- theApp.SetTrayIcon();
- m_IsSplash = FALSE;
- }
- }
-
- ODS("Exit Thread SplashMessage...");
- return 0;
- }