Nicht Modaler Dlg in einer DLL...
-
Servus,
ich habe hier ein kleines Problem. Es dreht sich um einen nicht modalen Dialog in einer DLL. Ich habe mir eine kleine DLL erstellt und in dieser eine Klasse erzeugt, welche von CDialog abgeleitet ist.
In der Dll selbst rufe ich den Dialog nicht modal auf:
CWriteExcelDlg *pExcDlg = new CWriteExcelDlg; pExcDlg->Create(IDD_WRITEEXCELDLG); pExcDlg->ShowWindow(SW_SHOW);
Die Dll wird Dynamisch in einem anderen Projekt erfasst. Ich rufe von dem einen Programm über eine Funktion, welche in der Dll vorhanden ist, diesen Dialog auf. Dlg Resourcen sind in der DLL enthalten.
Leider gibt er mir einen kleinen Fehler aus wenn ich den Dlg von meinem Programm aufrufen will. Er spuckt ne Assert an der Stelle dlgcore.cpp:
BOOL CDialog::Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd) { ASSERT(IS_INTRESOURCE(lpszTemplateName) || AfxIsValidString(lpszTemplateName)); m_lpszTemplateName = lpszTemplateName; // used for help if (IS_INTRESOURCE(m_lpszTemplateName) && m_nIDHelp == 0) m_nIDHelp = LOWORD((DWORD_PTR)m_lpszTemplateName); #ifdef _DEBUG if (!_AfxCheckDialogTemplate(lpszTemplateName, FALSE)) { ASSERT(FALSE); // invalid dialog template name PostNcDestroy(); // cleanup if Create fails too soon return FALSE; } #endif //_DEBUG HINSTANCE hInst = AfxFindResourceHandle(lpszTemplateName, RT_DIALOG); HRSRC hResource = ::FindResource(hInst, lpszTemplateName, RT_DIALOG); HGLOBAL hTemplate = LoadResource(hInst, hResource); BOOL bResult = CreateIndirect(hTemplate, pParentWnd, hInst); FreeResource(hTemplate); return bResult; }
und sagt mir das der Resourcenname des Dialoges ungültig ist. Das sagt mir also das er auf die Resourcen des Hauptprogramms zugreift von dem die Dll aufgerufen wird. (Hab ich getest indem ich einfach die Kennzahl der DlgResource in eine Kennzahl einer DlgResource von meinem Programm geändert habe. In dem Fall hat er den Dialog meines HP aufgreufen)
Habe mich hier schon durch 2 dicke Wälzer durchgearbeitet doch schlauer bin ich trotzdem nicht.
Vielleicht kann mir hier jemand weiterhelfen bzw. mir das erklären....
Bin für jede Hilfe, Anregung dankbar..
*THX*
Hellsgore
-
Ein AFX_MANAGE_STATE(AfxGetStaticModuleState()); ist aufegrufen bevor du anfängst in der DLL mit irgend welche resorucen rumzuhandwerken?
-
Ich hohle Frucht............
Dank dir 1000x
.....
Das wars jetzt funzt es...
*THX*
Hellsgore
-
Ich hohle Frucht............