社区
ATL
帖子详情
ocx的activex控件问题200分相送
Jackjsun
2004-08-31 04:45:14
各位高手:
本人做一个OCX可是想在OCX中显示OLE文档,实际上就是要在OCX中建立DOC和VIEW,应该怎么做?
最好给个示例。
谢谢!
...全文
186
2
打赏
收藏
ocx的activex控件问题200分相送
各位高手: 本人做一个OCX可是想在OCX中显示OLE文档,实际上就是要在OCX中建立DOC和VIEW,应该怎么做? 最好给个示例。 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangweixing2000
2004-09-01
打赏
举报
回复
金刚兄说的太详细了!
gjd111686
2004-09-01
打赏
举报
回复
在ActiveX控件中引入窗体技术
一、引入Dialog技术
---- 下面介绍在制作ActiveX控件时引入有模式对话框技术,制作步骤如下:
创建一新的MFC ActiveX ControlWizard项目,取名为Hello,其他用缺省选项;
在ResourceView页中新增一对话框资源,命名为IDD_HELLODIALOG,可以在对话框上放自己的控件;
为对话框资源IDD_HELLODIALOG创建新类CHelloDialog,从CDialog继承;
确认在HelloCtrl.h中已加入语句#include "HelloDialog.h",为CHelloCtrl类添加成员变量CHelloDialog m_helloDialog;
用ClassWizard在Automation页中为CHelloCtrl添加一方法void DoHello(),外部名亦为DoHello;
void CHelloCtrl::DoHello()
{
// 显示对话框
m_helloDialog.DoModal();
}
---- 可以用ActiveX Control Test Container测试Hello Control的DoHello方法。
---- 下面介绍在制作ActiveX控件时引入无模式对话框技术,制作步骤如下:
在上面工作的基础上,用ClassWizard为CHelloCtrl添加WM_CREATE的处理函数OnCreate,在此创建无模式对话框;
修改DoHello代码,在此显示对话框;
int CHelloCtrl::OnCreate
(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// 创建对话框
m_helloDialog.Create(IDD_HELLODIALOG);
return 0;
}
void CHelloCtrl::DoHello()
{
// 显示对话框
m_helloDialog.ShowWindow(SW_SHOW);
}
---- 下面介绍制作以对话框作为界面的ActiveX控件技术,制作步骤如下:
在上面工作的基础上,设置对话框资源IDD_HELLODIALOG属性的Style页为Style:Child、Border:Dialog Frame、Title Bar:unchecked;设置More Style页为Visible:checked;Control:checked;设置Extended Styles页为Static Edge:checked;
在CHelloCtrl::OnCreate中写入m_helloDialog.Create(IDD_HELLODIALOG,this)语句;
在CHelloCtrl::OnDraw中写入m_helloDialog.MoveWindow(rcBounds,TRUE);
int CHelloCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// 创建对话框
m_helloDialog.Create(IDD_HELLODIALOG,this);
return 0;
}
void CHelloCtrl::OnDraw(CDC* pdc, const
CRect& rcBounds, const CRect& rcInvalid)
{
// 定位Hello对话框
m_helloDialog.MoveWindow(rcBounds,TRUE);
}
---- 二、引入FormView技术
---- 下面介绍在制作ActiveX控件时引入FormView技术,制作步骤如下:
在上面工作的基础上,在ResourceView页中新增一对话框资源,命名为IDD_HELLOFORMVIEW,可以在对话框上放自己的控件;
设置对话框资源IDD_HELLODIALOG属性的Style页为Style:Child、Border:Dialog Frame、Title Bar:unchecked;设置More Style页为Visible:checked;Control:checked;设置Extended Styles页为Static Edge:checked;
为对话框资源IDD_HELLOFORMVIEW创建新类CHelloFormView,从CFormView继承;
在HelloFormView.h中将CHelloFormView的构造函数CHelloFormView()和析构函数virtual ~CHelloFormView()从protected改为public;
在HelloFormView.h中对CHelloFormView类加入public friend class CHelloCtrl;
确认在HelloCtrl.h中已加入语句#include "HelloFormView.h",为CHelloCtrl类添加成员变量CHelloFormView m_helloFormView;
修改CHelloCtrl::OnCreate函数,在此创建m_helloFormView;
修改DoHello代码,在此显示FormView;
int CHelloCtrl::OnCreate
(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// 创建FormView
m_helloFormView.Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,
CRect(0, 0, 0, 0), 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";
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;
}
---- 四、实现ActiveX打印预览技术
---- 下面介绍利用上面的技术成果来实现ActiveX的打印预览技术,实现步骤如下:
在上面工作的基础上,用ClassWizard对CPrintView类实现OnPreparePrinting函数,如下:
BOOL CPrintView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 准备打印
return DoPreparePrinting(pInfo);
}
用ClassWizard在Automation页中为CHelloCtrl添加一方法void DoPreview(),外部名亦为DoPreview;
void CHelloCtrl::DoPreview()
{
// 进行打印预览
::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_MAP
END_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。
YOLO算法办公室场景办公椅目标检测数据集-32张-标注类别为办公椅.zip
本资源为YOLO算法办公室场景办公椅目标检测数据集-32张-标注类别为办公椅YOLO目标检测数据集。 内容概要: 包含标注好的训练图像和YOLO格式标签文件,可直接用于YOLO系列模型训练。 适用人群: 计算机视觉学习者、目标检测开发者、AI研究人员。 使用场景: 目标检测模型训练、算法验证、学术研究。 说明: 数据集已按标准YOLO格式组织,包含data.yaml配置文件。
springboot中小学教育辅导系统设计与实现(编号:77329540)【附源码+数据库+万字论文+PPT+包部署+录制讲解视频】.zip
标题SpringBoot中小学教育辅导系统设计与实现AI更换标题第1章引言介绍中小学教育辅导系统的研究背景、意义、现状以及论文的方法和创新点。1.1研究背景与意义分析当前中小学教育辅导的现状及系统开发的重要性。1.2国内外研究现状探讨国内外中小学教育辅导系统的发展现状与趋势。1.3研究方法以及创新点概述本文的研究方法,阐述系统的创新点。第2章相关理论介绍SpringBoot框架及教育辅导系统相关理论。2.1SpringBoot框架概述介绍SpringBoot框架的特点、优势及在系统开发中的应用。2.2教育辅导系统理论基础阐述教育辅导系统的基本理论,包括学习理论、教学理论等。2.3系统开发相关技术概述系统开发过程中涉及的其他关键技术,如数据库技术、前端技术等。第3章系统需求分析与设计对中小学教育辅导系统进行详细的需求分析与设计。3.1需求分析分析系统的功能需求、性能需求及用户需求。3.2系统架构设计设计系统的整体架构,包括前后端分离架构、模块划分等。3.3数据库设计设计系统的数据库结构,包括表结构、关系等。第4章系统实现详细介绍中小学教育辅导系统的实现过程。4.1开发环境搭建介绍系统开发所需的环境配置及工具选择。4.2功能模块实现阐述各个功能模块的实现过程,包括用户管理、课程管理、学习资源管理等。4.3系统测试与优化对系统进行测试,包括单元测试、集成测试等,并对系统进行优化。第5章系统应用与效果分析对中小学教育辅导系统的应用效果进行分析。5.1系统应用情况介绍系统在实际应用中的情况,包括用户反馈、使用数据等。5.2效果评估与分析从教学效果、用户体验等方面对系统进行评估与分析。5.3对比方法分析通过与传统教育辅导方式对比,凸显系统优势。第6章结论与展望总结中小学教育辅导系统的设计与实现成果,并展望未来的研究方向。6.1研究结论概括系统的主要功能、特点及创新点。6.2展望指出系统
ppt模板-0181-蓝色热情
ppt模板-0181-蓝色热情
一种欠定盲源分离方法及其在模态识别中的应用(Matlab代码实现)
内容概要:本文详细介绍了一种欠定盲源分离方法,并深入探讨其在模态识别中的应用,重点依托Matlab代码实现相关算法流程。该方法针对传感器数量少于源信号数量的“欠定”情形,通过稀疏表示、时频分析与独立成分分析(ICA)等核心技术,从混叠振动信号中高效分离出原始模态信号,进而提升结构模态参数识别的精度与鲁棒性。研究紧密结合工程实际,适用于复杂结构的振动分析、故障诊断与健康监测,为信号处理与结构动力学交叉领域提供了可复现的技术路径。; 适合人群:具备信号处理、线性代数及Matlab编程基础的研究生、科研人员与工程技术人员,尤其适合从事机械、土木、航空航天等领域中结构动力学分析与状态监测的相关工作者。; 使用场景及目标:① 掌握欠定盲源分离的基本理论与算法实现流程;② 将该方法应用于实际工程中的模态参数识别,如桥梁、风机叶片等大型结构的振动信号分离与故障特征提取;③ 借助提供的Matlab代码进行算法复现、性能测试与二次开发,服务于科研论文撰写、项目攻关或工业检测系统开发。; 阅读建议:建议读者结合理论推导与Matlab代码同步研读,重点关注信号混合模型构建、稀疏成分提取、时频掩膜设计及分离效果评估等关键环节,并尝试在真实或仿真数据集上进行实验验证与参数调优,以深入理解方法的适用边界与优化潜力。
k型热电偶温度检测程序(c语言)
源码链接: https://pan.quark.cn/s/3302e37bc21e 【热电偶测温机制】 热电偶作为一类普遍应用的温度感应装置,其运行机制依托于塞贝克现象,具体而言,当由两种不同金属或半导体材料A与B构成的闭合回路的两端存在温度梯度时,回路内部会感应出电压。该电压值与两个接点间的温差呈现正相关性。K型热电偶即为其中一种应用广泛的型号,该类型热电偶主要由镍铬(NiCr)以及镍铝(NiAl)合金构成,并展现出优良的一致性和精确度。 【MAX6675芯片概述】 MAX6675是由Maxim公司研发的一种高度集成的热电偶接口组件,该组件内嵌了冷端补偿及数字转换功能。它能够将热电偶产生的微弱电压信号转化为数字形式的数据,从而便于微控制器进行读取和运算处理。该芯片内部配置了12位Σ-Δ型模数转换器,能够提供高等级的温度测量精度,并且配备了SPI串行通信接口,有助于与各类微控制器设备进行顺畅的数据交换。 【C语言编程实践】 在采用C语言进行编程时,与MAX6675芯片进行交互一般遵循以下流程: 1. 进行SPI接口的初始化工作:设定SPI时钟的速率、操作模式以及数据传输的方向,以此确保与MAX6675的通信协议相吻合。 2. 发送指令以获取温度信息:经由SPI接口发送用于读取温度的指令,芯片将会反馈包含当前温度数值的12位二进制数据。 3. 实施数据解析操作:接收并分析返回的二进制数据,将其转化为具体的温度数值。值得注意的是,MAX6675所提供的温度数据为14位格式,其中包含两位用于表示符号位,剩余的12位则代表实际温度值。 4. 执行冷端温度补偿:由于热电偶所测量的是温度差值,因此还需考虑芯片自身的温度(即冷端温度),可以通过额外的温度感应装置或进行...
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章