当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 数据库开发之窗体编程

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 数据库开发之窗体编程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 66 ::
收藏到网摘: n/a

数据库开发之窗体编程

作者:李强

下载源代码


  在很多管理信息系统的窗体都有一些共同点:可以通过框架菜单打开各种类型的视图窗口,而这些视图窗口具有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(N