Hallo,
aus meiner Win32 Konsolenanwendung rufe ich die Funktion "showFileTransferDialog" auf, die sich in einer MFC DLL befindet. MFC ist dynamisch angebunden. Das funktioniert soweit. Jedoch gibt m_Dialog->Create immer 0 zurück und ich weiß nicht warum.
Ich bin Anfänger in C++ und wäre für jede Hilfe dankbar, da ich schon lange nach meinem Problem gesucht habe und nicht fündig geworden bin.
Die DECLDIR Aufrufkonvention ist folgende:
#define DECLDIR __declspec(dllexport)
aus meiner Win32 Konsolenanwendung rufe ich die Funktion "showFileTransferDialog" auf, die sich in einer MFC DLL befindet. MFC ist dynamisch angebunden. Das funktioniert soweit. Jedoch gibt m_Dialog->Create immer 0 zurück und ich weiß nicht warum.
Ich bin Anfänger in C++ und wäre für jede Hilfe dankbar, da ich schon lange nach meinem Problem gesucht habe und nicht fündig geworden bin.

Code:
CFileTransferDialog* CFileTransferApp::getFileTransferDialog()
{
if(m_Dialog == NULL){
m_Dialog = new CFileTransferDialog();
BOOL res = m_Dialog->Create(IDD_DIALOG, m_pMainWnd); //gibt immer 0 zurück? Warum?
DWORD error = GetLastError();
if(!res){
AfxMessageBox(_T("Error creating Dialog"));
closeDialog();
}
}
return m_Dialog;
}
void CFileTransferApp::showDialog()
{
CFileTransferDialog* dialog = getFileTransferDialog();
if(dialog != NULL)
{
dialog->ShowWindow(SW_SHOW);
}
}
void CFileTransferApp::closeDialog()
{
if(m_Dialog != NULL){
m_Dialog->DestroyWindow();
delete(m_Dialog);
m_Dialog = NULL;
}
}
void CFileTransferApp::setProgress(float current, float total, int unit)
{
if(m_Dialog != NULL){
m_Dialog->setProgress(current, total, unit);
}
}
/////////////////////////////////////////////////////////////////////////////
// Das einzige CFileTransferApp-Objekt
CFileTransferApp theApp;
extern "C"{
DECLDIR void showFileTransferDialog()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
theApp.showDialog();
}
DECLDIR void closeFileTransferDialog()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
theApp.closeDialog();
}
DECLDIR void setFileTransferProgress(float current, float total, int unit)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
theApp.setProgress(current, total, unit);
}
}
Die DECLDIR Aufrufkonvention ist folgende:
#define DECLDIR __declspec(dllexport)