Problemer med custom control i COM server
Hej...Jeg er løbet ind i et sjovt lille problem, med min COM server håber der er nogen der kan hjælpe...
Jeg har skrevet en COM server, med MFC support, der bla. bruger en custom control fra en anden dll. Jeg har registret controllen i InitInstance() og oprettet m_pMainWnd der benytter controllen.
Når projektet compileres og linkes registres COM severen også, og InitInstance() kaldes og m_pMainWnd vises med controllen.
Jeg har så oprettet en test klient (i C#) der benytter min COM server, men når klienten opretter en instans af COM serveren findes controllen ikke i m_pMainWnd? Hvad kan dette skyldes?
Sker der noget under registreringen af COM serveren, der gør det muligt at bruge controllen? Hvis der gør, hvad er dette?
Her er koden der registrerer og bruger controllen:
BOOL CMyComServer::InitInstance()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
InitCommonControls();
LoadLibrary("control.dll");
char szClassname[] = _T("CCustomControl");
WNDCLASS wc;
if (!GetClassInfo(AfxGetInstanceHandle(), szClassname, &wc))
{
GetClassInfo(NULL, _T("static"), &wc);
wc.hInstance = AfxGetInstanceHandle();
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpszClassName = szClassname;
wc.lpfnWndProc = ::DefWindowProc;
if (!AfxRegisterClass(&wc))
AfxMessageBox("Failed to register CCustomControl class");
}
CCustomControl::Initialize();
CMainDlg *pDlg = new CMainDlg();
pDlg->Create(NULL, "My dialog");
m_pMainWnd = pDlg;
return CWinApp::InitInstance();
}
I CMainDlg:
int CStatusDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (!m_customContrl.Create(this,IDC_CUSTOMCONTROL))
{
return -1;
}
m_customContrl.ShowWindow(SW_SHOW);
ShowWindow(SW_SHOW);
return 0;
}