DLL中的资源问题,高手请进!
希望实现这样的功能:
一个很大的应用程序,部分功能模块可能会经常升级。
要在dll中实现所有的功能,dll的调用者只负责提供框架。
在dll中加载了所需要的资源,但有问题。
第一:不同模块之间的数据可能在配置时需要相互对照,而且
提交顺序随意,所以在dll中提供的对话框采用无模式方式。但
该对话框总是一闪就马上消失。为什么?
我用的是CCustomDlg dlg;
dlg.Create();
dlg.ShowWindow();
dlg.Update();之类的方式。
第二:于是我偷懒,用添加组件的方法直接添加属性页到工程,
位置在Visual C++ Components-->Property Sheet,使用无模
式方式,然后将对话框的属性为alwaysontop一类的属性,这样
就可以同时加载多个不同dll中的资源。但又出现了问题。我无法
在属性页的窗口中添加OLE控件(我的表达可能不正确),换句话
说,只要我向属性页中添加Registered ActiveX Controls,我
添加了控件的属性页的对话框就会在运行时从ProperitySheet中
消失。这又是为什么?
第三:
能够向直接向调用程序通过出口函数传递子窗口?
思路是这样:调用程序通过引用参数的形式从dll中获取创建子窗口的
值,多文档界面的程序中不是有这样的语句:
m_pDocTempLanIp = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CCusDoc), // document class
RUNTIME_CLASS(CFrameChild), // frame class
RUNTIME_CLASS(CCusView)); // view class
我在dll新建的三个类,分别派生于CDocument, CMDIFrame,CView,
但是最终的结果是非法操作!
我现在想哭,真的不应该期望什么都能够在dll中实现,但我现在遇到
这些问题相信肯定有高手曾经解决。
可能有些罗嗦,我再总结一下我的问题:
1.无模式对话框在dll中怎样实现?
2.自动生成的属性页为什么不能加载ActiveX控件?
3.能否通过dll传递创建子窗口所需要的参数给调用程序?如果能,怎样做?
为什么?
敬请关注!!