errBoy 发表于 2005-11-23 14:35:00

请高手指点呀:怎样删除一个DWG文件

本帖最后由 作者 于 2005-11-28 11:41:49 编辑 <br /><br /> <P>想请教各位大侠一个问题</P>
<P>在ARX中怎么来实现,打开和删除一个DWG文件</P>
<P>请举个例子,在这里先谢谢了</P>

errBoy 发表于 2005-11-25 17:27:00

<P>AcApDocument*&nbsp;&nbsp;&nbsp;&nbsp;pDoc;</P>
<P>pdoc = acdocmanager-&gt;curdocument();&nbsp;<BR>acdocmanager-&gt;activatedocument(pdoc, adesk::ktrue);&nbsp;<BR>acdocmanager-&gt;closedocument(pdoc);</P>
<P>想用以上代码关闭一个DWG文件,但总会弹出是否保存该文件的对话框,<BR>若将文件保存该怎么用代码来实现,若不保存直接关闭又要怎么实现,还请高手指点呀!在此先谢过了<BR></P>

errBoy 发表于 2005-11-28 11:42:00

<P>帮帮忙吧</P>
<P>谢谢了</P>

Miracle 发表于 2005-12-2 18:27:00

errBoy发表于2005-11-25 17:27:00static/image/common/back.gif
AcApDocument* pDoc;
pdoc = acdocmanager-&gt;curdocument(); acdocmanager-&gt;activatedocument(pdoc, ...

<BR>我也想知道,而且如果在对话框中进行closeDocument的命令时,总要等到对话框结束以后才能关闭?不知道为什么

Andyhon 发表于 2005-12-13 17:36:00

<P>// (C) Copyright 1998-2002 by Autodesk, Inc.<BR>//<BR>// Permission to use, copy, modify, and distribute this software in<BR>// object code form for any purpose and without fee is hereby granted,<BR>// provided that the above copyright notice appears in all copies and<BR>// that both that copyright notice and the limited warranty and<BR>// restricted rights notice below appear in all supporting<BR>// documentation.<BR>//<BR>// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.<BR>// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF<BR>// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.&nbsp; AUTODESK, INC.<BR>// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE<BR>// UNINTERRUPTED OR ERROR FREE.<BR>//<BR>// Use, duplication, or disclosure by the U.S. Government is subject to<BR>// restrictions set forth in FAR 52.227-19 (Commercial Computer<BR>// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)<BR>// (Rights in Technical Data and Computer Software), as applicable.<BR>//<BR>// MDITestDialog.cpp : implementation file<BR>//</P>
<P>#include "stdafx.h"<BR>#include "acdocman.h"<BR>#include "MDITestDialog.h"<BR>#include "common.h"</P>
<P>#ifdef _DEBUG<BR>#define new DEBUG_NEW<BR>#undef THIS_FILE<BR>static char THIS_FILE[] = __FILE__;<BR>#endif</P>
<P>extern "C" HWND adsw_acadMainWnd();</P>
<P>/////////////////////////////////////////////////////////////////////////////<BR>// MDITestDialog message handlers<BR>/////////////////////////////////////////////////////////////////////////////<BR>// CMDITestDialog dialog</P>
<P><BR>CMDITestDialog::CMDITestDialog(CWnd* pParent /*=NULL*/)<BR>&nbsp;&nbsp;&nbsp; : CDialog(CMDITestDialog::IDD, pParent)<BR>{<BR>&nbsp;&nbsp;&nbsp; //{{AFX_DATA_INIT(CMDITestDialog)<BR>&nbsp;&nbsp;&nbsp; //}}AFX_DATA_INIT<BR>}</P>
<P><BR>void CMDITestDialog::DoDataExchange(CDataExchange* pDX)<BR>{<BR>&nbsp;&nbsp;&nbsp; CDialog::DoDataExchange(pDX);<BR>&nbsp;&nbsp;&nbsp; //{{AFX_DATA_MAP(CMDITestDialog)<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_ACT_MYLK_STATUS_FIELD_STATIC, m_staticActDocMyLockStatus);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_CURDOC_FIELD_STATIC, m_staticCurrentDoc);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_CUR_LK_STATUS_FIELD_STATIC, m_staticCurDocLockStatus);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_CUR_MYLK_STATUS_FIELD_STATIC, m_staticCurDocMyLockStatus);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_ACT_LK_STATUS_FIELD_STATIC, m_staticActDocLockStatus);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_LOCK_COMBO, m_lockCombo);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_ACTIVEDOC_FIELD_STATIC, m_staticActiveDoc);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_TOBECURRDOC_FIELD_STATIC, m_staticToBeCurrDoc);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_ACTIVATION_CHECK, m_activationCheck);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_NUMDOCS_STATIC, m_staticDocNum);<BR>&nbsp;&nbsp;&nbsp; DDX_Control(pDX, IDC_DOC_LIST, m_docListBox);<BR>&nbsp;&nbsp;&nbsp; //}}AFX_DATA_MAP<BR>}</P>
<P><BR>BEGIN_MESSAGE_MAP(CMDITestDialog, CDialog)<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_KEEPFOCUS, onAcadKeepFocus )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_UPDATEDIALOG, onAcadUpdateDialog )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_CREATEDOC, onAcadCreateDoc )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_DESTROYDOC, onAcadDestroyDoc )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_LOCKMODCHANGED, onAcadLockModeChanged )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_LOCKMODWILLCHANGE, onAcadLockModeWillChange )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_CURRENTDOC, onAcadCurrDoc )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_ACTIVATEDOC, onAcadActivateDoc )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_DEACTIVATEDOC, onAcadDeactivateDoc )<BR>&nbsp;&nbsp;&nbsp; ON_MESSAGE( WM_ACAD_ACTMODIFIED, onAcadActModifiedDoc )<BR>&nbsp;&nbsp;&nbsp; //{{AFX_MSG_MAP(CMDITestDialog)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_NEWDOC_BUTTON, OnNewdocButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_APPNEWDOC_BUTTON, OnAppnewdocButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_APPOPENDOC_BUTTON, OnAppopendocButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_ACTIVATION_CHECK, OnActivationCheck)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_SENDSTRING_BUTTON, OnSendstringButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_OPENDOC_BUTTON, OnOpendocButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_ISQUIESCENT_BUTTON, OnIsquiescentButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_CLOSEDOC_BUTTON, OnClosedocButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_ACTIVATEDOC_BUTTON, OnActivatedocButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(IDC_SETCURRENTDOC_BUTTON, OnSetcurrentdocButton)<BR>&nbsp;&nbsp;&nbsp; ON_BN_CLICKED(ID_REFRESH_BUTTON, OnRefreshButton)<BR>&nbsp;&nbsp;&nbsp; //}}AFX_MSG_MAP<BR>END_MESSAGE_MAP()</P>
<P>&nbsp;</P>
<P>/////////////////////////////////////////////////////////////////////////////<BR>// CMDITestDialog message handlers</P>
<P>BOOL CMDITestDialog::Create( CWnd* pParent )<BR>{<BR>&nbsp;&nbsp;&nbsp; // TODO: Add your specialized code here and/or call the base class<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; return CDialog::Create(CMDITestDialog::IDD, pParent);<BR>}</P>
<P>//&nbsp;&nbsp;&nbsp; This function gets called repeatedly whenever the mouse is moved over<BR>//&nbsp;&nbsp;&nbsp; the AutoCAD window.<BR>//<BR>LRESULT CMDITestDialog::onAcadKeepFocus( WPARAM, LPARAM )<BR>{<BR>&nbsp;&nbsp;&nbsp; return TRUE;<BR>}</P>
<P>LRESULT CMDITestDialog::onAcadUpdateDialog( WPARAM, LPARAM )<BR>{<BR>&nbsp;&nbsp;&nbsp; // update elements of the dialog to reflect the current<BR>&nbsp;&nbsp;&nbsp; // state of the documents</P>
<P>&nbsp;&nbsp;&nbsp; // get the current number of documents<BR>&nbsp;&nbsp;&nbsp; m_staticDocNum.SetWindowText( getDocCount() );</P>
<P>&nbsp;&nbsp;&nbsp; // check/uncheck document activation<BR>&nbsp;&nbsp;&nbsp; m_activationCheck.SetCheck( acDocManager-&gt;isDocumentActivationEnabled() );</P>
<P>&nbsp;&nbsp;&nbsp; // set the current document fields<BR>&nbsp;&nbsp;&nbsp; CString fName;<BR>&nbsp;&nbsp;&nbsp; AcApDocument *pCurrDoc = acDocManager-&gt;curDocument();<BR>&nbsp;&nbsp;&nbsp; if( pCurrDoc ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fName = pCurrDoc-&gt;docTitle();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticCurrentDoc.SetWindowText(fName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticToBeCurrDoc.SetWindowText(fName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticCurDocLockStatus.SetWindowText( modeStr(pCurrDoc-&gt;lockMode()) );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticCurDocMyLockStatus.SetWindowText( modeStr(pCurrDoc-&gt;myLockMode()) );<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticCurrentDoc.SetWindowText(fName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticToBeCurrDoc.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticCurDocLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticCurDocMyLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; // set the active document data<BR>&nbsp;&nbsp;&nbsp; AcApDocument *pActDoc = acDocManager-&gt;mdiActiveDocument();</P>
<P>&nbsp;&nbsp;&nbsp; if( pActDoc ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // active document name<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fName = pActDoc-&gt;docTitle();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticActiveDoc.SetWindowText(fName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // active document lock modes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticActDocLockStatus.SetWindowText( modeStr(pActDoc-&gt;lockMode()) );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticActDocMyLockStatus.SetWindowText( modeStr(pActDoc-&gt;myLockMode()) );<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticActiveDoc.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticActDocLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_staticActDocMyLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; // rebuild listbox<BR>&nbsp;&nbsp;&nbsp; RebuildListBox();<BR>&nbsp;return TRUE;<BR>}</P>
<P>&nbsp;</P>
<P>///////////////////////////////////////////////////////////////<BR>// Note: here you could do different actions for each reactor<BR>// intercepted. For this sample I use a brute force approach:<BR>// everything just updates the ui (with few exceptions)<BR>///////////////////////////////////////////////////////////////<BR>LRESULT CMDITestDialog::onAcadCreateDoc ( WPARAM, LPARAM )<BR>{<BR>&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0,0L);<BR>&nbsp;return TRUE;<BR>}</P>
<P><BR>LRESULT CMDITestDialog::onAcadDestroyDoc ( WPARAM, LPARAM )<BR>{<BR>&nbsp;&nbsp;&nbsp; // if we went to 0 doc state, clean all the pertinent <BR>&nbsp;&nbsp;&nbsp; // ui elememnts of the dialog. Note however, that this function is<BR>&nbsp;&nbsp;&nbsp; // activated upon SendMessage (instead of PostMessage) so the document<BR>&nbsp;&nbsp;&nbsp; // count right here is still one more than the end result.<BR>&nbsp;&nbsp;&nbsp; // That's why 1 is subtracked from nDoc in the comparison.<BR>&nbsp;&nbsp;&nbsp; int nDoc = acDocManager-&gt;documentCount();<BR>&nbsp;&nbsp;&nbsp; if( 0 == nDoc - 1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cleanUpUI();<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0,0L);<BR>&nbsp;return TRUE;<BR>}</P>
<P><BR>LRESULT CMDITestDialog::onAcadLockModeChanged ( WPARAM, LPARAM pCh )<BR>{<BR>&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0,0L);<BR>&nbsp;return TRUE;<BR>}</P>
<P><BR>LRESULT CMDITestDialog::onAcadLockModeWillChange ( WPARAM, LPARAM pCh )<BR>{<BR>&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0,0L);<BR>&nbsp;return TRUE;<BR>}</P>
<P><BR>LRESULT CMDITestDialog::onAcadCurrDoc ( WPARAM, LPARAM )<BR>{<BR>&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0, 0L);<BR>&nbsp;return TRUE;<BR>}</P>
<P><BR>LRESULT CMDITestDialog::onAcadActivateDoc ( WPARAM, LPARAM )<BR>{<BR>&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0, 0L);<BR>&nbsp;return TRUE;<BR>}</P>
<P><BR>LRESULT CMDITestDialog::onAcadDeactivateDoc ( WPARAM, LPARAM )<BR>{<BR>&nbsp;&nbsp;&nbsp; // clear the fields related to the active document<BR>&nbsp;&nbsp;&nbsp; m_staticActiveDoc.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_staticActDocLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_staticActDocMyLockStatus.SetWindowText("");<BR>&nbsp;return TRUE;<BR>}</P>
<P><BR>LRESULT CMDITestDialog::onAcadActModifiedDoc ( WPARAM, LPARAM bValue )<BR>{<BR>&nbsp;&nbsp;&nbsp; // check/uncheck document activation depending on the activation value sent<BR>&nbsp;&nbsp;&nbsp; if( 1L == bValue )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_activationCheck.SetCheck( TRUE );<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_activationCheck.SetCheck( FALSE );<BR>&nbsp;return TRUE;<BR>}</P>
<P>&nbsp;</P>
<P>/////////////////////////////////////////////////////////////////<BR>// ui related actions</P>
<P>void CMDITestDialog::OnNewdocButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; // document context. <BR>&nbsp;&nbsp;&nbsp; Acad::ErrorStatus st = acDocManager-&gt;newDocument();<BR>}</P>
<P><BR>void CMDITestDialog::OnOpendocButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; // document context. <BR>&nbsp;&nbsp;&nbsp; Acad::ErrorStatus st = acDocManager-&gt;openDocument();<BR>}</P>
<P><BR>void CMDITestDialog::OnAppnewdocButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; static char pData[] = "acad.dwt";</P>
<P>&nbsp;&nbsp;&nbsp; Acad::ErrorStatus st = acDocManager-&gt;appContextNewDocument((const char *)pData);<BR>}</P>
<P><BR>void CMDITestDialog::OnAppopendocButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; static char pData[] = "test1.dwg";</P>
<P>&nbsp;&nbsp;&nbsp; Acad::ErrorStatus st = acDocManager-&gt;appContextOpenDocument((const char *)pData);<BR>}</P>
<P>void CMDITestDialog::OnActivationCheck() <BR>{<BR>&nbsp;&nbsp;&nbsp; Acad::ErrorStatus st;<BR>&nbsp;&nbsp;&nbsp; // get status of the button and set the activation state from it.<BR>&nbsp;&nbsp;&nbsp; UINT check = m_activationCheck.GetCheck();</P>
<P>&nbsp;&nbsp;&nbsp; if( (check &amp;&amp; 0x0003) == 0 ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // unchecked - we need to disable the activation<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st = acDocManager-&gt;disableDocumentActivation();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // checked - we need to enable the activation<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st = acDocManager-&gt;enableDocumentActivation();<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P>void CMDITestDialog::OnSendstringButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; if( acDocManager-&gt;documentCount() == 0 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</P>
<P>&nbsp;&nbsp;&nbsp; AcApDocument *pDoc = getSelectedDocument();</P>
<P>&nbsp;&nbsp;&nbsp; if(pDoc) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Acad::ErrorStatus st = acDocManager-&gt;sendStringToExecute( pDoc, "_line 0,0 1,1 \n",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false, true);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Acad::ErrorStatus st = acDocManager-&gt;sendStringToExecute( pDoc, "_text 5,5 0.2 15 Testing\r\r");<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox("Please select a document on the list box");</P>
<P>}</P>
<P><BR>void CMDITestDialog::OnIsquiescentButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; AcApDocument *pDoc = acDocManager-&gt;curDocument();</P>
<P>&nbsp;&nbsp;&nbsp; if(pDoc) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString tempStr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempStr.Format("Current Doc is %s\nlockMode() returned %s\nand myLockMode() returned %s.",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDoc-&gt;isQuiescent() ? "Quiescent." : "NOT Quiescent.",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modeStr(pDoc-&gt;lockMode()),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modeStr(pDoc-&gt;myLockMode()) );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox( tempStr );<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P>void CMDITestDialog::OnClosedocButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; if( acDocManager-&gt;documentCount() == 0 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</P>
<P>&nbsp;&nbsp;&nbsp; AcApDocument *pDoc = getSelectedDocument();</P>
<P>&nbsp;&nbsp;&nbsp; if(pDoc) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // if you close the doc, update the UI<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( acDocManager-&gt;closeDocument(pDoc) == Acad::eOk ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0, 0L);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox("Please select a document on the list box");<BR>}</P>
<P>void CMDITestDialog::OnActivatedocButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; if( acDocManager-&gt;documentCount() == 0 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</P>
<P>&nbsp;&nbsp;&nbsp; AcApDocument *pDoc = getSelectedDocument();<BR>&nbsp;&nbsp;&nbsp; if( pDoc )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acDocManager-&gt;activateDocument( pDoc );<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox("Please select a document on the list box");<BR>}</P>
<P><BR>BOOL CMDITestDialog::OnInitDialog() <BR>{<BR>&nbsp;&nbsp;&nbsp; CDialog::OnInitDialog();</P>
<P>&nbsp;&nbsp;&nbsp; // select one of the elements of the CComboBox to be displayed <BR>&nbsp;&nbsp;&nbsp; m_lockCombo.SetCurSel(2);</P>
<P><BR>&nbsp;&nbsp;&nbsp; // set up all the UI elements<BR>&nbsp;&nbsp;&nbsp; // here I call the functions that update the ui elements directly<BR>&nbsp;&nbsp;&nbsp; // instead of waiting for posted messages.<BR>&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0, 0L);</P>
<P>&nbsp;&nbsp;&nbsp; return TRUE;&nbsp; // return TRUE unless you set the focus to a control<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // EXCEPTION: OCX Property Pages should return FALSE<BR>}</P>
<P><BR>void CMDITestDialog::OnSetcurrentdocButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; AcApDocument *pDoc = getSelectedDocument();<BR>&nbsp;&nbsp;&nbsp; if( !pDoc ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox("Please select a document on the list box");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; // get the lock mode to be used from the combo box<BR>&nbsp;&nbsp;&nbsp; AcAp::DocLockMode lockMode = getSelectedLockMode();</P>
<P>&nbsp;&nbsp;&nbsp; acDocManager-&gt;unlockDocument( pDoc ); // in case we had lock it before<BR>&nbsp;&nbsp;&nbsp; acDocManager-&gt;setCurDocument( pDoc, lockMode );<BR>}</P>
<P>/////////////////////////////////////////////////////////////////////////////<BR>// other MDITestDialog member functions<BR>/////////////////////////////////////////////////////////////////////////////<BR>void CMDITestDialog::cleanUpUI( void ) <BR>{<BR>&nbsp;&nbsp;&nbsp; m_staticActDocMyLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_staticCurrentDoc.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_staticCurDocLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_staticCurDocMyLockStatus.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_staticActDocLockStatus.SetWindowText("");</P>
<P>&nbsp;&nbsp;&nbsp; m_staticActiveDoc.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_staticToBeCurrDoc.SetWindowText("");<BR>&nbsp;&nbsp;&nbsp; m_activationCheck.SetCheck( acDocManager-&gt;isDocumentActivationEnabled() );<BR>&nbsp;&nbsp;&nbsp; m_staticDocNum.SetWindowText( "0" );<BR>&nbsp;&nbsp;&nbsp; m_docListBox.ResetContent();<BR>}</P>
<P>CString CMDITestDialog::getDocCount( void )<BR>{<BR>&nbsp;&nbsp;&nbsp; // get the current number of documents<BR>&nbsp;&nbsp;&nbsp; int nDoc = acDocManager-&gt;documentCount();<BR>&nbsp;&nbsp;&nbsp; CString tempStr;<BR>&nbsp;&nbsp;&nbsp; tempStr.Format("%d",nDoc);<BR>&nbsp;&nbsp;&nbsp; return tempStr;<BR>}</P>
<P>CString CMDITestDialog::makeStringFromPtr( LONG pCh )<BR>{<BR>&nbsp;&nbsp;&nbsp; CString tempStr;</P>
<P>&nbsp;&nbsp;&nbsp; char *pChar = (char*) pCh;<BR>&nbsp;&nbsp;&nbsp; if( pChar ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempStr.Format("%s",pChar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( *pChar )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete pChar;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempStr = "";</P>
<P>&nbsp;&nbsp;&nbsp; return tempStr;<BR>}</P>
<P>// getDocFromFilename()<BR>//&nbsp; Passed a filename, it finds the corresponding document pointer<BR>//&nbsp; Returns true if successful<BR>bool CMDITestDialog::getDocFromFilename(CString csFileName, AcApDocument* &amp;pNewDocument)<BR>{<BR>&nbsp;&nbsp;&nbsp; // Iterate over the open documents. We will match the filename if:<BR>&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The filename specified matches the fully qualified path<BR>&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name, as returned by AcApDocument::filename()<BR>&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -or-<BR>&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The filename specified matches the filename portion of the <BR>&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document name</P>
<P>&nbsp;&nbsp;&nbsp; AcApDocumentIterator* iter = acDocManager-&gt;newAcApDocumentIterator();<BR>&nbsp;&nbsp;&nbsp; AcApDocument* pThisDocument = NULL;<BR>&nbsp;&nbsp;&nbsp; CString csThisFilename;<BR>&nbsp;&nbsp;&nbsp; CString csThisFilenameShort;</P>
<P>&nbsp;&nbsp;&nbsp; csFileName.MakeUpper(); // uppercase comparisons</P>
<P>&nbsp;&nbsp;&nbsp; while(!iter-&gt;done()) {&nbsp;&nbsp; // Tiptoe through the tulips<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pThisDocument = iter-&gt;document();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csThisFilename = pThisDocument-&gt;docTitle();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csThisFilename.MakeUpper();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csThisFilenameShort = csThisFilename.Right(csThisFilename.GetLength() -<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csThisFilename.ReverseFind('\\') - 1);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(csFileName == csThisFilename ||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Full path match<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csFileName == csThisFilenameShort || // Matches filename only<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csFileName == csThisFilenameShort.Left( // Filename less extension<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csThisFilenameShort.GetLength() - 4)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pNewDocument = pThisDocument;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( iter )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete iter;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iter-&gt;step();<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; pNewDocument = NULL;<BR>&nbsp;&nbsp;&nbsp; if( iter )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete iter;<BR>&nbsp;&nbsp;&nbsp; // no match found <BR>&nbsp;&nbsp;&nbsp; return false;<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P>
<P>AcApDocument* CMDITestDialog::getSelectedDocument( void )<BR>{<BR>&nbsp;&nbsp;&nbsp; AcApDocument *pDoc = NULL;</P>
<P>&nbsp;&nbsp;&nbsp; CString fName;<BR>&nbsp;&nbsp;&nbsp; int ndx = m_docListBox.GetCurSel();</P>
<P>&nbsp;&nbsp;&nbsp; if( LB_ERR != ndx ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_docListBox.GetText(ndx, fName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // find out which document has this file name and get its document pointer.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( !getDocFromFilename( fName, pDoc ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox("Document NOT found."); <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; return pDoc;<BR>}</P>
<P><BR>AcAp::DocLockMode CMDITestDialog::getSelectedLockMode( void )<BR>{<BR>&nbsp;&nbsp;&nbsp; AcAp::DocLockMode lm = AcAp::kNone;</P>
<P>&nbsp;&nbsp;&nbsp; int ndx = m_lockCombo.GetCurSel();<BR>&nbsp;&nbsp;&nbsp; CString lModeStr;</P>
<P>&nbsp;&nbsp;&nbsp; if( LB_ERR != ndx ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_lockCombo.GetLBText(ndx, lModeStr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // to activate the document, first I need to find out which document<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // has this file name and get its document pointer.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( !getLockModeFromStr( lModeStr, lm ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox("Error with lock mode combo box"); //should never get here.<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; return lm;</P>
<P>}</P>
<P><BR>void CMDITestDialog::RebuildListBox()<BR>{<BR>&nbsp;&nbsp;&nbsp; m_docListBox.ResetContent(); // start from an empty list box</P>
<P>&nbsp;&nbsp;&nbsp; // at this moment, get all drawing names and add them to the list box.<BR>&nbsp;&nbsp;&nbsp; AcApDocumentIterator* iter = acDocManager-&gt;newAcApDocumentIterator();<BR>&nbsp;&nbsp;&nbsp; AcApDocument* pDoc = NULL;<BR>&nbsp;&nbsp;&nbsp; CString csFilename;</P>
<P>&nbsp;&nbsp;&nbsp; while(!iter-&gt;done()) {&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDoc = iter-&gt;document();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pDoc) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // #### make sure pDoc is not NULL ####<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csFilename = pDoc-&gt;docTitle(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_docListBox.AddString( csFilename );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iter-&gt;step();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; if( iter )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete iter;<BR>}</P>
<P>void CMDITestDialog::OnRefreshButton() <BR>{<BR>&nbsp;&nbsp;&nbsp; // Just to give peace of mind: if you think something is displayed wrong<BR>&nbsp;&nbsp;&nbsp; // in the dialog, this button will update all ui of the dialog<BR>&nbsp;&nbsp;&nbsp; onAcadUpdateDialog(0,0L);<BR>}</P>
<P>&nbsp;</P>
页: [1]
查看完整版本: 请高手指点呀:怎样删除一个DWG文件