对话框上创建视图方法总结

 

作者:朱金灿
来源:http://blog.csdn.net/clever101


       之前有网友问我在对话框上如何创建视图,晚上总结了一些方法。
在VS 2005上创建一个基于对话框的工程:CreateView。然后新建一个视图类:CMyView,派生自CView。


然后在对话框类CCreateViewDlg上定义一个视图类指针:


  1. CMyView *m_pView;  



为了使得视图创建在指定的区域,在对话框上放一个静态文本控件,资源ID为IDC_STATIC_VIEW。


方法一:

     在对话框的OnInitDialog函数里添加如下代码:


  1. BOOL CCreateViewDlg::OnInitDialog()  
  2. {  
  3.     CDialog::OnInitDialog();  
  4.     // 将“关于...”菜单项添加到系统菜单中。   
  5.     // IDM_ABOUTBOX 必须在系统命令范围内。   
  6.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);  
  7.     ASSERT(IDM_ABOUTBOX < 0xF000);  
  8.     CMenu* pSysMenu = GetSystemMenu(FALSE);  
  9.     if (pSysMenu != NULL)  
  10.     {  
  11.         CString strAboutMenu;  
  12.         strAboutMenu.LoadString(IDS_ABOUTBOX);  
  13.         if (!strAboutMenu.IsEmpty())  
  14.         {  
  15.             pSysMenu->AppendMenu(MF_SEPARATOR);  
  16.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);  
  17.         }  
  18.     }  
  19.     // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动   
  20.     //  执行此操作   
  21.     SetIcon(m_hIcon, TRUE);         // 设置大图标   
  22.     SetIcon(m_hIcon, FALSE);        // 设置小图标   
  23.     // TODO: 在此添加额外的初始化代码   
  24.       UINT TargetCtrlID = IDC_STATIC_VIEW;    
  25.       CWnd *pWnd = this->GetDlgItem(TargetCtrlID);    
  26.      CRect RectTargetCtrl;    
  27.      pWnd->GetWindowRect(RectTargetCtrl);    
  28.       this->ScreenToClient(RectTargetCtrl);    
  29.       m_pView = (CMyView*)RUNTIME_CLASS(CMyView)->CreateObject();  
  30.     //在目标位置动态创建视图   
  31.     if (NULL==m_pView)    
  32.     {    
  33.         return FALSE;    
  34.      }    
  35.      m_pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, RectTargetCtrl, this, TargetCtrlID);    
  36.     return TRUE;  // 除非将焦点设置到控件,否则返回TRUE   
  37. }  


为了验证视图效果,在视图类的OnDraw函数添加如下代码:


  1. void CMyView::OnDraw(CDC* pDC)  
  2. {  
  3.     CDocument* pDoc = GetDocument();  
  4.     // TODO: 在此添加绘制代码   
  5.     CRect rt(0,50,200,200);  
  6.     pDC->DrawText(_T("这是在对话框上创建的视图"),&rt,DT_LEFT);  
  7. }  
  8.    


方法二:

