• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 在控件中建立了Document/View的框架,如何建立这个框架的MainFrame与控件窗口的联系?

在控件中建立了Document/View的框架,如何建立这个框架的MainFrame与控件窗口的联系?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 在控件中建立了Document/View的框架,如何建立这个框架的MainFrame与控件窗口的联系?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在控件中建立了Document/View的框架,如何建立这个框架的MainFrame与控件窗口的联系?
描述:

本版有这个例子了,引用一下
---- 三、引入Document/View结构技术 
---- 下面介绍在制作ActiveX控件时引入Document/View技术,制作步骤如下: 
在上面工作的基础上,在Hello工程中用ClassWizard添加一新类CPrintFrame,取其父类为CFrameWnd;
在PrintFrame.h中将CPrintFrame的构造函数CPrintFrame()和析构函数virtual ~CPrintFrame()从protected改为public;
在Hello工程中用ClassWizard添加一新类CPrintView,取其父类为CView;
在PrintView.h中将CPrintView的构造函数CPrintView()和析构函数virtual ~CPrintView()从protected改为public;
在Hello工程中用ClassWizard添加一新类CPrintDoc,取其父类为CDocument;
在PrintDoc.h中将CPrintDoc的构造函数CPrintDoc()和析构函数virtual ~CPrintDoc()从protected改为public;
在Hello工程中用ClassWizard添加一新类CPrintThread,取其父类为CWinThread;
在HelloCtrl.h文件中为CHelloCtrl类添加成员变量CPrintThread* m_pPrintThread,确认在HelloCtrl.h中已加入语句#include "PrintThread.h"; 
void CHelloCtrl::DoHello() 
{
// 创建打印线程
m_pPrintThread = (CPrintThread*)
AfxBeginThread(RUNTIME_CLASS(CPrintThread),
THREAD_PRIORITY_NORMAL, CREATE_SUSPENDED, NULL);
m_pPrintThread- >ResumeThread();
}
在PrintThread.h中添加新成员变量 
CPrintDoc* m_pPrintDoc和CPrintFrame* m_pPrintFrame,
并在构造函数和析构函数中完成对它们的初始设置和清除,
确认在PrintThread.h中已加入语句#include 
"PrintDoc.h"和#include "PrintFrame.h";
CPrintThread::CPrintThread()
{
m_pPrintDoc=NULL;
m_pPrintFrame=NULL;
}
CPrintThread::~CPrintThread()
{
if (m_pPrintDoc!=NULL)
delete m_pPrintFrame;
if (m_pPrintFrame!=NULL)
delete m_pPrintDoc;
}
在PrintThread.cpp的CPrintThread::InitInstance中,进行创建窗体CPrintFrame,确认在PrintThread.cpp中已加入语句#include "PrintFrame.h"; 
BOOL CPrintThread::InitInstance()
{
// 创建文档/视图框架
CPrintFrame* pFrame = new CPrintFrame;
m_pMainWnd = pFrame;
m_pPrintFrame=pFrame;
m_pPrintDoc=new CPrintDoc;
CCreateContext context;
context.m_pCurrentDoc = m_pPrintDoc;
context.m_pNewViewClass = RUNTIME_CLASS(CPrintView);
pFrame- >Create(NULL,"打印主窗体",
WS_OVERLAPPEDWINDOW,CRect(0,0,100,100),
NULL,NULL,0,&context);
pFrame-  >InitialUpdateFrame(m_pPrintDoc, TRUE);
return TRUE;
}
在PrintView.h的CPrintView中,添加成员函数CPrintDoc* GetDocument(),确认在PrintView.h中已加入语句#include "PrintDoc.h"; 
CPrintDoc* CPrintView::GetDocument()
{
ASSERT(m_pDocument- >IsKindOf
(RUNTIME_CLASS(CPrintDoc)));
return (CPrintDoc*)m_pDocument;
}
关键是在创建MainFrame的时候如何将这个MainFrame与控件窗口CHelloCtrl建立联系?如何获取控件窗口的指针?因为这个涉及到新生成的MainFrame的定位问题(默认坐标在屏幕左上角)。如果控件的父窗体(如Dialog)被拖动,那么这个控件如何关联的一起被移动?(否则肯定穿帮)。如何建立新生成的MainFrame和控件窗体的联系?


解决方案1:

GetParent()????

解决方案2:

BOOL Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = 
WS_OVERLAPPEDWINDOW, const RECT& rect = rectDefault, CWnd* pParentWnd = NULL,//<=====此处是你控件的指针,就建立了关联
 LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0, CCreateContext* pContext = NULL );


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在控件中建立了Document/View的框架,如何建立这个框架的MainFrame与控件窗口的联系?

相关文章

  • 2017-06-05 -===”在线等待“==-注册表里的组件下的InprocServer32子键包含的是线程模形,什么时候用到?
  • 2017-06-04 经济萧条……送分送分啦!
  • 2017-06-05 VarBoolFromCy这个函数似乎没有什么存在的意义啊
  • 2017-06-05 VC如何屏蔽Alt+F4
  • 2017-06-05 网上的AMCap摄像头录制没有压缩视频和音频,要怎么加上这个FITER
  • 2017-06-05 VC使用IHTMLElement模拟点击网页按钮的问题!
  • 2017-06-04 SDK下如何在dialog里使用Webbrowser控件,为何添加后dialog无法显示?
  • 2017-06-04 关于VC调用Excel的问题!
  • 2017-06-04 如何利用COM+创建服务器端和客户端安装程序
  • 2017-06-04 win2000组件服务的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于MFC操作浏览器
    • 哪有C++的XML解析类,能读XML的就行,最好使用MS的DOM接口来做的。
    • mfc,dll,导出类
    • 我想得到OLEVIEW的核心代码,用来实现以下功能:
    • 有谁知道Word的命令格式(程序与Word通过DDE进行通讯)?谢谢!
    • 我在ATL中调用LoadLibrary失败,为什么?
    • Win32Dynamic-LinkLibrary方式
    • 怪事年年有,今年特别多。关于串口线程的一个问题。
    • mscomm控件使用中的串口选择切换问题
    • 关于ATL的问题?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有