MFC对话框 工具栏 真彩色
方法1
建立 MFC 对话框 工程 :
名字为:TestOne
代码1:
public:
CToolBar m_Toolbar;
afx_msg void OnToolBarStart();
afx_msg void OnToolBarStop();
afx_msg void OnToolBarInfo();
代码2:
BEGIN_MESSAGE_MAP(CTestOneDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(IDB_START, &CTestOneDlg::OnToolBarStart)
ON_COMMAND(IDB_STOP, &CTestOneDlg::OnToolBarStop)
ON_COMMAND(IDB_INFO, &CTestOneDlg::OnToolBarInfo)
END_MESSAGE_MAP()
代码3:
void CTestOneDlg::OnToolBarStart()
{
// TODO: 在此添加命令处理程序代码
MessageBox(_T("OnToolBarStart"));
}
void CTestOneDlg::OnToolBarStop()
{
// TODO: 在此添加命令处理程序代码
MessageBox(_T("OnToolBarStop"));
}
void CTestOneDlg::OnToolBarInfo()
{
// TODO: 在此添加命令处理程序代码
MessageBox(_T("OnToolBarInfo"));
}
代码4:
BOOL CTestOneDlg::OnInitDialog()中添加如下代码
m_Toolbar.Create(this);//创建工具栏控件
m_Toolbar.LoadToolBar(IDR_TOOLBAR1);//装载工具栏资源
//该函数用于显示工具栏,并根据窗口大小自动调整工具栏的位置
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
方法2:
建立MFC 对话框工程 :TestTwo
IDB_START
IDB_STOP
IDB_INFO
https://www.iconfont.cn/search/index?spm=a313x.7781069.1998910419.148&searchType=icon&q=stop
保存
代码1
public:
CToolBar m_Toolbar;
afx_msg void OnToolBarStart();
代码2:
BEGIN_MESSAGE_MAP(CTestTwoDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(IDB_START, &CTestTwoDlg::OnToolBarStart)
END_MESSAGE_MAP()
void CTestTwoDlg::OnToolBarStart()
{
// TODO: 在此添加命令处理程序代码
MessageBox(_T("OnToolBarStart"));
}
代码3:
//创建Toolbar
m_Toolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP);
//加载Toolbar //16位的工具栏按钮个数决定24位的工具栏按钮个数
//因为那些bmp位图是显示在工具栏按钮上的
m_Toolbar.LoadToolBar(IDR_TOOLBAR1);
CImageList image;
CBitmap bmp;
//加载24位BMP工具栏
bmp.LoadBitmap(IDB_HOT);
//创建图像列表 //ILC_MASK表示背景透明 //3个工具按钮,每次增加一个
image.Create(32, 32, ILC_MASK | ILC_COLOR24, 3, 1);
//把bmp加入到图像列表
image.Add(&bmp, RGB(255, 255, 255));//背景颜色为白色
m_Toolbar.GetToolBarCtrl().SetImageList(&image);
image.Detach();//用完之后解绑
bmp.Detach(); //用完之后解绑
//如果显示不完全,就调整一下大小
CRect rect;
//获取第一个工具按钮的大小
m_Toolbar.GetItemRect(0, &rect);
//第一个参数是按钮大小,第二个是图片大小
m_Toolbar.SetSizes(rect.Size(), CSize(32, 32));
//调整工具栏的位置
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
方法3
代码1
public:
CToolBar m_Toolbar;
afx_msg void OnToolBarStart();
代码2:
BEGIN_MESSAGE_MAP(CTestThreeDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(IDB_START, &CTestThreeDlg::OnToolBarStart)
END_MESSAGE_MAP()
void CTestThreeDlg::OnToolBarStart()
{
// TODO: 在此添加命令处理程序代码
MessageBox(_T("OnToolBarStart"));
}
代码3:
//创建Toolbar
m_Toolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP);
//加载Toolbar //16位的工具栏按钮个数决定24位的工具栏按钮个数
//因为那些bmp位图是显示在工具栏按钮上的
m_Toolbar.LoadToolBar(IDR_TOOLBAR1);
CImageList image;
CBitmap bmp;
//加载24位BMP工具栏
bmp.LoadBitmap(IDB_COLD);
//创建图像列表 //ILC_MASK表示背景透明 //3个工具按钮,每次增加一个
image.Create(32, 32, ILC_MASK | ILC_COLOR24, 3, 1);
//把bmp加入到图像列表
image.Add(&bmp, RGB(255, 255, 255));//背景颜色为白色
m_Toolbar.GetToolBarCtrl().SetImageList(&image);
image.Detach();//用完之后解绑
bmp.Detach(); //用完之后解绑
//加载24位BMP工具栏
bmp.LoadBitmap(IDB_HOT);
//创建图像列表 //ILC_MASK表示背景透明 //3个工具按钮,每次增加一个
image.Create(32, 32, ILC_MASK | ILC_COLOR24, 3, 1);
//把bmp加入到图像列表
image.Add(&bmp, RGB(255, 255, 255));//背景颜色为白色
m_Toolbar.GetToolBarCtrl().SetHotImageList(&image);
image.Detach();//用完之后解绑
bmp.Detach(); //用完之后解绑
//如果显示不完全,就调整一下大小
CRect rect;
//获取第一个工具按钮的大小
m_Toolbar.GetItemRect(0, &rect);
//第一个参数是按钮大小,第二个是图片大小
m_Toolbar.SetSizes(rect.Size(), CSize(32, 32));
//调整工具栏的位置
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
方法4
http://www.codeproject.com/docking/TrueColorToolBar.asp
//In Mainframe.h
#define TOOLBAR_DRAW_BUTTON_WIDTH 24
#include "TrueColorToolBar.h"
class CMainFrame : public CFrameWnd
{
CTrueColorToolBar m_ToolBarDrawLeft;
}
//In Mainframe.cpp
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
m_ToolBarDrawLeft.SetBorders(1, 1,
1, 1); //Fix for WinXP
if (!m_ToolBarDrawLeft.Create(this, WS_CHILD |
WS_VISIBLE | CBRS_LEFT | CBRS_GRIPPER |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_ToolBarDrawLeft.LoadToolBar(IDR_TOOLBAR_DRAW))
{
TRACE0("Failed to create toolbar\n");
return -1; //Failed to create
}
m_ToolBarDrawLeft.ModifyStyle(0,
TBSTYLE_FLAT);//Fix for WinXP
m_ToolBarDrawLeft.LoadTrueColorToolBar(
TOOLBAR_DRAW_BUTTON_WIDTH,
IDB_TOOLBAR_DRAW,
IDB_TOOLBAR_DRAW_HOT,
IDB_TOOLBAR_DRAW_DISABLED);
return 0;
}
建立工程4: