Использовать библиотеку MFC без MFC - PullRequest
0 голосов
/ 02 июля 2011

Я использую чистый C с Windows SDK в своих проектах, но теперь мне нужно разобраться с камерой DVR, драйвер которой был сделан в MFC 6.0.

Я могу переключиться на C ++ в любое время (Я уже использую его в некоторых модулях), но в этом SDK камеры мне нужен объект CWnd.

//Initialize is a function, which initializes the related SDK instance.
Void Initialize(CWnd* pParent)

Можно ли создать поддельный CWnd, не загружая материал MFC в проект MFC, а просто используяобычный CreateWindowEx ()?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 августа 2017

Если SDK имеет функцию, которая принимает CWnd, то он, вероятно, статически связан с MFC. Это означает, что ваш проект теперь зависит от того, какие библиотеки MFC находятся на вашем клиентском компьютере. Так как вы теперь привязаны к MFC, вы можете также прикусить пулю и создать проект MFC, который статически связан с MFC. Я предлагаю просто создать простой консольный проект MFC и работать оттуда.

2 голосов
/ 22 апреля 2015

CWnd - это просто оболочка вокруг дескриптора окна, и, вероятно, только методы, которые использует функция SDK, получают дескриптор родительского окна.Вы можете попытаться разорвать все ветви наследования и зависимости CWnd, чтобы смоделировать объект со всеми данными и методами без использования фактического MFC, но я предполагаю, что это будет настоящей проблемой.Возможно, вам придется создать какой-нибудь простой слой MFC, например, dll, который возьмет дескриптор HWND из вашего кода, затем поместит его в CWnd и затем вызовет SDK камеры.Возможно, вам понадобится та же версия VC ++ 6.0, чтобы создать слой, чтобы он работал со старой имеющейся у вас библиотекой.

...