菜单工具栏状态条B.docx
- 文档编号:23399153
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:16
- 大小:1.20MB
菜单工具栏状态条B.docx
《菜单工具栏状态条B.docx》由会员分享,可在线阅读,更多相关《菜单工具栏状态条B.docx(16页珍藏版)》请在冰豆网上搜索。
菜单工具栏状态条B
1菜单
菜单栏,主菜单,子菜单,菜单项,分割条
弹出式菜单(点击鼠标右键弹出)
菜单消息:
COMMAND消息(控制应用程序命令功能);UPDATE_COMMAND_UI消息(改变菜单项状态:
打勾SetCheck(),可用状态控制Enable/Disable(变灰)).
2工具条
窗口上方一行图标按钮,用于快速执行某项功能。
工具键响应消息:
跟菜单消息一样。
3状态条
应用程序窗口底部显示信息的窗口边框。
MFC默认初始状态条:
sataticUINTindicators[]=
{
ID_SEPARATORS,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
}
程序实例:
1菜单资源添加,编辑:
2成员变量添加:
系统会弹出如下对话框:
输入成员变量类型,名称,选择该成员变量访问属性后的该类的头文件会自动添加如下成员变量:
2消息响应函数添加,编辑:
COMMAND消息:
voidCMenuToolView:
:
OnToolLine()
{
//TODO:
Addyourcommandhandlercodehere
CPennewPen;
CPen*oldPen;
newPen.CreatePen(PS_SOLID,m_CurrentThickness,m_CurrentColor);
CClientDCdc(this);
CRectrect;
GetClientRect(&rect);
dc.FillRect(&rect,CBrush:
:
FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
oldPen=dc.SelectObject(&newPen);
dc.MoveTo(50,30);
dc.LineTo(300,200);
dc.SelectObject(&oldPen);
}
UPDATE_COMMAND_UI消息:
voidCMenuToolView:
:
OnUpdateToolLine(CCmdUI*pCmdUI)
{
//TODO:
AddyourcommandupdateUIhandlercodehere
pCmdUI->SetCheck(m_CurrentTool==ID_TOOL_LINE?
1:
0);
}
编译系统会提示不认识m_CurrentTool
手动添加成员变量:
编译运行,奇怪怎么画不出线?
原因:
没有初始化成员变量。
初始化代码(怎么成员变量初始化?
)
CMenuToolView:
:
CMenuToolView()
{
//TODO:
addconstructioncodehere
m_CurrentThickness=1;
m_CurrentColor=RGB(0,0,0);
m_CurrentTool=ID_TOOL_LINE;
}
制作弹出式菜单
1插入菜单资源
可使用同样方法复制出其它菜单。
2.添加单击鼠标右键消息
添加右键消息
添加消息映射函数以及代码:
voidCMTSPictureView:
:
OnRButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CMenudMenu;
if(!
dMenu.LoadMenu(IDR_MENU1))
AfxThrowResourceException();
CMenu*pPopupMenu=dMenu.GetSubMenu(0);
ASSERT(pPopupMenu!
=NULL);
ClientToScreen(&point);
pPopupMenu->TrackPopupMenu(TPM_CENTERALIGN|
TPM_RIGHTBUTTON,
point.x,
point.y,AfxGetMainWnd());
CView:
:
OnRButtonDown(nFlags,point);
}
图形菜单:
添加菜单位图
添加处理代码:
为框架类添加成员变量
初始化成员变量:
添加初始化菜单消息映射:
编写如下高亮现实的代码行:
修改菜单资源的对应项为加载的位图资源。
工具条:
添加、编辑工具条资源:
手动添加框架类数据成员(成员变量)
添加WM_CREATE消息处理函数:
函数代码:
intCMainFrame:
:
OnCreate(LPCREATESTRUCTlpCreateStruct)
{
if(CFrameWnd:
:
OnCreate(lpCreateStruct)==-1)
return-1;
//TODO:
Addyourspecializedcreationcodehere
//调用函数创建工具条,this指定主窗口为工具条父窗口
if(!
m_ToolBar.Create(this)||!
m_ToolBar.LoadToolBar(IDR_MAINFRM))
return-1;
m_ToolBar.EnableDocking(CBRS_ALIGN_ANY);//可以将工具条停靠在任意边上
EnableDocking(CBRS_ALIGN_ANY);//允许工具条停靠在四个边框的任意一边上
DockControlBar(&m_ToolBar);//允许工具条停靠在窗口上方
m_ToolBar.SetBarStyle(m_ToolBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY);
//设置工具条显示方格,CBRS_TOOLTIPS允许提示信息,
//CBRS_FLYBY使光标停放时显示提示信息
return0;
}
注意一点:
如果建立工程的时候选择支持工具条和状态条,那么在添加以上代码之前最好删掉原有的代码,如图:
状态条:
标准状态条
手工添状态条成员变量:
定义指示符:
在Mainfrm中添加如下结构代码(消息映射宏后面):
staticUINTIndicatorIDs[]=
{
ID_SEPARATOR,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
在成员函数OnCreate()中添加如下代码:
if(!
m_wndStatusBar.Create(this)||
!
m_wndStatusBar.SetIndicators(IndicatorIDs,sizeof(IndicatorIDs)/sizeof(UINT)))
return–1;
以上只是简单介绍了一下,系统提供的标准状态条。
1使用上面介绍的方法完成其它菜单功能代码添加编辑。
2使用上面介绍的方法完成其它工具按钮代码添加编辑。
3教材上演示提示时间的状态条。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 菜单 工具栏 状态