Russian Qt Forum

Qt => Общие вопросы => Тема начата: ElderOrb от Февраль 15, 2006, 16:40



Название: Qt + Mfc
Отправлено: ElderOrb от Февраль 15, 2006, 16:40
Недавно я поднимал тему о сопряжении Qt и с библиотекой, писанной на Win API. Обнаружилось что у этой библиотеки есть довольно много уже написанных mfc-шных настроечных диалогов. После чего меня посетила интересная мысль, а не попробовать ли вызывать эти диалоги из mfc ? В туториалах к qtwinmigrate по шагам расписано как портировать mfc приложение под Qt. Я же не хочу портировать, я хочу чтобы из Qt-шного приложения была возможность использовать mfc-шные классы. Кто-нибудь занимался подобным?


Название: Qt + Mfc
Отправлено: Racheengel от Февраль 15, 2006, 16:46
Я занимался.
Все работало вроде нормально.
Еще тут есть пример использования:
http://hardclub.donntu.edu.ua/projects/qt/articles/mfc-in-qt.html


Название: Qt + Mfc
Отправлено: ElderOrb от Февраль 17, 2006, 11:30
Прочитал статью но так и не понял как из Qt-шной программы вызвать мфц-шный диалог.

Вот что пытаюсь делать я:
Код:

#include "qtmfc.h"

#include "afxwin.h"
#include "afxext.h"
#include "afxcmn.h"

#include "sapclassbasic.h"
#include "sapclassgui.h"
#include "browsedirdlg.h"

QtMfc::QtMfc(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
ui.setupUi(this);

CBrowseDirDlg d("C:\\");
d.DoModal();
}

QtMfc::~QtMfc()
{

}


При попытке запуска этого ещё до конструктора программы вылетает на файле winmain.cpp вот в этом месте:
Код:

// Perform specific initializations
if (!pThread->InitInstance())
{
if (pThread->m_pMainWnd != NULL)
{
TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd\n");
pThread->m_pMainWnd->DestroyWindow();
}
nReturnCode = pThread->ExitInstance();
goto InitFailure;
}
nReturnCode = pThread->Run();


Что я неправильно делаю?[/quote]


Название: Qt + Mfc
Отправлено: Racheengel от Февраль 17, 2006, 12:38
а почему ты его в КОНСТРУКТОРЕ вызываешь?
ИМХО это неправильно...


Название: Qt + Mfc
Отправлено: ElderOrb от Февраль 17, 2006, 15:42
Проблема была не в этом, щас всё заработало. Помогла дока от QtSolutions, а если быть точнее examples/step4