快速业务通道

在ActiveX控件中引入窗体技术

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
() {
 // 进行打印预览
 ::PostMessage(m_pPrintThread- >m_pPrintFrame- > GetActiveView()- >m_hWnd,WM_USER_PREVIEW,0,0);
}

在PrintView.h中添加#define WM_USER_PREVIEW WM_USER+10

在PrintView.cpp中的消息映射中添加ON_MESSAGE(WM_USER_PREVIEW, DoPreview),形成如下:

BEGIN_MESSAGE_MAP(CPrintView, CView)ON_MESSAGE(WM_USER_PREVIEW, DoPreview)
//
{{AFX_MSG_MAP(CPrintView)
//
}}
AFX_MSG_MAPEND_MESSAGE_MAP()

为类CPrintView添加成员函数LRESULT DoPreview(WPARAM wParam, LPARAM lParam)

实现CPrintView::DoPreview如下:

LRESULT CPrintView::DoPreview(WPARAM wParam, LPARAM lParam){
 // 进入打印预览
 OnFilePrintPreview();
 return 0;
}

为CPrintView添加public成员变量COleControl* m_pControlPreview,并初始化如下:

CPrintView::CPrintView(){
 m_pControlPreview=NULL;
 // 初始化要预览的ActiveX控件类为空
}

在CPrintView::OnDraw中对控件内容进行显示:

void CPrintView::OnDraw(CDC* pDC){
 if (m_pControlPreview==NULL)
  pDC->TextOut(0,0,"No Preview View");
 else {
  CRect controlRect;
  m_pControlPreview- >GetClientRect(&controlRect);
  CRect previewRect(0,0,controlRect. Width(),controlRect.Height());
  m_pControlPreview- >OnDraw (pDC,controlRect,controlRect);
 }
}

用ClassWizard在Automation页中为CHelloCtrl添加一方法void SetPreviewControl(),外部名亦为SetPreviewControl,对其实现如下:

void CHelloCtrl::SetPreviewControl() {
 // 设置要预览的View
 CView* pView=m_pPrintThread- > m_pPrintFrame- >GetActiveView();
 CPrintView* pPrintView=(CPrintView*)pView;
 pPrintView- >m_pControlPreview=this;
}

在ActiveX Control Test Container测试,激活方法次序为DoHello、SetPreviewControl、DoPreview。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号