- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于MFC的视图框架的UI设计,mfcui设计,mfcui,mfcui库,mfcui线程,mfc好用的ui库,directui和mfc区别,免费mfcui库,mfc线程更新ui,ui框架设计
基于MFC的文档/视图框架的 UI 设计
一.创建一个简单功能的SDI应用程序
使用Application Wizard创建一个MFC应用程序项目,该项目名为:MyMulitView。
点击确定,在弹出的“MFC应用程序向导”项目创建信息配置窗口中,仅将“应用程序类型”选择为“单文档”,其他所有配置项使用默认值。
最终,系统为我们创建一个MFC SDI应用程序。该应用程序中定义了如下图所示的类:
CMainFrame 框架窗口类,派生于CFrameWnd类; CMyMulitViewApp 应用程序类,派生于CWinApp类; CMyMulitViewDoc 文档类,派生于CDocument类; CMyMulitViewView 视图类,派生于CView类; CAboutDlg 对话框资源对应的类,派生于CDialog 以上的5个类中,最重要的是CMyMulitViewApp和CMainFrame这两个类。前者为我们调用winmain入口函数,并使用InitInstance虚函数来完成所有主框架被显示之前的初始化工作。后者则囊括了所有窗口界面元素,并实现用户通过这些界面元素产生的消息与其处理程序联系的重要工作。
在不做任何工作的前提下,运行本工程,得到的运行结果如下图所示:
虽然我们什么都没做,但是这个运行出来的程序所具有的功能还是相当丰富的。我们所要做的就是在此基础之上添加自定义代码,来丰富其功能,达到自己的目的。
下面,我们一步一步的来添加相应代码,来为这个应用程序实现一个简单绘图功能,并具有打开已存在文档和保存文档的功能。
打开本项目的资源文件,为菜单资源中添加一个名为“颜色”的栏目,并在其下添加3个子菜单项:
菜单名 资源ID RED ID_RED YELLOW ID_YELLOW GREEN ID_GREEN
在MyMulitViewDoc.h文件中添加:
#define ARRAY_UNIT_NUM 16 以上宏用来作为保存颜色二维数组每一维的长度值
protected:
COLORREF m_clrCurrentColor;
COLORREF m_clrGrid[ARRAY_UNIT_NUM][ARRAY_UNIT_NUM]; 定义两个成员数据,前者用来保存当前填充的颜色值,后者用来保存绘制出的网格中各个方块的颜色值。
public:
void SetSquare (int i, int j, COLORREF color);
COLORREF GetSquare (int i, int j);
COLORREF GetCurrentColor();
函数 说明 SetSquare 设置(i,j)的方块颜色为color指定的值 GetSquare 获取(i,j)的方块的颜色 GetCurrentColor 获取当前用于填充的颜色
在MyMulitViewDoc.cpp文件中添加:
在OnNewDocument()中添加如下代码:
for (int i=0; iARRAY_UNIT_NUM; i++)
for (int j=0; jARRAY_UNIT_NUM; j++)
m_clrGrid[i][j] = RGB (255, 255, 255);
m_clrCurrentColor = RGB (255, 0, 0);
完成Serialize(CArchive ar)函数
if (ar.IsStoring())
{
for (int i=0; iARRAY_UNIT_NUM; i++)
for (int j=0; jARRAY_UNIT_NUM; j++)
ar m_clrGrid[i][j];
ar m_clrCurrentColor;
}
else
{
for (int i=0; iARRAY_UNIT_NUM; i++)
for (int j=0; jARRAY_UNIT_NUM; j++)
ar m_clrGrid[i][j];
ar m_clrCurrentColor;
}
完成前面声明的3个成员函数的定义:
COLORREF CMyMulitViewDoc::GetCurrentColor()
{
return m_clrCurrentColor;
} COLORREF CMyMulitViewDoc::GetSquare(int i, int j)
{
ASSERT (i = 0 i = ARRAY_UNIT_NUM-1 j = 0 j = ARRAY_UNIT_NUM-1);
return m_clrGrid[i][j];
您可能关注的文档
- 基于DPSR模型的节水型绿色生态居民生活小区评价指标体系构建.pdf
- 基于DSP和图像识别的拉索表面缺陷检测技术.pdf
- 基于DSP的CAN总线通信的设计与实现.pdf
- 基于DTMF控制信令的应急广播中波覆盖网搭建初探朱国珊.pdf
- 基于EEE模型的农村基础教育信息化绩效评估体系应用方法研究张晓卉.pdf
- 基于ESPI的GSMR场强数据采集系统的设计与实现.pdf
- 基于FLUENT在Workbench平台下参数化及优化应用.pdf
- 基于Flexsim的物流仓储系统的建模与仿真.pdf
- 基于FLUENT软件的有限速率模型对选择性非催化还原工艺的模拟梁秀进.pdf
- 基于FPGA的通用液晶显示控制器的设计和实现.pdf
文档评论(0)