数据库开发之窗体编程

在很多管理信息系统的窗体都有一些共同点:可以通过框架菜单打开各种类型的视图窗口,而这些视图窗口具有MDI的一些特点,可以在框架窗体中最小化最大化还原等,并且点击菜单只能产生一个窗口(象SDI)。这种形式的窗口设计给人与一种条理感。于是我用VC6.0尝试创建这种窗口,现将整个过程为大家写下来,这里应含有MFC的一些内幕技术。

一、新建AppWizad(exe)工程,名为mdisdi,基于MDI的文档视模式(其余默认)。

二、在CApp子类中添加如下代码:

public:
  CMultiDocTemplate* pDoctemp1;
  CMultiDocTemplate* pDoctemp2;

三、修改InitInstance()中将如下代码:

CMultiDocTemplate* pDocTemplate;
  pDocTemplate = new CMultiDocTemplate(
    IDR_MDISDITYPE,
    RUNTIME_CLASS(CMdisdiDoc),
    RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    RUNTIME_CLASS(CMdisdiView));
  AddDocTemplate(pDocTemplate);
改为:

//CMultiDocTemplate* pDocTemplate;//删除
    pDoctemp1 = new CMultiDocTemplate(
    IDR_MDISDITYPE,
    RUNTIME_CLASS(CMdisdiDoc),
    RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    RUNTIME_CLASS(CMdisdiView));
   AddDocTemplate(pDoctemp1);

四、加入新类CDoc2,基类为CDocument(利用菜单Insert-New Class…让其自动生成即可);加入新框架类CChildFrame2,基类为CMDIChildWnd;

加入新视类,这里新加CView2基类为CFormView类(Insert-New Form…),注意在添加对话框中将Document选为CDoc2;

五、同(三)将如下代码:

CMultiDocTemplate* pNewDocTemplate = new CMultiDocTemplate(
        IDR_VIEW2_TMPL, 
    RUNTIME_CLASS(CDoc2), // document class
    RUNTIME_CLASS(CMDIChildWnd), // frame class
    RUNTIME_CLASS(CView2)); // view class
   AddDocTemplate(pNewDocTemplate);

改为:

pDoctemp2 = new CMultiDocTemplate(
      IDR_VIEW2_TMPL, 
    RUNTIME_CLASS(CDoc2), // document class 
     RUNTIME_CLASS(CChildFrame2), // frame class 
      RUNTIME_CLASS(CView2)); // view class 
   AddDocTemplate(pDoctemp2);
并在mdisdi.cpp头部添加:

#include "Doc2.h"

六、修改IDR_MAINFRAME菜单,新添一菜单“功能”,其子菜单为窗口1和窗口2.用ctrl+c复制,ctrl+v粘贴,产生二个新菜单IDR_MAINFRAME1和IDR_MAINFRAME2,再将其更名为IDR_MDISDITYPE,IDR_VIEW2_TMPL.

七、为IDR_MAINFRAME菜单新添菜单增加消息应射函数OnMenuitem32771()和OnMenuitem32772()

八、在MainFrm.h加入:

#include "mdisdiDoc.h"
  #include "Doc2.h"
并在类中添加:

public:
  CMdisdiDoc * pDoc1;
  CDoc2 * pDoc2;
在MainFrm.cpp增加代码如下:

void CMainFrame::OnMenuitem32771() 
  {
  // TODO: Add your command handler code here
    if(pDoc1==NULL)
   {
    CMdisdiApp * pmdisdiapp =(CMdisdiApp *)AfxGetApp();
    pDoc1=(CMdisdiDoc *)
    pmdisdiapp->pDoctemp1->OpenDocumentFile(NULL);
    }
    else
   {
    POSITION pos;
    pos=pDoc1->GetFirstViewPosition();
    CView * pView;
    pView=pDoc1->GetNextView(pos);
    pView->GetParentFrame()->ActivateFrame();
   }
  }
 void CMainFrame::OnMenuitem32772() 
 {
    if(pDoc2==NULL)
   { 
    CMdisdiApp * pmdisdiapp =(CMdisdiApp *)AfxGetApp();
    pDoc2=(CDoc2 *)
    pmdisdiapp->pDoctemp2->OpenDocumentFile(NULL);
   }
    else
   {
    POSITION pos;
    pos=pDoc2->GetFirstViewPosition();
    CView * pView;
    pView=pDoc2->GetNextView(pos);
    pView->GetParentFrame()->ActivateFrame();
   }
 }

时间: 2024-10-03 21:29:43

数据库开发之窗体编程的相关文章

