📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "Rader.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_IP, OnIp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
//ID_SEPARATOR, // status line indicator
//ID_INDICATOR_CAPS,
//ID_INDICATOR_NUM,
//ID_INDICATOR_SCRL,
ID_SEPARATOR, // status line indicator
ID_INDICATOR_MOUSEPOS1,
ID_INDICATOR_MOUSEPOS2,
ID_INDICATOR_PROCESSBAR,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
m_nProcess = 0 ;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.Create(this) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
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);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
int nPane = m_wndStatusBar.CommandToIndex( ID_INDICATOR_MOUSEPOS1 ) ;
m_wndStatusBar.SetPaneInfo(nPane, ID_INDICATOR_MOUSEPOS1, SBPS_NORMAL, 75 );
m_wndStatusBar.SetPaneText(nPane, "" ) ;
nPane = m_wndStatusBar.CommandToIndex( ID_INDICATOR_MOUSEPOS2 ) ;
m_wndStatusBar.SetPaneInfo(nPane, ID_INDICATOR_MOUSEPOS2, SBPS_NORMAL, 75 );
m_wndStatusBar.SetPaneText(nPane, "" ) ;
nPane = m_wndStatusBar.CommandToIndex( ID_INDICATOR_PROCESSBAR ) ;
m_wndStatusBar.SetPaneInfo(nPane, ID_INDICATOR_PROCESSBAR, SBPS_NORMAL, 150 );
m_wndStatusBar.SetPaneText( nPane, "" ) ;
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
return CMDIFrameWnd::PreCreateWindow(cs);
}
BOOL CMainFrame::SetStatusBarText(DWORD Index, CString str)
{
m_wndStatusBar.SetPaneText(Index, str);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnProcessBegin()
{
// 如果进程条信息已经被关闭,则直接退出本函数。
//if( ! __ScannerSysOptions.bStatusbarProcess )
// return ;
// 检查进程条参数。
//ASSERT( __ScannerSysOptions.nStatusbarProcessParam >= 2 &&
// __ScannerSysOptions.nStatusbarProcessParam <= 200 ) ;
// 初始化进程控制条。
// 同时清空进程条的文字内容。
int nPane = m_wndStatusBar.CommandToIndex( ID_INDICATOR_PROCESSBAR ) ;
( m_wndStatusBar.GetStatusBarCtrl() ).SetText( "", nPane, 0 ) ;
m_nProcess = 0 ;
m_wndStatusBar.Invalidate() ;
m_wndStatusBar.UpdateWindow() ;
return ;
}
void CMainFrame::OnProcessEnd(DWORD NowPos, DWORD TotalPos)
{
// 如果进程条信息已经被关闭,则直接退出本函数。
//if( ! __ScannerSysOptions.bStatusbarProcess )
// return ;
// 如果进程信息尚未结束,则先完成之。
//if( m_nProcess < 100)//__ScannerSysOptions.nStatusbarProcessParam )
if(NowPos < TotalPos)
{
while( NowPos < TotalPos )//__ScannerSysOptions.nStatusbarProcessParam )
{
OnProcessUpdate(NowPos, TotalPos) ;
}
::Sleep( 200 ) ;
}
// 结束进程控制条。
m_nProcess = 0 ;
m_wndStatusBar.Invalidate() ;
m_wndStatusBar.UpdateWindow() ;
return ;
}
void CMainFrame::OnProcessUpdate(DWORD NowPos, DWORD TotalPos)
{
// 如果进程条信息已经被关闭,则直接退出本函数。
//if( ! __ScannerSysOptions.bStatusbarProcess )
// return ;
// 更新进程控制条。
// 获取进程控制条的索引。
int nPane = m_wndStatusBar.CommandToIndex( ID_INDICATOR_PROCESSBAR ) ;
// 获取状态条的设备描述表。
CDC* pDC = m_wndStatusBar.GetWindowDC() ;
ASSERT_VALID( pDC ) ;
// 更新进程统计量。
//if( m_nProcess < __ScannerSysOptions.nStatusbarProcessParam ) m_nProcess ++ ;
//if( m_nProcess < 100) m_nProcess ++ ;
//else return ;
// Select the brush.
CBrush brush( RGB( 255, 0, 255 ) ) ;
CBrush* pOldBrush = pDC->SelectObject( &brush ) ;
// 获取进程控制条。
CRect rect ;
m_wndStatusBar.GetItemRect( nPane, &rect ) ;
// 设置并显示当前进程控制。
//rect.right = rect.left + rect.Width() * m_nProcess
// / __ScannerSysOptions.nStatusbarProcessParam ;
//rect.right = rect.left + (int)((double)(rect.Width()) * m_nProcess / 100.0);
rect.right = rect.left + (int)((double)(rect.Width()) * NowPos / TotalPos);
pDC->Rectangle( &rect ) ;
//::Sleep( 5 );
// Restore the brush object.
if( NULL != pOldBrush )
pDC->SelectObject( pOldBrush ) ;
// Release the DC of the status bar.
m_wndStatusBar.ReleaseDC( pDC ) ;
}
void CMainFrame::OnIp()
{
CString szPath = ((CRaderApp*)AfxGetApp())->GetAppPath();
UINT ret = WinExec(szPath + "\\CsIP.dll", SW_SHOWMAXIMIZED);
if(ret <= 31)
{
AfxMessageBox("Start IP Error!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -