> But doesn't CAcModuleResourceOverride switch to the resources in the ARX file? My resources are in a separate file
You have to make sure that the CAcExtensionModule object stores your resource handle in CAcExtensionModule::m_hDefaultResource.
Look into the header file <ARX>\inc\AcExtensionModule.h. It's pretty obvious. This is how you can do it:
// Define a CAcExtensionModule at global scope:
AC_IMPLEMENT_EXTENSION_MODULE(theArxDLL);
// expands to:
// CAcExtensionModule theArxDLL;
// CAcExtensionModule& CAcModuleResourceOverride::m_extensionModule = theArxDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
HINSTANCE hResOld = AfxGetResourceHandle(); // store the original Resource Handle
HINSTANCE hMyResource = LoadLibrary(<myResDllPath>); // Load your Resource DLL or get its handle
AfxSetResourceHandle(hMyResource); // temporary set your Resource Handle...
theArxDLL.AttachInstance(hInstance); // ..to make sure that theArxDLL grabs your Resource Handle when calling AfxGetResourceHandle()
AfxSetResourceHandle(hResOld); // restore to the original handle
}
else if (dwReason == DLL_PROCESS_DETACH)
{
theArxDLL.DetachInstance();
}
return 1;
}
I have to admit that I'm not sure wether LoadLibrary() will work within DllMain(). If not you could move the code to initModule() (acrxEntryPoint(AcRx::kInitAppMsg,..))
> Isn't the whole idea of the extension DLL system so you DON'T have to keep flipping your resource handles?
>It would be easier - and one less thing to remember to do - if I could make my DLL the first in the resource chain.
Sure it would be easier. But AutoCAD itself and maybe other extension modules use their own resource DLLs as well. So you can't ever rely on the current resource handle being yours. This is why you need the flipping.
> ...have to go through hundreds of source files and add it in there.
You should add this to functions that need to access the resources. I.e. if you have resource Strings use a function like CString resStr(int id) {...} that does the flipping before retrieving the string.
Thomas Brammer ● Software Developer ● imos AG ● LinkedIn ● 
If an answer solves your problem please [ACCEPT SOLUTION]. Otherwise explain why not.