"Igor Tandetnik" wrote:
InitInstance is not a class or namespace name, so the notation
InitInstance::_AtlBaseModule doesn't make any sense to me.
Sorry for the confusion. What I am trying to get at is that the
_AtlBaseModule member of CWinApp is different from the _AtlBaseModule of
MyDll even though MyDll inherits from CWinApp
Note that CWinApp is an MFC class, while CAtlBaseModule is an ATL class.
The two libraries know (almost) nothing about each other, and don't
interact in any way. You seem to expect that CWinApp::InitInstance would
somehow set up or initialize _AtlBaseModule. It doesn't.
Well when I step into CWinApp::InitInstance I get this
BOOL CWinApp::InitInstance()
{
InitLibId();
m_hLangResourceDLL = LoadAppLangResourceDLL();
if(m_hLangResourceDLL != NULL)
{
AfxSetResourceHandle(m_hLangResourceDLL);
_AtlBaseModule.SetResourceInstance(m_hLangResourceDLL);
}
return TRUE;
}
So to me it looks like it is trying to configure _AtlBaseModule with the
correct localized .dll which is what I want. The confusing part for me is why
do I then have to call
_AtlBaseModule.SetResourceInstance(m_hLangResourceDLL); in
MyDll::InitInstance for localization to work if I already called the
CWinApp::InitInstance() base class method.
Anyway, you seem to have solved your problem, right? Do you have any
further questions?
No the work around seems to have taken care of the problem. Thank you.
Even though the _AtlBaseModule object is being accessed from within a CWinApp member function, it is NOT a member object of the
CWinApp class. Even if it were, the CWinApp base in this instance is not necessarily in the context of the same instance of your
DLLs own CWinApp-derived object. Each module (Exe or DLL) will have its own copy of an app object.
Also, each module wil have its own copy of the _AtlBaseModule global variable. So, don't just assume that seeing it modified once