
源代码:
哎,其实后面有很多图片的,本来看起开很明了的,资源连接里有具体的文档,比后面的看的舒服的多....
为绘图软件添加工具栏
首先了解一下工具栏的操作。
1.打开资源->Toolbar
2.如何查看每个按钮的属性?
查看每个按钮属性,不是按右键,而是左键双击截图,即可看到,如:
我们双击打开图标,得到如下属性框:
从上图我们可以了解‘打开’图标的资源ID是:ID_FILE_NEW;这个ID号刚好跟菜单项中的‘文件’->‘打开’菜单项具有同样的资源ID。
因此,当我们按工具栏的‘打开’图标时,能够执行跟按菜单项同样的功能。
3.如何为工具栏上的界面之间添加一个分隔符?
只应该用鼠标拖动即可。将一个图标拖至远一点的地方就能。
4.如何删去一个图标?
用鼠标拖拽,拖到离开工具栏即可
为项目的绘图软件添加工具栏。
1.编辑工具栏资源,分别为每一个工具画一个图标,双击图标,设置界面的属性,使其资源ID号,与菜单项中各个软件菜单的资源ID相对应。编辑运行即可。
2.结束啦!
新建自己的工具栏
1.插入,资源,选择Toolbarmfc 画图板,点击新建按钮。将资源按钮设定为:IDR_MY_TOOLBAR
2.编辑几个图标资源,如下图:
并修改相应的属性。将其与画图工具的菜单项的资源ID设为对应一致。
3.在CMainFrame类增加成员变量:;并在CMainFrame类的OnCreate(LPCREATESTRUCT lpCreateStruct)函数里添加如下代码:

if(!m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT
|CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_myToolBar.LoadToolBar(IDR_MY_TOOLBAR))
{
TRACE0("Failedto create toolbar\n");
return-1; // fail to create
}
m_myToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_myToolBar);
4.编辑运行即可。
在增加成员变量CToolBar m_myToolBar;后发生运行出错,错误提示是一些内存不可读错误。此时,将Release文件下的所有文件删除即可。
完善功能:为工具栏的显示与否,添加查看菜单项;
1.添加‘查看’菜单项,设置为弹出类型。
2.在‘查看’菜单项下添加‘系统软件栏’和‘画图工具栏’菜单项。分别设定相应的属性,并设立类向导;(注意):建立类向导的之后,选择添加至CMainFrame类。在分别在其消息相应函数中加入如下命令:
void CMainFrame::OnViewSystemBar()
{
//TODO: Add your command handler code here
ShowControlBar(&m_wndToolBar,!m_wndToolBar.IsWindowVisible(),FALSE);
}
void CMainFrame::OnViewDrawBar()
{

//TODO: Add your command handler code here
ShowControlBar(&m_myToolBar,!m_myToolBar.IsWindowVisible(),FALSE);
}
3.以上基本完成了菜单项的功能,一下我们为菜单项的选取添加‘对号’标记。
为‘系统软件栏’和‘画图工具栏’菜单项添加UPDATA_COMMAND_UI消息处理数组。点击右键,建立类向导mfc 画图板,
选择UPDATA_COMMAND_UI.类名选择CMainFrame.增加函数,编辑代码:
voidCMainFrame::OnUpdateViewSystemBar(CCmdUI* pCmdUI)
{
// TODO:Add your command update UI handler code here
pCmdUI->SetCheck(m_wndToolBar.IsWindowVisible());
}
void CMainFrame::OnUpdateViewDrawBar(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_myToolBar.IsWindowVisible());
}
为画图工具的各个菜单项添加复选提示;
分别点击右键,建立类向导,选择UPDATA_COMMAND_UI.类名选择CXXXXView.增加函数,编辑代码:
void CCVMFCView::OnUpdateMyDrawLine(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==1);

}
voidCCVMFCView::OnUpdateMyDrawRectangle(CCmdUI* pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==2);
}
void CCVMFCView::OnUpdateMyDrawCircle(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==3);
}
voidCCVMFCView::OnUpdateMyDrawConceal(CCmdUI* pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==0);
}
void CCVMFCView::OnUpdateMyDrawCurve(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==4);
}
voidCCVMFCView::OnUpdateMyDrawEllipse(CCmdUI* pCmdUI)

{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==5);
}
void CCVMFCView::OnUpdateMyDrawText(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==6);
}
为各个软件菜单添加{提示}功能。即:当鼠标移动至菜单项上的之后,程序左下角会提醒该菜单项的功能。
方法1:设置菜单项的属性,在属性中的最终一栏,提示栏中键入相应的提示语即可。
方法2:直接开启资源文件:XXXX.rc,用记事本打开;
添加如下代码:
在BEGIN 和END之间添加菜单项的ID号和对应的字符串即可:
如:
STRINGTABLE DISCARDABLE
BEGIN
ID_MY_DRAW_LINE "画一条直线(拖动鼠标)"
ID_MY_DRAW_CONCEAL "取消工具"
ID_MY_DRAW_RECTANGLE "画矩形(拖动鼠标)"
ID_MY_DRAW_CIRCLE "画圆(拖动鼠标)"
ID_MY_DRAW_ELLIPSE "画椭圆(拖动鼠标)"
ID_MY_DRAW_TEXT "写文字(拖动鼠标)"
ID_MY_DRAW_CURVE "画任意曲线(拖动鼠标)"
END
原文链接:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-141532-1.html
第一
谢谢您