写了个ocx,里面设了属性和方法

e7844 2009-03-23 09:23:14
写了个ocx,里面设了属性和方法
用CAxWindow afxx(.....)...在另外程序中创建这个ocx,创建以后怎么将afxx及其所在程序中的一些变量传给ocx(ocx也已竟设好了与那些变量对应好了的属性和方法)

在程序中引用ocx时中的.h和.cpp里
CString CCocx::aaa()
{
CString result;
InvokeHelper(0x1, DISPATCH_METHOD, VT_BSTR, (void*)&result, NULL);
return result;
}

void CCocx::bfang(LPCTSTR str)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x2, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
str);
}

但是不知怎么传进去?(试验了几次,ocx得不到)
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
e7844 2009-03-24
  • 打赏
  • 举报
回复
没有,即使有ocx.xxx()都无法响应

IDispatch* pDisp = NULL;
afxx.QueryControl(IID_IDispatch, (void**)&pDisp);
CCocx ocx;
ocx.Attach(pDisp); //ocx中该处任何方法或函数都无响应
ocx.aaa();

//*******************************************创建时用的是
CCocx ocx;
CLSID clsid =ocx.GetClsid();
BSTR bs;
if(StringFromCLSID(clsid,&bs)==S_OK)
{
Cafxxdow afxx(m_hWnd);
if(afxx.CreateControl(bs)==S_OK)
{
afxx.SetExternalDispatch(this );
}
::SysFreeString(bs);
}
jameshooo 2009-03-24
  • 打赏
  • 举报
回复
既然CCocx是从CWnd派生的,就没必要再使用CAxWindow了,直接调用CCocx::CreateControl即可
jlj84237485 2009-03-24
  • 打赏
  • 举报
回复
帮顶一下
e7844 2009-03-24
  • 打赏
  • 举报
回复
还未试验一下,不知ATL中能不能这么写

自己是在ATL中添加这个CCocx的
e7844 2009-03-24
  • 打赏
  • 举报
回复
CCocx ocx; 和Cafxxdow afxx是在.h中声明的

前面是afxx.m_hWnd=m_hWnd;
jameshooo 2009-03-23
  • 打赏
  • 举报
回复
自己看看CCocx的类定义去,应该提供了类似的方法,比如AttachDispatch之类的
hust_terry 2009-03-23
  • 打赏
  • 举报
回复
同意1楼
e7844 2009-03-23
  • 打赏
  • 举报
回复
ocx中
class CCocx Ctrl : public COleControl
class CCocx App : public COleControlModule
//*****************************
程序中引用它时,变成了的是
class CCocx : public CWnd
e7844 2009-03-23
  • 打赏
  • 举报
回复
CCocx 基类是CWnd ,Attach函数的参数是HWND

可用什么方法绑定pDisp
jameshooo 2009-03-23
  • 打赏
  • 举报
回复
IDispatch* pDisp = NULL;
afxx.QueryControl(IID_IDispatch, (void**)&pDisp);
CCocx ocx;
ocx.Attach(pDisp);
ocx.aaa();

3,245

社区成员

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

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