windows-nt/Source/XPSP1/NT/printscan/wia/test/wiatest/mainfrm.cpp

544 lines
12 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
// 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;
}