vc写的一个dll,实现一个dialog(派生自CDialog),作为一个子窗口显示在delphi程序的panel中。
要求这么做,是因为在dll中不只是显示窗口,还要有用户交互,可以在其中实现矩形的选中、拖拉,填充颜色等操作,我想用mfc中的CRectTracker实现,要将其作为dialog类的成员变量才可
给出正确解决方案(例子),开帖送分,190分全部奉上
要求这么做,是因为在dll中不只是显示窗口,还要有用户交互,可以在其中实现矩形的选中、拖拉,填充颜色等操作,我想用mfc中的CRectTracker实现,要将其作为dialog类的成员变量才可
给出正确解决方案(例子),开帖送分,190分全部奉上
用MFC作一个扩展 dll.
调用dll时指定这个CStatic的父窗口句柄。
再记着在相关位置切换程序的资源句柄就OK了。
AfxSetResourceHandle(???还是什么来着,想不起来了。
子窗体应该没什么问题,传递父窗体/控件的hwnd就可以。
父窗口是用什么创建的根本没有影响, 你就当实现一个mfc dialog就ok了。你的问题实际上是如何在dll和调用方之间传递数据, 这个最简单的办法就是自定义结构体, 然后dll返回结构变量指针给delphi
{
int __stdcall CreateMyWindow(HWND hwnd);
}// 在CreateMyWindow函数中, 已经有了父窗口句柄, 剩下的工作就是创建对话框, 将它做为hwnd的
// 子窗口显示出来, 整个对话框类的实现和通常的对话框程序并没有什么不同的地方。delphi中的dll接口声明(好久没用delphi了, 写错了别怪我):unit Mydll;
interface
function CreateMyWindow(hParent: HWND): integer; stdcall; external 'Mydll';
end.