请问用ATL做的ActiveX控件,可以嵌入word里面,如何获Word的Application的指针?100分啊

littleroy 2005-11-29 01:36:32
请问用ATL做的ActiveX控件,可以嵌入word里面,如何获Word的Application的指针?100分啊

我听说可以用GetClientSite的方式,
但,不知道,具体详细情况该怎么做,,

高手指点!
...全文
270 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodboyws 2005-12-01
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/190985/EN-US/
littleroy 2005-11-29
  • 打赏
  • 举报
回复
to goodboyws(深夜不眠者

的代码,我看不懂啊,
能不能详细介绍一下呢,,
littleroy 2005-11-29
  • 打赏
  • 举报
回复
to zhoujingsheng712

您的代码,我一回拿过去试一下,谢谢!!
不过,我更想要的是,我的控件是嵌入在word里面,如何通过GetClientSite函数的方式,
来获包容器的指针!
goodboyws 2005-11-29
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/q266318/
goodboyws 2005-11-29
  • 打赏
  • 举报
回复
void CMyActiveXCtrl::GettheNameofContainerDocument()
{
IMoniker* ptrfullMoniker = NULL;
char objectname[300];
LPOLESTR ppszDisplaynamefull;
IBindCtx* pbcfull = NULL;

LPOLECLIENTSITE pOleClientSite = GetClientSite();

if(pOleClientSite)
{
if(SUCCEEDED(pOleClientSite->GetMoniker(OLEGETMONIKER_FORCEASSIGN,
OLEWHICHMK_OBJFULL, &ptrfullMoniker)))<BR/>
// The typedefs for OLEGETMONIKER and OLWHICHMK are in oleidl.h
{
if (SUCCEEDED(CreateBindCtx( 0, &pbcfull )))
{
if(SUCCEEDED(ptrfullMoniker->GetDisplayName(pbcfull,NULL,<BR/>
&ppszDisplaynamefull)))
{
wcstombs(objectname,ppszDisplaynamefull,300);
AfxMessageBox(ExtractDocumentName(objectname));
ptrfullMoniker->Release();
}
}
pbcfull->Release();
}
pOleClientSite->Release();
}
}

char* CMyActiveXCtrl::ExtractDocumentName(char* objectname)
{
char* ptrchar;
char* ptrdocname;
//reverse the string
ptrchar = _strrev(objectname);
//Ignore the first token , this is the name of the embedded object
strtok(ptrchar,"!");
//get the remainder of the string and reverse it to get the Document name
ptrdocname = strrev(strtok(NULL,"\0"));
return ptrdocname;
}
zhoujingsheng712 2005-11-29
  • 打赏
  • 举报
回复
先导入word类库:在addclass-〉from a library->word安装目录中选msword.olb
,然后添加如下代码
CLSID clsid;
HRESULT hr;
IUnknown *pUnknown=NULL;
IDispatch *pDispatch=NULL;
_Application app=NULL;
hr = ::CLSIDFromProgID(L"Word.Application",&clsid); //通过ProgID取得CLSID
if(FAILED(hr))
{
AfxMessageBox(_T("您没有安装OFFICE"));
return;
}

hr = ::GetActiveObject(clsid,NULL,&pUnknown); //查找是否有WORD程序在运行
if(FAILED(hr))
{
AfxMessageBox(_T("没有正在运行中的WORD应用程序"));
return;
}

hr = pUnknown->QueryInterface(IID_IDispatch,(LPVOID *)&app);
if(FAILED(hr)) AfxMessageBox(_T("没有取得IDispatchPtr"));
pUnknown->Release(); pUnknown=NULL;
littleroy 2005-11-29
  • 打赏
  • 举报
回复
up
littleroy 2005-11-29
  • 打赏
  • 举报
回复
up
内容概要:本文档是一份针对全国大学生电子设计竞赛(NUEDC)的“保姆级”实战指导手册,系统涵盖赛题解析与方案库、模块化代码与电路实现、以及测试报告范例三大核心部。手册深入剖析了电赛七大赛题类别及其命题规律,强调“基本要求+发挥部”的结构特点、指标逐年收紧趋势及测量与控制复合型题目的增加。通过数控直流电流源和频率特性测试仪两个典型案例,展示了从系统方案设计、关键器件选型到软硬件实现的完整路径。同时,提供了基于STM32 HAL库的ADC采样、PWM生成、OLED显示、无线通信等常用模块的详细电路原理与驱动代码,并辅以测试报告范例和评标准解析,帮助参赛者规范撰写高质量设计报告。; 适合人群:参加全国大学生电子设计竞赛的本科生及指导教师,尤其适合有一定单片机和电路基础、希望在短时间内高效备赛并提升奖概率的团队。; 使用场景及目标:①帮助参赛者快速掌握电赛命题规律与主流技术方案,精准应对电源类、控制类、仪器仪表类等高频赛题;②提供可复用的模块化代码与电路设计,加速硬件搭建与软件开发进程;③指导撰写符合评审标准的设计报告,强化误差析与测试数据呈现,提升综合得。; 阅读建议:建议按照“赛题析→方案设计→模块实现→报告撰写”的流程顺序阅读,重点学习典型案例的整体设计思路与关键器件选型依据。对于代码与电路部,应在实际开发板上动手验证,结合示波器、逻辑析仪等工具进行调试。撰写报告时,务必参考文中测试表格与误差析模板,确保数据完整、析定量,避免因报告不规范而失。;
内容概要:本文提出了一种基于局部质心的无监督图像割方法,适用于2D和3D图像,通过Matlab代码实现。该方法不依赖标注数据,利用图像内部的局部质心信息进行聚类析,从而实现对图像关键区域或物体边界的自动提取。文中系统阐述了算法的核心原理、实现流程及其在多种图像类型上的应用表现,重点展示了其在处理复杂结构图像时所具备的高鲁棒性与割精度,尤其适用于缺乏先验标签的实际场景。; 适合人群:具备一定图像处理理论基础和Matlab编程能力,从事计算机视觉、医学影像析、工业检测或遥感图像研究等相关领域的科研人员及研究生。; 使用场景及目标:①实现医学图像(如MRI、CT)中病灶区域的无监督自动割;②应用于工业领域中三维物体表面缺陷的识别与定位;③完成遥感或生物显微图像在无标签条件下的像素级割任务;④为后续高级视觉任务(如目标识别、行为追踪)提供高质量的前期特征支持; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,深入理解局部质心计算机制与聚类割过程,尝试在不同模态图像上调整参数以优化割效果,并可将其与K-means、Mean Shift等经典算法进行对比实验,全面掌握该方法的优势与适用边界。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