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

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

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

高手指点!
...全文
269 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
内容概要:本文系统研究了基于Wilcoxon Rank-Sum检验的多算法性能统计析方法,重点对比Bonferroni与Benjamini–Hochberg(BH)两种多重检验校正策略在多目标优化算法性能评估中的表现。实验采用超体积(HV)指标衡量算法性能,先通过3种算法的小样本(5次重复)实验进行初步析,再扩展至8种算法的大样本(100次重复)实验,全面比较原始p值、Bonferroni校正和BH校正下的显著性差异结果。结果显示,在小样本场景中两种校正方法结论一致,均表明算法A显著优于B和C;而在大规模两两对比(28组)场景中,BH校正因采用动态阈值策略,具有更高的统计功效,能有效识别被Bonferroni校正漏检的真实性能差异,更适合多算法性能对比的探索性研究。; 适合人群:从事智能优化算法、进化计算、机器学习等领域的科研人员及具备一定统计学基础的研究生或工程师。; 使用场景及目标:①解决多算法两两比较中的多重假设检验问题;②选择合适的统计校正方法以平衡假阳性控制与检验功效;③提升算法性能比较结果的可靠性与可复现性; 阅读建议:建议结合文中提供的具体计算过程与大样本实验数据表深入理解Wilcoxon检验及两类校正机制的差异,尤其关注BH校正在高维多重检验中的优势,实际应用中优先选用BH校正以得更稳健、敏感的统计结论。
内容概要:本文针对含多微电网租赁共享储能的配电网系统,提出了一种基于博弈论的优化调度模型,并提供了完整的Matlab代码实现。研究聚焦于多个微电网主体在共享储能租赁机制下的竞争与协作关系,通过构建非合作博弈模型,刻画各微电网在能量调度、储能租用决策等方面的策略互动。模型充考虑了布式能源出力不确定性、负荷需求波动、储能运行约束及电网交互功率限制等多重因素,旨在实现各微电网个体运行成本最小化的同时,保障配电网整体运行的经济性与稳定性。通过算例仿真验证了所提博弈模型的良好收敛性与有效性,结果表明该方法能够有效激励微电网合理参与储能共享,提升系统整体资源利用效率与运行灵活性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事微电网、布式能源、共享储能或博弈论应用研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和复现多微电网与共享储能协同优化调度的博弈模型;② 理解非合作博弈在电力系统布式优化中的建模与求解方法;③ 取可用于二次开发的Matlab代码框架,应用于相关领域的科研或项目开发。; 阅读建议:在学习过程中应结合博弈论基本概念理解模型构建逻辑,重点关注目标函数与约束条件的物理意义,并利用提供的Matlab代码进行仿真调试,通过修改参数观察博弈均衡过程,以深入掌握模型特性。

3,248

社区成员

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

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