首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不带MFC的MFC库

使用不带MFC的MFC库
EN

Stack Overflow用户
提问于 2011-07-02 05:21:54
回答 3查看 481关注 0票数 0

我在我的项目中使用纯C和Windows SDK,但现在我需要处理DVR的摄像头,它的驱动程序是在MFC 6.0中制作的。

我可以随时切换到C++ (我已经在一些模块中使用它了),但在这个camera SDK中,我需要CWnd的对象。

代码语言:javascript
复制
//Initialize is a function, which initializes the related SDK instance.
Void Initialize(CWnd* pParent)

我能不能不用把MFC加载到MFC项目中,而只是使用我的普通CreateWindowEx()来创建一个假的CWnd?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2015-04-22 06:58:36

CWnd只是一个窗口句柄的包装器,可能只有SDK函数使用的方法是获取父窗口句柄。你可以尝试破解CWnd的所有继承、分支和依赖,用所有的数据和方法来模拟对象,而不使用实际的MFC,但我猜这将是一个真正的麻烦。你可能不得不创建一些简单的MFC层,比如dll,它将从你的代码中获取HWND句柄,然后将它包装到CWnd中,然后调用camera SDK。您可能需要使用相同版本的VC++ 6.0来创建一个层,以使其与您已有的旧库一起工作。

票数 2
EN

Stack Overflow用户

发布于 2017-08-29 06:11:50

如果SDK有一个接受CWnd参数的函数,那么它可能已经静态链接到MFC了。这意味着您的项目现在依赖于客户端计算机上的MFC dll。既然您现在绑定到了MFC,那么您还不如咬紧牙关创建一个静态链接到MFC的MFC项目。我建议只创建一个简单的控制台MFC项目,并从那里开始工作。

票数 2
EN

Stack Overflow用户

发布于 2019-08-20 16:15:53

如果MFC库中有任何类,则应用程序将依赖于MFC。这是显而易见的。如果必须避免使用MFC库,请使用HWND而不是CWnd,即使用Win32和创建窗口句柄并使用它们。

但是,因为camera SDK使用了CWnd类,所以它已经依赖于MFC了。所以使用MFC dll应该不会有问题。如果要避免使用MFC,可以使用一个中间包装器dll,它可以将HWND转换为CWnd并将其传递给SDK函数。

主要应用:

代码语言:javascript
复制
HWND m_hWnd;

中间DLL (资源使用时应正确处理):

代码语言:javascript
复制
void Initialize (HWND hWnd)

//Passing to SDK

       Initialize( CWnd::FromHandle(hWnd))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6553352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档