VC++6.0手动使用工具条

原文在这里 点击打开链接

VC++6.0使用工具条,就是说,我们不用MFC向导自动生成的文档里面的工具条的方式来手动添加工具条。其大体实现思路如下。

1.往资源中添加一个ToolBar资源,并修改其中的图标

2.在MainFrame中,在public部分声明一个类型是CToolBar的m_wndToolBar变量.

3.在MainFrame中,按CTRL+W,选择WM_CREATE,生成工具条,代码见下方的OnCreate()部分.

4.按Ctrl+W,分别选择图标和类,生成对应的消息处理函数。如下方的OnShow()

5.将菜单项与图标对应的消息处理映射起来。具体是在OnCommand()来实现。详见下方

// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "MyToolBar.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_COMMAND(ID_BUTTON_SHOW, OnButtonShow)
 ON_COMMAND(ID_FILE_NEW, OnFileNew)
 ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
 ON_COMMAND(ID_FILE_SAVE, OnFileSave)
 
 ON_COMMAND(ID_BUTTON_T_NEW, OnFileNew)
 ON_COMMAND(ID_BUTTON_T_OPEN, OnFileOpen)
 ON_COMMAND(ID_BUTTON_T_SAVE, OnFileSave)

 //}}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()
{
 // TODO: add member initialization code here
 
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  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
 }


 if (!m_wndToolBar.Create(this)||!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
 {
  TRACE0("不能创建工具条\n");
  return -1;
 }
  
 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);

 return 0;
}

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


void CMainFrame::OnButtonShow() 
{
 AfxMessageBox("Show 一个对话框。");
 
}

BOOL CMainFrame::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{

 

 return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
 // TODO: Add your specialized code here and/or call the base class
 
 return CFrameWnd::OnCreateClient(lpcs, pContext);
}

void CMainFrame::OnFileNew() 
{
 // TODO: Add your command handler code here
 AfxMessageBox("建立一个新文档");
}

void CMainFrame::OnFileOpen() 
{
 // TODO: Add your command handler code here
 AfxMessageBox("打开一个新文档");
}

void CMainFrame::OnFileSave() 
{
 // TODO: Add your command handler code here
 AfxMessageBox("保存一个新文档");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值