544 lines
12 KiB
C++
544 lines
12 KiB
C++
// MainFrm.cpp : implementation of the CMainFrame class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "WIATest.h"
|
|
|
|
#include "WIATestView.h"
|
|
#include "Progressbar.h"
|
|
|
|
#include "MainFrm.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame
|
|
|
|
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
|
|
|
|
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
|
|
//{{AFX_MSG_MAP(CMainFrame)
|
|
ON_WM_CREATE()
|
|
ON_WM_SIZE()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
static UINT indicators[] =
|
|
{
|
|
ID_SEPARATOR, // status line indicator
|
|
ID_INDICATOR_CAPS,
|
|
ID_INDICATOR_NUM,
|
|
ID_INDICATOR_SCRL,
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame construction/destruction
|
|
/**************************************************************************\
|
|
* CMainFrame::CMainFrame()
|
|
*
|
|
* Constructor for mainframe window class
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CMainFrame::CMainFrame()
|
|
{
|
|
m_pProgressBar = NULL;
|
|
m_bSizeON = FALSE;
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::~MainFrame()
|
|
*
|
|
* Destructor for mainframe window class
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CMainFrame::~CMainFrame()
|
|
{
|
|
if(m_pProgressBar != NULL)
|
|
delete m_pProgressBar;
|
|
m_pProgressBar = NULL;
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::OnCreate()
|
|
*
|
|
* Creates the Main Frame window, adding toolbars, and controls
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* lpCreateStruct - Creation struct containing window params
|
|
*
|
|
* Return Value:
|
|
*
|
|
* status
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
if (!m_wndToolBar.Create(this)) {
|
|
TRACE0("Failed to create toolbar\n");
|
|
return -1; // fail to create
|
|
}
|
|
|
|
if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {
|
|
TRACE0("Failed to create toolbar\n");
|
|
return -1; // fail to create
|
|
}
|
|
|
|
if (!m_wndTransferToolBar.Create(this)) {
|
|
TRACE0("Failed to create toolbar\n");
|
|
return -1; // fail to create
|
|
}
|
|
|
|
if (!m_wndTransferToolBar.LoadToolBar(IDR_TRANSFER_TOOLBAR)) {
|
|
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.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
|
|
|
|
|
|
// enable Toolbar docking
|
|
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
m_wndTransferToolBar.SetBarStyle(m_wndTransferToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
|
|
|
|
|
|
// enable Toolbar docking
|
|
m_wndTransferToolBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
// window Docking
|
|
EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
|
|
m_wndTransferToolBar.SetWindowText("TRANSFER");
|
|
DockControlBar(&m_wndTransferToolBar,AFX_IDW_DOCKBAR_TOP);
|
|
m_wndToolBar.SetWindowText("WIATEST TOOLS");
|
|
|
|
DockControlBarLeftOf(&m_wndToolBar,&m_wndTransferToolBar);
|
|
ShowToolBar(IDR_MAINFRAME,FALSE);
|
|
return 0;
|
|
}
|
|
|
|
void CMainFrame::DockControlBarLeftOf(CToolBar* Bar, CToolBar* LeftOf)
|
|
{
|
|
CRect rect;
|
|
DWORD dw;
|
|
UINT n;
|
|
|
|
// get MFC to adjust the dimensions of all docked ToolBars
|
|
// so that GetWindowRect will be accurate
|
|
RecalcLayout(TRUE);
|
|
|
|
LeftOf->GetWindowRect(&rect);
|
|
rect.OffsetRect(1,0);
|
|
dw=LeftOf->GetBarStyle();
|
|
n = 0;
|
|
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
|
|
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
|
|
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
|
|
n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
|
|
|
|
// When we take the default parameters on rect, DockControlBar will dock
|
|
// each Toolbar on a seperate line. By calculating a rectangle, we
|
|
// are simulating a Toolbar being dragged to that location and docked.
|
|
DockControlBar(Bar,n,&rect);
|
|
}
|
|
|
|
|
|
/**************************************************************************\
|
|
* CMainFrame::EnableToolBarButton()
|
|
*
|
|
* Enables/Disables a requested toolbar button
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* ToolBarID - Tool bar ID to use
|
|
* ButtonID - Button to enable/disable
|
|
* bEnable - TRUE (Enable) FALSE (Disable)
|
|
*
|
|
* Return Value:
|
|
*
|
|
* status
|
|
*
|
|
* History:
|
|
*
|
|
* 4/23/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CMainFrame::HideToolBarButton(DWORD ToolBarID, DWORD ButtonID, BOOL bEnable)
|
|
{
|
|
BOOL bResult = FALSE;
|
|
if(ToolBarID == IDR_MAINFRAME){
|
|
bResult = (m_wndToolBar.GetToolBarCtrl()).HideButton(ButtonID,bEnable);
|
|
(m_wndToolBar.GetToolBarCtrl()).AutoSize();
|
|
ShowControlBar(&m_wndToolBar,TRUE,FALSE);
|
|
return bResult;
|
|
}
|
|
else if(ToolBarID == IDR_TRANSFER_TOOLBAR){
|
|
bResult = (m_wndTransferToolBar.GetToolBarCtrl()).HideButton(ButtonID,bEnable);
|
|
(m_wndTransferToolBar.GetToolBarCtrl()).AutoSize();
|
|
ShowControlBar(&m_wndTransferToolBar,TRUE,FALSE);
|
|
return bResult;
|
|
}
|
|
else
|
|
return FALSE;
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::PreCreateWindow()
|
|
*
|
|
* Handles precreation initialization for the window
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* cs - Create struct containing window param settings
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
if( !CFrameWnd::PreCreateWindow(cs) )
|
|
return FALSE;
|
|
return TRUE;
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::InitializationProgressCtrl()
|
|
*
|
|
* Handles progress control initialization
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* strMessage - Status display for the progress text
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::InitializeProgressCtrl(LPCTSTR strMessage)
|
|
{
|
|
if(m_pProgressBar == NULL)
|
|
m_pProgressBar = new CProgressBar("Processing..",40,100);
|
|
|
|
if(m_pProgressBar != NULL)
|
|
{
|
|
m_pProgressBar->ShowWindow(SW_SHOW);
|
|
m_pProgressBar->SetText(strMessage);
|
|
m_pProgressBar->SetRange(0,100);
|
|
m_pProgressBar->SetPos(0);
|
|
m_pProgressBar->SetStep(100);
|
|
//m_pProgressBar->SetBarColour(RGB(0,200,0));
|
|
}
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::UpdateProgress()
|
|
*
|
|
* updates the progress control status
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* iProgress - Current Progress to move progress control
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::UpdateProgress(int iProgress)
|
|
{
|
|
m_pProgressBar->SetPos(iProgress);
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::SetProgressText()
|
|
*
|
|
* Sets the progress control's text status
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* strText - Text to set in display for status output
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::SetProgressText(LPCTSTR strText)
|
|
{
|
|
if(m_pProgressBar != NULL)
|
|
{
|
|
m_pProgressBar->SetText(strText);
|
|
//m_wndStatusBar.Invalidate();
|
|
}
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::DestroyProgressCtrl()
|
|
*
|
|
* Hides the progress control in a simulated destruction
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::DestroyProgressCtrl()
|
|
{
|
|
m_pProgressBar->ShowWindow(SW_HIDE);
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::DisplayImage()
|
|
*
|
|
* not used at this time
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pDIB - DIB to paint
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::DisplayImage(PBYTE pDIB)
|
|
{
|
|
CWIATestView* pView = (CWIATestView*)GetActiveView();
|
|
//pView->PaintThis(pDIB);
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CMainFrame::AssertValid() const
|
|
{
|
|
CFrameWnd::AssertValid();
|
|
}
|
|
|
|
void CMainFrame::Dump(CDumpContext& dc) const
|
|
{
|
|
CFrameWnd::Dump(dc);
|
|
}
|
|
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame message handlers
|
|
|
|
/**************************************************************************\
|
|
* CMainFrame::ShowToolBar()
|
|
*
|
|
* Show's a hidden toolbar..possible closed by the user
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* ToolBarID - Toolbar Resource ID
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::ShowToolBar(int ToolBarID,BOOL bShow)
|
|
{
|
|
switch(ToolBarID)
|
|
{
|
|
case IDR_TRANSFER_TOOLBAR:
|
|
ShowControlBar(&m_wndTransferToolBar,bShow,FALSE);
|
|
break;
|
|
case IDR_MAINFRAME:
|
|
ShowControlBar(&m_wndToolBar,bShow,FALSE);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**************************************************************************\
|
|
* CMainFrame::IsToolBarVisible()
|
|
*
|
|
* Determine's if the requested Toolbar is visible
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* ToolBarID - Toolbar Resource ID
|
|
*
|
|
* Return Value:
|
|
*
|
|
* status
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CMainFrame::IsToolBarVisible(DWORD ToolBarID)
|
|
{
|
|
switch(ToolBarID)
|
|
{
|
|
case IDR_TRANSFER_TOOLBAR:
|
|
return m_wndTransferToolBar.IsWindowVisible();
|
|
break;
|
|
case IDR_MAINFRAME:
|
|
return m_wndToolBar.IsWindowVisible();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return FALSE;
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::OnSize()
|
|
*
|
|
* Handles windows message for Mainframe resizing
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* cx - change in width of mainframe window
|
|
* cy - change in height of the mainframe window
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
CFrameWnd::OnSize(nType, cx, cy);
|
|
if(m_bSizeON)
|
|
{
|
|
CWIATestView* pView = (CWIATestView*)GetActiveView();
|
|
if(cx > m_MinWidth)
|
|
{
|
|
if(pView != NULL)
|
|
pView->ResizeControls(cx - m_oldcx,cy - m_oldcy);
|
|
m_oldcx = cx;
|
|
m_oldcy = cy;
|
|
}
|
|
if(cy > m_MinHeight)
|
|
{
|
|
if(pView != NULL)
|
|
pView->ResizeControls(cx - m_oldcx,cy - m_oldcy);
|
|
m_oldcx = cx;
|
|
m_oldcy = cy;
|
|
}
|
|
}
|
|
}
|
|
/**************************************************************************\
|
|
* CMainFrame::ActivateSizing()
|
|
*
|
|
* Starts the sizing funtionality of the mainframe
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* bSizeON - Sizing activated, ON/OFF
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CMainFrame::ActivateSizing(BOOL bSizeON)
|
|
{
|
|
m_bSizeON = bSizeON;
|
|
RECT MainFrmRect;
|
|
GetClientRect(&MainFrmRect);
|
|
m_MinWidth = MainFrmRect.right;
|
|
m_MinHeight = MainFrmRect.bottom;
|
|
m_oldcx = m_MinWidth;
|
|
m_oldcy = m_MinHeight;
|
|
}
|