ATL做成的OCX,在VC中看不到的问题

半宫佳丽 2003-10-21 11:05:32
ATL做成的DLL,直接改名为.OCX,但在VC中看不到,直接添加有错误,所我没注册,但我用VB却能调用,怎么回事呢??
...全文
77 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
半宫佳丽 2003-10-23
  • 打赏
  • 举报
回复
不等了,要结账了、!!
半宫佳丽 2003-10-22
  • 打赏
  • 举报
回复
TO: Bottol(亲爱的:)
就是VC里面的
Project->Add->companent and control
然后选者的那个列表呀。。。

那你说我应该怎么让这个空间的界面编程我的Dialog呀??
Bottol 2003-10-22
  • 打赏
  • 举报
回复
OnDraw是你的控件运行时主界面的自绘函数,有了这个函数,说明你的程序应该就是一个可视的Ocr才对,不知道你指的Ocx列表是那一个?
后缀名改不改成ocx都无所谓,我一向也都是直接用dll文件去注册,有需要改成ocx的时候,我也是直接用改名,从来不用VC工程里面重新输出一个ocx文件。ocx本来就是一个dll。
半宫佳丽 2003-10-22
  • 打赏
  • 举报
回复
To:warmchang(风滑过的痕迹)
那我显示Dialog写在哪儿呀?? 我就找到了
HRESULT OnDraw(ATL_DRAWINFO& di)
{
RECT& rc = *(RECT*)di.prcBounds;
Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);

SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
LPCTSTR pszText = _T("Image For Kodak_Camera");
TextOut(di.hdcDraw,
(rc.left + rc.right) / 2,
(rc.top + rc.bottom) / 2,
pszText,
lstrlen(pszText));
return S_OK;
}
注册没问题,可是我在VC中想用这个ATL,却不能象普通ocx一样在ocx列表中找到他
warmchang 2003-10-22
  • 打赏
  • 举报
回复
添加一个Dialog窗口,然后可以象一般的窗口一样来操作实现了!

而且这个ATL可以显示出来(也就是有窗口的ATL组件)。

关于控件的注册,还是那句话:不需要改名,只需要运行“regsvr32 你的组件名”就可以了!
半宫佳丽 2003-10-22
  • 打赏
  • 举报
回复
To:warmchang(风滑过的痕迹)
我现在想的就是 把Dialog作为ATL作的OCX的界面,我怎么才能得到依托Form的hWnd呢??

To: Analyst()
谢谢你上次的回答,还有一个人没进来,等一下
我现在就是按照你说地作的,但还是找不到。。。:(

To:Lava_sdb(大波)
我按你的方法也试了,还是不行,怎么办好???
Analyst 2003-10-21
  • 打赏
  • 举报
回复
我实验了一下,直接用DLL就可以,如果你要改成OCX,不要直接改名,在你的工程里设置一下输出文件名为XXX.OCX,注册之后可以在VC的Registered ActiveX Controls目录里找到。
warmchang 2003-10-21
  • 打赏
  • 举报
回复
ATL做的ActiveX本来就是dll的形式,也可以用regsvr32注册!并不需要改为ocx的扩展名!

如果你的ATL控件是有窗口的,那么在VC中添加的方法和一般的ActiveX控件一样。
shudingbo 2003-10-21
  • 打赏
  • 举报
回复
你这样试试
______

1. 在改名字前,确认该控件已注销。regsvr32 /u xxx.dll
2. 改名。
3. 注册控件。 regsvr32 xxx.ocx
——————
OK!

3,245

社区成员

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

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