设计一个Windows应用程序窗口界面。该程序界面顶端为常规菜单项,点击任一
菜单即可显示下拉式子菜单,如子菜单还有菜单项,鼠标移动到该子菜单,则右侧
显示下一级子菜单。点击相应菜单可在图形窗口内绘制简单图形,在图形窗口内点
击鼠标右键可弹出快捷菜单或对话框。
二、功能要求:
1.本程序显示菜单如下:
a.文件
(1)新建
(2)打开
(3)关闭
(4)保存
(5)另存为
(6)分隔符
(7)退出
b.编辑
(1)撤销
(2)分隔符
(3)剪切
(4)复制
(5)粘贴
c.查看
(1)工具栏
(2)状态栏
d.绘图
(1)直线
(2)矩形
(3)椭圆
(4)填充
(5)分隔符
(6)线宽(弹出式菜单)
1)
选择当前线宽为1个像素
2)
选择当前线宽为3个像素
3)
选择当前线宽为5个像素
(7)线色
(8)填充色
e.窗口
(1)新建窗口
(2)层叠
(3)平铺
(4)排列图标
f.帮助
(1)关于…
2.鼠标移动到具有二级菜单的菜单项,在右方将显示对应的二级菜单。
3.能根据菜单提供的功能绘制简单图形。
4.鼠标在图形窗口中单击右键,弹出快捷菜单。快捷菜单如下:
a.剪切
b.复制
c.粘贴
d.分隔符
e.线宽
f.线色
g.填充色
三、算法提示:
1.数据结构:结构体类型数组
2.创建MFC应用程序工程,利用可视化的窗口菜单设计。
根据你的需求,你可以使用 MFC(Microsoft Foundation Class)应用程序来设计一个 Windows 应用程序窗口界面。以下是一个基本的实现示例:
// 在 MainFrm.h 文件中添加以下成员变量和函数声明
class CMainFrame : public CFrameWnd
{
// ...
protected:
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
CMenu m_menu;
// 菜单消息处理函数
afx_msg void OnFileNew();
afx_msg void OnFileOpen();
afx_msg void OnFileClose();
afx_msg void OnFileSave();
afx_msg void OnFileSaveAs();
afx_msg void OnFileExit();
afx_msg void OnEditUndo();
// 其他菜单消息处理函数...
DECLARE_MESSAGE_MAP()
};
// 在 MainFrm.cpp 文件中添加以下消息映射和函数实现
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND(ID_FILE_NEW, &CMainFrame::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CMainFrame::OnFileOpen)
ON_COMMAND(ID_FILE_CLOSE, &CMainFrame::OnFileClose)
ON_COMMAND(ID_FILE_SAVE, &CMainFrame::OnFileSave)
ON_COMMAND(ID_FILE_SAVE_AS, &CMainFrame::OnFileSaveAs)
ON_COMMAND(ID_FILE_EXIT, &CMainFrame::OnFileExit)
ON_COMMAND(ID_EDIT_UNDO, &CMainFrame::OnEditUndo)
// 其他菜单消息映射...
// 添加以下函数实现
void CMainFrame::OnFileNew()
{
// 实现新建功能,绘制新图形
}
void CMainFrame::OnFileOpen()
{
// 实现打开功能,加载图形文件
}
void CMainFrame::OnFileClose()
{
// 实现关闭功能,关闭当前图形
}
void CMainFrame::OnFileSave()
{
// 实现保存功能,保存当前图形
}
void CMainFrame::OnFileSaveAs()
{
// 实现另存为功能,将当前图形保存为指定文件
}
void CMainFrame::OnFileExit()
{
// 实现退出功能,关闭应用程序
PostMessage(WM_CLOSE);
}
void CMainFrame::OnEditUndo()
{
// 实现撤销功能
}
// 其他菜单消息处理函数的实现...
END_MESSAGE_MAP()
// 在 MainFrm.cpp 文件中的 OnCreate() 函数中添加以下代码,用于加载和显示菜单
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// 创建菜单
if (!m_menu.LoadMenu(IDR_MAINFRAME))
return -1;
// 将菜单关联到窗口
SetMenu(&m_menu);
// 创建工具栏
if (!m_wndToolBar.Create(this) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
return -1;
}
// 创建状态栏
if (!m_wndStatusBar.Create(this))
{
return -1;
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));
return 0;
}
这只是一个简单示例的代码,你需要根据你的实际需求进行进一步定制和实现。你可以根据菜单项的功能实现相应的绘图逻辑,并在图形窗口中绘制简单图形。同时,你还需要实现鼠标移动和右键单击的消息处理函数,以响应用户的操作。用appwizard新建一个mfc mdi类型应用程序,基本上以上界面,菜单工具条什么的都有了
在 CView::OnDraw 里面添加绘图代码即可。