JSP学习之数据库开发小结_JSP编程

本文总结了JSP学习之数据库开发方法.分享给大家供大家参考.具体如下: SQL语言的组成: 1>数据定义语言DDL 用于定义SQL模式,数据表,视图和索引等数据库对象 2>数据操纵语言DML 数据查询和数据更新语言 3>数据控制语言DCL 设定或更改数据库用户或角色 4>嵌入式SQL语言 SQL语句嵌入到宿主语言中 数据类型: 1>数字类型 INTEGER SMALLINT REAL NUMERIC DECIMAL FLOAT DOUBLE... 2>日期和时间类型 T

access 如何编程打开其他数据库中的窗体?

access|编程|数据|数据库 如何编程打开其他数据库中的窗体?    简述:如何编程打开其他数据库中的窗体?    问题: 如何编程打开其他数据库中的窗体,使用完毕后退回?我新建了一个数据库,里面只有一个Form,我想在Form上添加几个按钮,每个按钮上对应一个Click事件,事件的动作就是打相应的Access数据库,并执行该数据库中的Menu表单,关闭数据库后又回到有按钮的Form来.   回答: Function OpenOhterMDB()    Dim objApp As New A

access编程打开其他数据库中的窗体

简述:如何编程打开其他数据库中的窗体? 问题: 如何编程打开其他数据库中的窗体,使用完毕后退回? 我新建了一个数据库,里面只有一个Form,我想在Form上添加几个按钮,每个按钮上对应一个Click事件,事件的动作就是打相应的Access数据库,并执行该数据库中的Menu表单,关闭数据库后又回到有按钮的Form来. 回答: function openohtermdb() dim objapp as new access.application objapp.opencurrentdatabase

vs2010开发的窗体程序 数据库使用access如何打包成安装文件

问题描述 vs2010开发的窗体程序数据库使用access如何打包成安装文件,我尝试了多次但是都是不成功,求大神文档 解决方案 解决方案二: 解决方案三:引用1楼guwei4037的回复:access数据库直接加在到里面就可以了是吗?解决方案四:access不是直接一个文件就行了嘛

.NET Winform登录窗体编程设计及数据库表

.NET Winform登录窗体编程设计及数据库表 : 源代码: 窗体主界面 查找学生(由于重装系统 DB丢失 所以没有数据)

使用C++的托管扩展针对Windows窗体编程

摘要:本文讨论了如何使用 Visual C++ .NET 的托管扩展针对 Windows 窗体编程,并提供了使用直接访问 Windows 窗体类的手动编程技术的示例,以及使用 Windows 窗体设计器的示例.此外,本文还对 Windows 窗体和 Microsoft 基础类 (MFC) 应用程序进行了比较. 简介 长期以来,程序员们都使用 C 和 C++ 来开发 Windows GUI 应用程序.对于我们当中很多人来说,这一段历史可以追溯到 Windows 2.0 时期,那时,我们使用基于 C

004_《Delphi6数据库开发典型实例》

<Delphi6数据库开发典型实例> Delphi 教程 系列书籍 (004) <Delphi6数据库开发典型实例> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf  作者: 尹立民 丛书名: 软件工程师丛书 出版社:电子工业出版社 ISBN:7505380109 上架时间:2006-10-25 出版日期:2002 年11月 开本:16开 页码:536 版次:1-1 内容简介 本书主要针对具有一定Delphi 6应用基础或windows程序设计经验

100_《Delphi5数据库开发技术》

<Delphi5数据库开发技术> Delphi 教程 系列书籍 (100) <Delphi5数据库开发技术> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: 下载 作者: 毛棱等编著 丛书名: 软件开发技术丛书 出版社:机械工业出版社 ISBN:7111078209 上架时间:2000-7-1 出版日期:2000 年3月 页码:354 版次:1-1 内容简介 Delphi是一种非常优秀的可视化程序开发语言,Delphi 5 基于Windows 95/98/

C#窗体编程,菜单合并

问题描述 用C#窗体编程开发一个软件,实现大概为把软件界面分成菜单,下面分成左右两部分,左边是功能按钮,通过单击事件,动态改变右边的显示.在主窗体中先用panel定好了格局,创建各功能对应的"用户控件",通过在右边panel填充不同的用户控件实现不同的功能操作.因为不同的功能可能对应不同的菜单项,想请问一下,怎样对不同的功能动态改变菜单项?注意,软件不是MDI,不是主窗体和子窗体菜单合并的问题.PS:有个例子源代码,是可以在对应的功能"用户控件"中加入菜单,并且实现