clamav-devel/contrib/Windows/mainfrm.cpp
6bc7cf0b
 // mainfrm.cpp : implementation of the CMainFrame class
 //
 
 /*
  *  Copyright (C) 2004 Nigel Horne <njh@bandsman.co.uk>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
48b7b4a7
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  *  MA 02110-1301, USA.
6bc7cf0b
  */
 #include "stdafx.h"
 #include "mainfrm.h"
 #include "resource.h"
 #include "clamav.h"
 
 #ifdef _DEBUG
 #undef THIS_FILE
 static char BASED_CODE THIS_FILE[] = __FILE__;
 #endif
 
 
 /////////////////////////////////////////////////////////////////////////////
 // CMainFrame
 
 IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
 
 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
 	//{{AFX_MSG_MAP(CMainFrame)
 	ON_WM_CREATE()
 	ON_WM_DROPFILES()
 	//}}AFX_MSG_MAP
 	// Global help commands
 	ON_COMMAND(ID_HELP_INDEX, CFrameWnd::OnHelpIndex)
 	ON_COMMAND(ID_HELP_USING, CFrameWnd::OnHelpUsing)
 	ON_COMMAND(ID_HELP, CFrameWnd::OnHelp)
 	ON_COMMAND(ID_CONTEXT_HELP, CFrameWnd::OnContextHelp)
 	ON_COMMAND(ID_DEFAULT_HELP, CFrameWnd::OnHelpIndex)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
 // arrays of IDs used to initialize control bars
 	
 // toolbar buttons - IDs are command buttons
 static UINT BASED_CODE buttons[] =
 {
 	// same order as in the bitmap 'toolbar.bmp'
 	ID_FILE_NEW,
 	ID_FILE_OPEN,
 	ID_FILE_SAVE,
 		ID_SEPARATOR,
 	ID_EDIT_CUT,
 	ID_EDIT_COPY,
 	ID_EDIT_PASTE,
 		ID_SEPARATOR,
 	ID_FILE_PRINT,
 	ID_APP_ABOUT,
 	ID_CONTEXT_HELP,
 };
 
 static UINT BASED_CODE indicators[] =
 {
 	ID_SEPARATOR,           // status line indicator
 	ID_INDICATOR_CAPS,
 	ID_INDICATOR_NUM,
 	ID_INDICATOR_SCRL,
 };
 
 /////////////////////////////////////////////////////////////////////////////
 // CMainFrame construction/destruction
 
 CMainFrame::CMainFrame()
 {
 	// TODO: add member initialization code here
 	
 }
 
 CMainFrame::~CMainFrame()
 {
 }
 
 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
 	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
 		return -1;
 
 	
 	if (!m_wndToolBar.Create(this) ||
 		!m_wndToolBar.LoadBitmap(IDR_MAINFRAME) ||
 		!m_wndToolBar.SetButtons(buttons,
 		  sizeof(buttons)/sizeof(UINT)))
 	{
 		TRACE0("Failed to create toolbar\n");
 		return -1;      // fail to create
 	}
 
 	if (!m_wndStatusBar.Create(this) ||
 		!m_wndStatusBar.SetIndicators(indicators,
 		  sizeof(indicators)/sizeof(UINT)))
 	{
 		TRACE0("Failed to create status bar\n");
 		return -1;      // fail to create
 	}
 
 	m_wndToolBar.DestroyWindow();
 #if	0
 	// TODO: Delete these three lines if you don't want the toolbar to
 	//  be dockable
 	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
 	EnableDocking(CBRS_ALIGN_ANY);
 	DockControlBar(&m_wndToolBar);
 
 	// TODO: Remove this if you don't want tool tips
 	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
 		CBRS_TOOLTIPS | CBRS_FLYBY);
 #endif
 	DragAcceptFiles(TRUE);
 
 	return 0;
 }
 
 /////////////////////////////////////////////////////////////////////////////
 // CMainFrame diagnostics
 
 #ifdef _DEBUG
 void CMainFrame::AssertValid() const
 {
 	CFrameWnd::AssertValid();
 }
 
 void CMainFrame::Dump(CDumpContext& dc) const
 {
 	CFrameWnd::Dump(dc);
 }
 
 #endif //_DEBUG
 
 void
 CMainFrame::ChangeStatusText(const CString &text)
 {
 	m_wndStatusBar.SetWindowText(text);
 }
 
 
 /////////////////////////////////////////////////////////////////////////////
 // CMainFrame message handlers
 
 void CMainFrame::OnDropFiles(HDROP hDropInfo) 
 {
 	// TODO: Add your message handler code here and/or call default
 
 	const int nFiles = ::DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
 
 	for(int i = 0; i < nFiles; i++) {
     	TCHAR filename[_MAX_PATH];
 
     	::DragQueryFile(hDropInfo, i, filename, _MAX_PATH);
 
 		extern CClamavApp theApp;
 
 		theApp.Scan(filename);
 	}
 
   	::DragFinish(hDropInfo);
 }