16,472
社区成员
发帖
与我相关
我的任务
分享
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "Robot.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//#include "CaptureDirectShow.h"
//CCaptureDirectShow gl_cap3;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// 状态栏的间隔符
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_SEPARATOR,
ID_SEPARATOR,
ID_SEPARATOR,
ID_SEPARATOR,
ID_SEPARATOR,
// 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.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || //
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}*/
// 创建扩展工具条
if (!this->CreateExToolBar())
return -1; // 如果工具条创建不成功,则程序返回。
// 创建状态栏
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_wndStatusBar.SetPaneInfo(1,0,0,200);
m_wndStatusBar.SetPaneInfo(2,0,0,100);
m_wndStatusBar.SetPaneInfo(3,0,0,80);
m_wndStatusBar.SetPaneInfo(4,0,0,80);
// m_wndStatusBar.SetPaneStyle(1,SBPS_POPOUT);
// ((CMainFrame *)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(2,strLocation);
// 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);
// ShowWindow(SW_SHOWMAXIMIZED);
// 得到当前时间,显示在状态栏中
CString strTime, strDate;
CTime time = CTime::GetCurrentTime();//得到当前时间
strTime = time.Format("%X");//时间格式化
strDate = time.Format("%Y-%m-%d");//日期格式化
m_wndStatusBar.SetPaneText(3, strDate);
m_wndStatusBar.SetPaneText(4, strTime);
m_wndStatusBar.SetPaneText(5, "大连交大机器人实验教学平台");
// m_wndStatusBar.SetPaneStyle(2, SBPS_DISABLED);
SetTimer(ID_TIMER_STATUS, 1000, NULL);
// 设置窗口的位置
SetWindowPos(NULL, -4, -4, 1032, 748, SWP_SHOWWINDOW); // | SWP_NOSIZE
return 0;
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
// 对状态栏的时间进行实时更新
if (nIDEvent == ID_TIMER_STATUS)
{
CString strTime,strDate;
CTime time=CTime::GetCurrentTime(); //得到当前时间
strTime=time.Format("%X"); //时间格式化
m_wndStatusBar.SetPaneText(4,strTime);
}
CFrameWnd::OnTimer(nIDEvent);
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
// 创建工具条
BOOL CMainFrame::CreateExToolBar()
{
CImageList img;
CString str;
if(!m_wndReBar.Create(this))
{
return -1;
}
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
return -1;
}
//下面的代码是设置按钮的宽度和长度
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(60, 80);
// m_wndToolBar.SetHeight(25);
//下面的代码是设置"热"的位图
img.Create(34, 34, ILC_COLOR8|ILC_MASK,2,2);
img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_PATHDLG)); //0轨迹窗口
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_VISIONDLG)); //1视觉窗口
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_OPEN)); //2打开
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SAVE)); //3保存
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_RESET)); //4复位
img.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME)); //5关于
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_EXIT)); //6退出
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach();
//下面的代码是设置"冷"的位图
img.Create(32, 32, ILC_COLOR8|ILC_MASK, 2,2);
img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_PATHDLG)); //0轨迹窗口
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_VISIONDLG)); //1视觉窗口
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_OPEN)); //2打开
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SAVE)); //3保存
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_RESET)); //4复位
img.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME)); //5关于
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_EXIT)); //6退出
m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
//改变属性
m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS | TBSTYLE_TRANSPARENT |
TBBS_CHECKBOX );
m_wndToolBar.SetButtons(NULL,9);
// set up each toolbar button设置文字
m_wndToolBar.SetButtonInfo(0, ID_MENU_PATHDLG, TBBS_CHECKBOX, 0); // TBBS_CHECKBOX
m_wndToolBar.SetButtonText(0, "轨迹窗口");
m_wndToolBar.SetButtonInfo(1, ID_MENU_VISIONDLG, TBBS_CHECKBOX, 1);
m_wndToolBar.SetButtonText(1, "视觉窗口");
m_wndToolBar.SetButtonInfo(2, ID_SEPARATOR, TBBS_SEPARATOR, 1);
m_wndToolBar.SetButtonInfo(3, ID_MENU_FILEOPEN, TBSTYLE_BUTTON, 2);
m_wndToolBar.SetButtonText(3, "打开");
m_wndToolBar.SetButtonInfo(4, ID_MENU_FILESAVE, TBSTYLE_BUTTON, 3);
m_wndToolBar.SetButtonText(4, "保存");
m_wndToolBar.SetButtonInfo(5, ID_MENU_RESET, TBSTYLE_BUTTON, 4);
m_wndToolBar.SetButtonText(5, "复位");
m_wndToolBar.SetButtonInfo(6, ID_SEPARATOR, TBBS_SEPARATOR, 1);
m_wndToolBar.SetButtonInfo(7, ID_APP_ABOUT, TBSTYLE_BUTTON, 5);
m_wndToolBar.SetButtonText(7, "关于");
m_wndToolBar.SetButtonInfo(8,ID_APP_EXIT,TBSTYLE_BUTTON,6);
m_wndToolBar.SetButtonText(8,"退出");
CRect rectToolBar;
//得到按钮的大小
m_wndToolBar.GetItemRect(0, &rectToolBar);
//设置按钮的大小
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(33,33));//+CSize(0,3)
//在Rebar中加入ToolBar
m_wndReBar.AddBar(&m_wndToolBar);
/* //改变一些属性
REBARBANDINFO rbbi;
rbbi.cbSize = sizeof(rbbi); //这个是必须填
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_BACKGROUND;
//工具条的宽度
rbbi.cxMinChild = rectToolBar.Width();
//高度
rbbi.cyMinChild = rectToolBar.Height();
//下面这行代码是为工具条加入背景位图,请注意上rbbi.fMask中RBBIM_BACKGROUND标志
// rbbi.hbmBack = LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_TOOLBARBKMAP));
rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 10;
m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
*/
// m_wndToolBar.GetToolBarCtrl().EnableButton(ID_MENU_FILEOPEN,FALSE);
// m_wndToolBar.RedrawWindow();
return TRUE;
}