在ActiveX控件中引入窗体技术
this, AFX_IDW_PANE_FIRST, NULL); return 0; } void CHelloCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { // 定位Hello对话框 m_helloFormView.MoveWindow(rcBounds,TRUE); } 三、引入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";
在PrintThread.cpp的CPrintThread::InitInstance中,进行创建窗体CPrintFrame,确认在PrintThread.cpp中已加入语句#include "PrintFrame.h";
在PrintView.h的CPrintView中,添加成员函数CPrintDoc* GetDocument(),确认在PrintView.h中已加入语句#include "PrintDoc.h";
四、实现ActiveX打印预览技术 下面介绍利用上面的技术成果来实现ActiveX的打印预览技术,实现步骤如下: 在上面工作的基础上,用ClassWizard对CPrintView类实现OnPreparePrinting函数,如下:
用ClassWizard在Automation页中为CHelloCtrl添加一方法void DoPreview(),外部名亦为DoPreview;
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |