Hi
I found one of the wrong behaviours though I don't know where to solve it.
For creating an ocx one can give a window title. I gave a "" to the
CreateControl function. But this poses a problem to MFC, it's only prepared
for valid strings or NULL pointers. That's why it generates the exception:
void AFXAPI AfxThrowOleException(SCODE sc){
#ifdef _DEBUG
TRACE1("Warning: constructing COleException, scode = %s.\n",
AfxGetFullScodeString(sc));
#endif
COleException* pException = new COleException;
pException->m_sc = sc;
THROW(pException);
}
In Windows this is caught by another function in MFC and doesn't do any harm:
BOOL AFX_CDECL COleControlSite::SafeSetProperty(DISPID dwDispID, VARTYPE
vtProp, ...) {
va_list argList; // really only one arg, but...
va_start(argList, vtProp);
BOOL bSuccess;
TRY {
SetPropertyV(dwDispID, vtProp, argList);
bSuccess = TRUE;
} CATCH_ALL(e) {
DELETE_EXCEPTION(e);
bSuccess = FALSE;
} END_CATCH_ALL
va_end(argList);
return bSuccess;
}
Now it seems that the exception handling inside (or wherever) the MFC.dll
doesn't work if running in Wine or the MFC exceptions are different and the
exception comes right through. I can overcome this problem by giving a
valid window title but that solves it only for me. I have no idea how and
if this can be solved but maybe this description gives a hint to a
programmer with more insight.
Thanks
Fabi