LRESULT CMDITestDialog::onAcadUpdateDialog( WPARAM, LPARAM ) { // update elements of the dialog to reflect the current // state of the documents // get the current number of documents m_staticDocNum.SetWindowText( getDocCount() ); // check/uncheck document activation m_activationCheck.SetCheck( acDocManager->isDocumentActivationEnabled() ); // set the current document fields CString fName; AcApDocument *pCurrDoc = acDocManager->curDocument(); if( pCurrDoc ) { fName = pCurrDoc->docTitle(); m_staticCurrentDoc.SetWindowText(fName); m_staticToBeCurrDoc.SetWindowText(fName); m_staticCurDocLockStatus.SetWindowText( modeStr(pCurrDoc->lockMode()) ); m_staticCurDocMyLockStatus.SetWindowText( modeStr(pCurrDoc->myLockMode()) ); } else { m_staticCurrentDoc.SetWindowText(fName); m_staticToBeCurrDoc.SetWindowText(""); m_staticCurDocLockStatus.SetWindowText(""); m_staticCurDocMyLockStatus.SetWindowText(""); } // set the active document data AcApDocument *pActDoc = acDocManager->mdiActiveDocument(); if( pActDoc ) { // active document name fName = pActDoc->docTitle(); m_staticActiveDoc.SetWindowText(fName); // active document lock modes m_staticActDocLockStatus.SetWindowText( modeStr(pActDoc->lockMode()) ); m_staticActDocMyLockStatus.SetWindowText( modeStr(pActDoc->myLockMode()) ); } else { m_staticActiveDoc.SetWindowText(""); m_staticActDocLockStatus.SetWindowText(""); m_staticActDocMyLockStatus.SetWindowText(""); } // rebuild listbox RebuildListBox(); return TRUE; }
// getDocFromFilename() // Passed a filename, it finds the corresponding document pointer // Returns true if successful bool CMDITestDialog::getDocFromFilename(CString csFileName, AcApDocument* &pNewDocument) { // Iterate over the open documents. We will match the filename if: // The filename specified matches the fully qualified path // name, as returned by AcApDocument::filename() // -or- // The filename specified matches the filename portion of the // document name AcApDocumentIterator* iter = acDocManager->newAcApDocumentIterator(); AcApDocument* pThisDocument = NULL; CString csThisFilename; CString csThisFilenameShort; csFileName.MakeUpper(); // uppercase comparisons while(!iter->done()) { // Tiptoe through the tulips pThisDocument = iter->document(); csThisFilename = pThisDocument->docTitle(); csThisFilename.MakeUpper(); csThisFilenameShort = csThisFilename.Right(csThisFilename.GetLength() - csThisFilename.ReverseFind('\\') - 1); if(csFileName == csThisFilename || // Full path match csFileName == csThisFilenameShort || // Matches filename only csFileName == csThisFilenameShort.Left( // Filename less extension csThisFilenameShort.GetLength() - 4)) { pNewDocument = pThisDocument; if( iter ) delete iter; return true; } iter->step(); } pNewDocument = NULL; if( iter ) delete iter; // no match found return false; }
void CMDITestDialog::RebuildListBox() { m_docListBox.ResetContent(); // start from an empty list box // at this moment, get all drawing names and add them to the list box. AcApDocumentIterator* iter = acDocManager->newAcApDocumentIterator(); AcApDocument* pDoc = NULL; CString csFilename; while(!iter->done()) { pDoc = iter->document(); if(pDoc) { // #### make sure pDoc is not NULL #### csFilename = pDoc->docTitle(); m_docListBox.AddString( csFilename ); } iter->step(); } if( iter ) delete iter; }