Как добавить, что MFC поддерживает к существующему Win32 Проект C++?

Я создаю приложение C++, которое использует QT для создания GUI. Однако я должен пользоваться сторонней библиотекой, которая полагается на MFC (для CString's, и т.д.). Там должен так или иначе добавить MFC к моему приложению, чтобы позволить мне пользоваться этой библиотекой, или я должен переписать его сам?

Я видел этот вопрос, но он не говорит мне, как добавить MFC вручную к проекту.

5
задан Community 23 May 2017 в 12:24
поделиться

5 ответов

Если приложение библиотеки берет/возвращает/использует CStrings, то ему понадобится линковка с библиотеками MFC, или же библиотеки MFC будут уже статически линковкированы.

Если вы используете Visual Studio, вы можете просто проверить "использовать MFc в статических/совместных lib", это не повлияет на графический интерфейс вашего приложения, если вы сохраните вашу текущую точку входа в программу.

3
ответ дан 14 December 2019 в 19:15
поделиться
[

]Да, вы можете использовать MFC, выбрав его в опциях компиляции и компоновки. Если ваша единственная причина - сторонняя библиотека, то вы, вероятно, захотите воздержаться от использования каких-либо функций MFC в своем коде. Таким образом, если Вы когда-нибудь замените стороннюю библиотеку, то можете отключить и MFC.[

].
0
ответ дан 14 December 2019 в 19:15
поделиться

Если это только для CString (и, возможно, для некоторых других функций утилиты), то, возможно, вам лучше искать замены. В интернете довольно много плавающих функций.

Например, эта реализация CString

.
1
ответ дан 14 December 2019 в 19:15
поделиться

Было бы намного проще, если бы вы могли найти замену сторонней библиотеке MFC.

Для сторонней библиотеки, статической или динамически подключаемой, потребуется версия MFC, точно такая же, как та, которая использовалась для компиляции стороннего файла lib. Классы MFC не совместимы на двоичном уровне между версиями и даже не совместимы на двоичном уровне между конфигурациями (статический / динамически связанный MFC и CRT, однопоточный / многопоточный CRT, отладка, выпуск, X86, X64, MBCS, UNICODE и т. .

Если вы используете CString :: LoadString или что-нибудь еще, имеющее доступ к состоянию модуля MFC, ему потребуется глобальный CWinApp. Легкий способ получить это - создать обычную DLL. Чтобы добавить его в проект QT, вам потребуется переместить код из функции выхода из функции входа в InitInstance и ExitInstance.

1
ответ дан 14 December 2019 в 19:15
поделиться

Если существующая программа Windows использует цикл сообщений (вместо отдельных обработчиков событий, используемых MFC), вы можете создать подкласс окна на любом уровне, необходимом для обработки этого цикла сообщений, и переопределить функцию WindowProc. .

Например, я взял существующую программу Win32 и встроил ее главное окно в окно изображения CStatic, заменив WindowProc подкласса CStatic. Функциональность предыдущей программы содержалась в CStatic, но я мог добавить другие элементы управления и парадигмы MFC в окружающую границу.

0
ответ дан 14 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: