本帖最后由 LoveArx 于 2018-1-24 12:04 编辑
不用MFC OPEN DWG 的代码。
[C++] 纯文本查看 复制代码
//-----------------------------------------------------------------------------
//----- acrxEntryPoint.cpp
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#pragma region ATLCOM
#include "acadi.h"
#include "acadi_i.c"
#include <atlbase.h>
#include <comutil.h>
#pragma endregion
#include "resource.h"
//-----------------------------------------------------------------------------
#define szRDS _RXST("")
//-----------------------------------------------------------------------------
//----- Object-A-RX EntryPoint
class COpenCloseApp : public AcRxArxApp {
public:
COpenCloseApp() : AcRxArxApp() {}
virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) {
AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);
return (retCode);
}
virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) {
AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);
return (retCode);
}
virtual void RegisterServerComponents() {}
static void MyGroupOpenClose() {
openDwg(AcString(_T("C:\\temp\\test.dwg")), false);
}
static void openDwg(AcString dwgName, bool savePrev)
{
CComQIPtr<IAcadApplication> pComApp(acedGetIDispatch(FALSE));
HRESULT hr = 0;
if (!pComApp)
return;
CComPtr<IAcadDocument> pDoc;
hr = pComApp->get_ActiveDocument(&pDoc);
if (FAILED(hr))
return;
BSTR fName; hr = pDoc->get_FullName(&fName);
_bstr_t dwgPrev(fName);
if (SUCCEEDED(hr) && _wcsicmp(dwgPrev, dwgName) != 0)
{
_variant_t vb(savePrev ? VARIANT_TRUE : VARIANT_FALSE);
_variant_t vnam(dwgPrev);
hr = pDoc->Close(vb, vnam);
if (FAILED(hr))
{
acutPrintf(L"\nFailed to close %s.", LPCTSTR(dwgPrev));
return;
}
_bstr_t fileName(dwgName);
CComPtr<IAcadDocuments> pDocs;
hr = pComApp->get_Documents(&pDocs);
if (FAILED(hr))
return;
_variant_t b(VARIANT_FALSE);
_variant_t password("");
CComPtr<IAcadDocument> pDoc;
hr = pDocs->Open(fileName, b, password, &pDoc);
if (FAILED(hr)) {
AcString strErr;
strErr.format(L"\nFailed to open %s.", LPCTSTR(fileName));
::MessageBoxW(NULL, strErr, L"OpenFile error", MB_ICONERROR);
}
}
}
};
//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(COpenCloseApp)
ACED_ARXCOMMAND_ENTRY_AUTO(COpenCloseApp, MyGroup, OpenClose, OpenClose, ACRX_CMD_MODAL | ACRX_CMD_SESSION, NULL)
#pragma region LIB
#pragma comment(lib,"comsuppw.lib")
#pragma endregion |