很急:OCX控件不同版本为什么需要重新编译程序才能使用?

黄汉 2004-07-14 01:28:56
我在开发MapEngine的GIS系统,我开发的时候使用2.1学习版,用户那边使用的是2.1专业版。奇怪的是对象结构完全相同,但是我用学习版编译后的EXE却不能在安装有专业版的机器上运行,一定要讲代码重新编译(不用修改代码)。请问这是为什么?很急。
...全文
189 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄汉 2004-09-07
  • 打赏
  • 举报
回复
谢谢wangweixing2000
问道er 2004-07-20
  • 打赏
  • 举报
回复
wangweixing2000
有道理!
wangweixing2000 2004-07-15
  • 打赏
  • 举报
回复
这个原因很简单,因为你两个版本的CLSID和IID不一致造成的!哈哈!如果你能让他们的两版本中的那些GUID都保持一致,就不用重新编译了!因为你的exe创建接口对象的时候通过这些id到注册表中去找,如果没有肯定创建不成功了!哈哈!
名牌大灰狼 2004-07-15
  • 打赏
  • 举报
回复
很多事情不需要理由,只要能通过就行了呗.你就在一次. 有些现实就连专家都无法解释.
黄汉 2004-07-14
  • 打赏
  • 举报
回复
请兄弟们仁者见仁,智者见智!
黄汉 2004-07-14
  • 打赏
  • 举报
回复
奇怪的是只要重新编译一次就可以了,不用修改代码. 我用C#和VB等都试过了,没有用处。
黄汉 2004-07-14
  • 打赏
  • 举报
回复
我是直接由VC生成基类为CWnd的包装类(wrapper),然后使用的。
ganax 2004-07-14
  • 打赏
  • 举报
回复
你引用com时用的是那种方式,类向导or"import" or COMAPI
黄汉 2004-07-14
  • 打赏
  • 举报
回复
请问如何动态获取地址?

我这样不可以吗?
m_map_p = new CCompoundmapctrl1();
m_spadb_p = new CSpadbctrl1();

m_map_p->Create("MAPENGINE.CompoundMapCtrl.1", NULL, WS_VISIBLE|WS_CHILD, CRect(0, 0, 200, 200), this, IDC_COMPOUNDMAPCTRL1);
m_spadb_p->Create("MAPENGINE.SpaDBCtrl.1", NULL, WS_VISIBLE|WS_CHILD, CRect(0, 0, 0, 0), this, IDC_SPADBCTRL1);
TCHAR buffer[1024];
memset(buffer, '\0', 1024);
::GetCurrentDirectory(1024, buffer);
strcat(buffer, "\\City.xdb");
if(m_spadb_p->Open(buffer))//strcat(buffer, "\\City.xdb")))
{
m_map_p->ConnectSpaDB(m_spadb_p->GetHandle());
m_map_p->Open("市政图");
}
fairyprince 2004-07-14
  • 打赏
  • 举报
回复
因为你用的是 接口地址或接口序数不同 你应该动态获取地址实现动态帮定。
久其表格OCX控件V2.1是久其ezReport报表组件的核心组件之一,是基于微软COM/COM+技术开发的报表二次开发组件,可以应用于企业级的报表开发,能够实现多种复杂报表的设计、打印等操作,具有以下几个特点:1. 表格控件操作简单,采用类Excel的设计风格,易学易用;2. 开发接口结构清晰,调用简单,可以快速进行二次开发;3. 有详细的开发文档说明,便于开发人员快速入门;4. 支持复杂格式的报表,适合中国式报表的定制;5. 采用COM/COM+技术开发,可以支持.net、Delphi、VB、C++、Java等多种开发语言和平台;6. 提供Excel的导入导出操作,能够与Excel完美结合;7. 打印功能强大,能够支持各种特殊的打印需求,可以定制打印模版;8. 提供打印预览功能,并允许用户在线调整打印效果;9. 录入方式灵活,支持下拉列表、日期编辑框、下拉树形控件等多种编辑控件;10. 结合久其ezReport报表开发组件使用,可以提供客户端报表展示和打印功能,提供企业级的报表解决方案。久其表格OCX控件(报表控件、报表工具、编程工具)以共享软件的方式提供,用户可以免费使用该组件提供的所有功能,并允许用户在自己的系统中再次发布该软件,但不得以任何方式修改、反编译以及查看该程序的文件内容。该产品的更新及其它相关技术信息请访问产品主页:http://www.ezReport.cn
SysTray控件用法详解 VB SYSTRAY 托盘图标 用VB6自带的systray.ocx控件实现托盘图标程序 : 补充: 然后在自己的VB程序中添加改控件(工程-部件-浏览)。   最好把这个ocx放到C:\WINDOWS\system32。   改控件的属性InTray属性用来设置是否显示在托盘中,True为显示在托盘,False为不显示。TrayIcon属性是在托盘中显示的图标式样。TrayTip属性是鼠标移到改控件上面显示的提示文字。如果要使程序最小化时显示到托盘,如下:   Private Sub Form_Resize()    If Me.WindowState = vbMinimized Then    cSysTray1.InTray = True    Me.Visible = False End If   End Sub   点击托盘图标后让程序显示出来,如下:   Private Sub cSysTray1_MouseDown(Button As Integer, Id As Long)    Me.WindowState = vbNormal    Me.Visible = True    cSysTray1.InTray = False    Me.SetFocus   End Sub '单击关闭不退出程序 Private Sub Form_Unload(Cancel As Integer) 主程序.Hide Cancel = False End Sub '单击关闭不退出程序 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = 1 主程序.Hide End Sub ’tui为窗体菜单-退出选项名称 Private Sub tui_Click()’快捷键设ALT+F1 End End Sub '注:"主程序"代表一个窗体(Form),窗体菜单-退出选项需设置快捷键ALT+F1 '这个控件有一个小小的问题,如果托盘菜单有退出选项,不能直接用"End 语句",否则在编译后运行期间用户选择退出后,操作系统会报错,以上使用发送按键方法避免出错 ,当然还有其他避免出错方法。

3,245

社区成员

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

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