方法二和方法一大同小异,只需改动对话框类的OnInitDialog函数中的代码:


  1. BOOL CCreateViewDlg::OnInitDialog()  
  2. {  
  3.     CDialog::OnInitDialog();  
  4.     // 将“关于...”菜单项添加到系统菜单中。   
  5.     // IDM_ABOUTBOX 必须在系统命令范围内。   
  6.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);  
  7.     ASSERT(IDM_ABOUTBOX < 0xF000);  
  8.     CMenu* pSysMenu = GetSystemMenu(FALSE);  
  9.     if (pSysMenu != NULL)  
  10.     {  
  11.         CString strAboutMenu;  
  12.         strAboutMenu.LoadString(IDS_ABOUTBOX);  
  13.         if (!strAboutMenu.IsEmpty())  
  14.         {  
  15.             pSysMenu->AppendMenu(MF_SEPARATOR);  
  16.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);  
  17.         }  
  18.     }  
  19.     // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动   
  20.     //  执行此操作   
  21.     SetIcon(m_hIcon, TRUE);         // 设置大图标   
  22.     SetIcon(m_hIcon, FALSE);        // 设置小图标   
  23.     // TODO: 在此添加额外的初始化代码   
  24.       UINT TargetCtrlID = IDC_STATIC_VIEW;    
  25.       CWnd *pWnd = this->GetDlgItem(TargetCtrlID);    
  26.      CRect RectTargetCtrl;    
  27.      pWnd->GetWindowRect(RectTargetCtrl);    
  28.       this->ScreenToClient(RectTargetCtrl);    
  29.     CCreateContext context;  
  30.     context.m_pCurrentDoc = NULL;//不要文档为空   
  31.     context.m_pCurrentFrame = (CFrameWnd *)this;//设置父窗体指针,将对话框指针强制转换   
  32.     context.m_pLastView = NULL;//前一个视图为空   
  33.     context.m_pNewDocTemplate = NULL;//文档模板为空   
  34.     context.m_pNewViewClass = RUNTIME_CLASS(CMyView);  
  35.     //1.动态调用CreateObject创建一个对象并获得指针   
  36.     m_pView = (CMyView*)context.m_pNewViewClass->CreateObject();//通过指针创建视图对象   
  37.     //以下代码参考CFrameWnd类中的CreateView函数   
  38.     if (m_pView==NULL) {  
  39.         TRACE1("Warning: Dynamic create of view type %hs failed./n",  
  40.             context.m_pNewViewClass->m_lpszClassName);  
  41.     }  
  42.     ASSERT_KINDOF(CWnd,m_pView);  
  43.     //2.真正创建视图窗口   
  44.     if (!m_pView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,RectTargetCtrl,this,  
  45.         AFX_IDW_PANE_FIRST,&context))   
  46.     {  
  47.         TRACE0("Warning: Couldn't create view for frame./n");  
  48.         return FALSE;  
  49.     }  
  50.     return TRUE;  // 除非将焦点设置到控件,否则返回TRUE   
  51. }  


