Вообще это уже не в первый раз. У других модулей тоже такое встречалось. Причем этот глюк проявляется не на всех компьютерах (я меня все работает прекрасно, а начинает глючить конечно же когда я представляю программу начальству :))
DLLMain обычный, я после мастера туда даже не заходил
#include "StdAfx.h"
#include "resource.h"
#include <afxdllx.h>
//-----------------------------------------------------------------------------
//----- Define the sole extension module object.
AC_IMPLEMENT_EXTENSION_MODULE(FormDLL)
#ifdef NEVER
AFX_EXTENSION_MODULE FormExtDLL ={ NULL, NULL } ;
#endif
//-----------------------------------------------------------------------------
//----- DLL Entry Point
extern "C"
BOOL WINAPI DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) {
//----- Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved) ;
if ( dwReason == DLL_PROCESS_ATTACH ) {
_hdllInstance =hInstance ;
FormDLL.AttachInstance (hInstance) ;
InitAcUiDLL () ;
} else if ( dwReason == DLL_PROCESS_DETACH ) {
FormDLL.DetachInstance () ;
}
return (TRUE) ;
}
По поводу пункта 4
содержание файла acrxEntryPoint.cpp
#include "StdAfx.h"
#include "Dlg.h"
//-----------------------------------------------------------------------------
#define szRDS _RXST("W_")
Dlg* dlg = NULL;
//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CFormApp : public AcRxArxApp {
public:
CFormApp () : AcRxArxApp () {}
virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
HWND hwndAcad = adsw_acadMainWnd();
CWnd *pWnd = CWnd::FromHandle ( hwndAcad );
if( dlg == NULL )
{
if ( (dlg = new Dlg ( pWnd )) == NULL ) return (retCode);
BOOL succeeded = dlg->Create( pWnd );
if ( !succeeded )
{
acutPrintf("\nошибка при загрузке модуля для толщин линий\n");
}
}
return (retCode) ;
}
virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
dlg->DestroyWindow();
dlg = NULL;
return (retCode) ;
}
virtual void RegisterServerComponents () {
}
// ----- W_Form._dlg command
static void W_Form_dlg(void)
{
if (dlg != NULL)
dlg->ShowWindow(SW_SHOWNORMAL);
else
acutPrintf("\nне могу открыть окно!\n");
}
} ;
//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CFormApp)
ACED_ARXCOMMAND_ENTRY_AUTO(CFormApp, W_Form, _dlg, dlg, ACRX_CMD_TRANSPARENT, NULL)