效果图如下:


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《大学计算机基础》 (课程编号:B0900650) 实验报告 (2014—2015学年第1学期) 实验成绩: 学 号: 姓 名: 专业班级: 课 堂 号: 任课教师: 完成日期: "一、实验目的及要求 " "1.1 能熟练掌握 Windows7的启动、退出,以及操作界面和操作方法。 " "1。2 能够熟练掌握Windows7操作系统的相关操作。 " "1。3 能够熟练完成文档的编辑及修饰。 " "1。4 能够熟练建立Excel表格,并能够进行排序、筛选及分类汇总的操作。 " "1。5 能够熟练掌握创建PowerPoint演示文稿。 " "1.6 能够运用网络进行相应的搜索。 " "二、实验设备(环境)及要求 " "PC机,Windows 7,Office 2010 " "实验参考教材: " "《大学计算机基础实验指导》(第三版). " "(以下简称《实验教程》) " "三、实验内容及记录 " " " "本课程的实验指导书提供了三十多个实验。根据学生的普遍水平和教学时数安 " "排,教师应选择其的5个实验,作为实验课时的主要内容,并将实验报告和结果" "作为期末成绩考核的依据.其他实验项目作为预习内容或课外练习。建议实验内" "容具体如下: " " " "实验项目一:熟悉Windows 7系统 " " " "1、预习要求:PC的组成、汉字输入法、鼠标键盘的操作、Windows 7的文件系 " "统、Windows 7控制面板。 " "2、实验目的: " "(1)掌握资源管理器文件和文件夹的管理; " "(2)掌握单个与多个文件的操作方法。 " "(3)学习利用Windows " "7控制面板提供的功能完成对计算机各种参数进行个性化配置。 " "3、实验内容及要求: " "(1)建立文件和文件夹; " "答:1.双击"计算机"图标,再在窗口双击E盘; " " " "2.单击右键,选"新建",再选"文件夹"或"word文档" " " " "文件和文件夹的移动、复制、删除; " "答:1.选"文件",单击右键,在快捷菜单"剪切",然后再在希望粘贴 " "的地方,单击右键,选"粘贴"; " "选"文件",单击右键,在快捷菜单"复制",然后再在希望粘贴的地方," "单击右键,选"粘贴"; " "选"文件",单击右键,在快捷菜单"删除",然后再在弹出的对话框,单" "击"是"。 " " " "文件属性的操作; " " " "单个与多个文件的选取方法。 " "答:1。选择单个文件,鼠标左键单击该文件夹。 " "2.选择连续的多个文件,按住Shift键,用鼠标左键点击要选择的第一个文件, " "再点击要选择的最后一个文件. " "3.选择不连续的多个文件,按住Ctrl键,用鼠标左键依次点击要选择的各个文件" "。 " "4.选择所有文件:按Ctrl+A组合键,实现选所有文件. " " " "(5)校准计算机系统的时间; " "答:1.点击"开始"按钮,打开"控制面板"; " " " "在控制面板找到"日期和时间"按钮,点击"更改日期和时间"; " " " " " "(6)查看系统配置的详细信息; " "答:1.启动"Windows任务管理器",在"性能"选项卡可以查看当前计算机的性" "能参数。 " " " "若想了解更加详细的情况,单击"资源管理器",在打开的窗口选择"CPU选项卡" ""。 " "添加、删除程序; " "答 打开"开始"菜单,找到"控制面板",再找到"添加删除程序"。 " " " "配置桌面显示属性。 " "答:打开"我的电脑",单击"控制面板",再点击"外观和个性化",之后单击"显示" ""。 " " " "实验项目二:Word使用 " " " "1、预习要求:汉字输入、Word的插入菜单、Word视图文档格式设置、文本框" "、表格处理等。 " "2、实验目的: " "(1)掌握文本的录入与文本的选定、复制、移动、删除、剪切和粘贴; " "(2)掌握文本的查找与替换. " "(3)熟练掌握Word图文混排功能。 " "(4)掌握表格在Word起两个作用:数据整理与版式编排,熟练掌握Word表格 " "制作与修饰功能。 " "3、实验内容及要求: " "(1)依照范文进行文本录入; " "答:1.按照范文录入文本; " "2.保存文档,在E盘根目录下创建一个名为"范文"的文件夹,将文档取名为"范 " "文.docx"。 " " " "依照要求修改和编辑文档; " "答:1.光标定位到第一行,切换到"插入"选项; " "2.单击"插图"选项组的"图片",打开"插入图片"对话框; " "3.在"文件名"文本框选定图片,单击插入. " " " "对文档进行复制、删除操作; "
第十一章 报表与标签 11.1 创建报表 11.2 设计标签 11.1 创建报表 报表包含两个基本组成部分:数据源与布局。数据源通常是数据库 报表包含两个基本组成部分:数据源与布局。数据源通常是数据库 地表 地表, ,但也可以是视图 但也可以是视图, ,查询或临时表。视图与查询将筛选 查询或临时表。视图与查询将筛选, ,排序 排序, ,分 分 组数据库地数据 组数据库地数据, ,而报表布局定义了报表地打印格式。在定义了一 而报表布局定义了报表地打印格式。在定义了一 个表 个表, ,一个视图或查询后 一个视图或查询后, ,便可以创建报表或标签。 便可以创建报表或标签。 11.1.1 报表向导创建报表 利用 利用" "报表向导 报表向导" "可以创建基于一个表或视图地报表 可以创建基于一个表或视图地报表, ,我们以 我们以jsgz.dbf jsgz.dbf 表为例 表为例, ,创建 创建" "教师工资 教师工资" "报表。步骤如下: 报表。步骤如下: 1. 1. 打开 打开" "项目管理器 项目管理器", ",选择 选择" "文档 文档" "选项卡。 选项卡。 2. 2. 选择 选择" "报表 报表" "项 项, ,单击 单击" "新建 新建" "按钮 按钮, ,出现如图 出现如图11-1 11-1所示对话框 所示对话框, ,选择 选择" "报表 报表 向导 向导" "按钮 按钮, ,出现如图 出现如图11-2 11-2所示对话框 所示对话框, ,选择 选择" "报表向导 报表向导" "。 。 图11-1 "新建报表"对话框 图11-2 "向导选取"对话框 3. 3. 在 在" "向导选取 向导选取" "对话框 对话框, ,有 有" "报表向导 报表向导" "与 与" "一对多报表 一对多报表 向导 向导" "两个列表选项 两个列表选项, ,其第一个选择项地向导是用来 其第一个选择项地向导是用来 创建单一表或视图创建地带格式报表 创建单一表或视图创建地带格式报表; ;第二项是用来 第二项是用来 创建一组父表记录和其相关子表记录地报表。我们 创建一组父表记录和其相关子表记录地报表。我们 选择第一个选项。 选择第一个选项。 4. 4. 单击 单击" "确定 确定" "后 后, ,出现步骤 出现步骤1-" 1-"字段选取 字段选取", ",如图 如图11-3 11-3所示。 所示。 5. 5. 选择 选择jsgz jsgz表地 表地 "bh","jbgz","gwgz" "bh","jbgz","gwgz"与 与"sfgz" "sfgz"字段。 字段。 6. 6. 单击 单击" "下一步 下一步" "按钮 按钮, ,出现如图 出现如图11-4 11-4所示对话框。 所示对话框。 图11-3 步骤1-"字段选取" 图11-4 步骤2-"分组"对话框 7. 7. 这一步是选择分组记录所依据地字段 这一步是选择分组记录所依据地字段, ,在该对话框可 在该对话框可 设置三级分组字段 设置三级分组字段, ,在每一级地下拉列表可选择所需 在每一级地下拉列表可选择所需 要地字段。选择字段后 要地字段。选择字段后, ,可以选取 可以选取" "分组选项 分组选项" "与 与" "总结总结选 项 项" "来进一步完善分组设置。 来进一步完善分组设置。 选择 选择" "分组选项 分组选项" "将打开 将打开" "分组间隔 分组间隔" "对话框 对话框, ,从可以选择与 从可以选择与 用来分组地字段所含地数据类型相关地筛选级别。 用来分组地字段所含地数据类型相关地筛选级别。 选择 选择" "总结选项 总结选项" "将打开一个新地对话框 将打开一个新地对话框, ,可以利用计算类型 可以利用计算类型 来处理数值型字段。 来处理数值型字段。 此处我们不作分组选择。点击 此处我们不作分组选择。点击" "下一步 下一步" "。 。 8. 8. 进入步骤 进入步骤3-" 3-"选择报表样式 选择报表样式" "对话框。如图 对话框。如图11-5 11-5所示。 所示。 图11-5 步骤3-"选择报表样式"对话框 9. 9. 选择 选择" "经营式 经营式", ",单击 单击" "下一步 下一步" "按钮。进入步骤 按钮。进入步骤4-" 4-"定义报表布局 定义报表布局" "对话 对话 框 框, ,如图 如图11-6 11-6所示。 所示。 图11-6 步骤4-"定义报表布局"对话框 10. " 10. "定义报表布局 定义报表布局" "对话框提供了纵向布局与横向布 对话框提供了纵向布局与横向布 局两种方式:纵向布局指字段与其它数据在同一 局两种方式:纵向布局指字段与其它数据在同一 列地布局方式 列地布局方式; ;横向布局是指字段与

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值