ʹÓÃÊÂÎñµÄ×¢ÒâÊÂÏ
? Óëopen-closeÒ»ÆðʹÓÃҪעÒâ
ÊÂÎñ¿ÉÒÔÓëopen-close»ìºÏʹÓ㬵«±ØÐë¸÷×ÔÅä¶Ô£¬²»ÄÜÔÚZcDbTransaction::getObject()´ò¿ªÄ³¸ö¶ÔÏóºó£¬ÓÖµ÷ÓøöÔÏó×ÔÉíµÄclose()º¯Êý¹Ø±Õ¡£
? ´ò¿ª¶ÔÏóҪעÒâ
ÊÂÎñ»úÖÆËäÈ»¿ÉÒÔÔÚ¶ÔÏó´¦ÓÚopenForWrite»òopenForReadµÄ״̬Ï£¬µ÷ÓÃgetObject()ÒÔ¶Á»òдµÄ·½Ê½´ò¿ª£¬µ«ÊÇÔÚ¶ÔÏó´¦ÓÚopenForNotify״̬ÏÂʱ£¬ÊDz»ÄÜÓÃgetObject()ÒÔд·½Ê½´ò¿ªµÄ¡£
? ǶÌ×ʹÓÃҪעÒâ
ÊÂÎñ¿ÉÒÔǶÌ×ʹÓ㬼´ÔÚÒ»¸öÊÂÎñÖÐÔÙ¿ªÊ¼Ò»¸öÊÂÎñ¡£µ«Òª×¢ÒâÁ½µã£º 1. ²»ÄÜÔÚÊÂÎñ½áÊø»ò·ÅÆúµÄ¹ý³ÌÖпªÊ¼Ò»¸öÊÂÎñ¡£
2. ÔÚÓÐǶÌ×ÊÂÎñµÄÇé¿öÏ£¬Ö»ÓÐ×îÍâ²ãµÄÊÂÎñ½áÊøµÄʱºò£¬²Å»áÌá½»ËùÓÐÊÂÎñµÄÊý¾Ý¡£
ÊÂÎñ¹ÜÀí¹¦Äܽӿڣº
1£© ³¤ÊÂÎñ¹ÜÀíÀà
ZcApLongTransactionManager::checkIn ZcApLongTransactionManager::checkOut ZcDbLongTransaction::addToWorkSet ZcDbLongTransaction::newWorkSetIterator ZcDbLongTransaction::removeFromWorkSet ZcDbLongTransaction::originBlock ZcDbLongTransaction::originObject ZcDbLongTransaction::workSetHas 2£© ³¤ÊÂÎñ¹¤×÷¼¯±éÀúÆ÷
ZcDbLongTransWorkSetIterator::start ZcDbLongTransWorkSetIterator::step
ZcDbLongTransWorkSetIterator::curObjectIsErased ZcDbLongTransWorkSetIterator::curObjectIsPrimary ZcDbLongTransWorkSetIterator::curObjectIsRemoved ZcDbLongTransWorkSetIterator::done ZcDbLongTransWorkSetIterator::objected 3£© ÊÂÎñ¹ÜÀíÀà
ZcDbTransactionManager::getAllObjects ZcDbTransactionManager::getObject ZcDbTransactionManager::abortTransaction
ZcDbTransactionManager::addNewlyCreatedDBRObject ZcDbTransactionManager:: startTransaction 4£© ÊÂÎñÀà
ZcTransaction::getAllObjects ZcTransaction::getObject
Îĵµ¹ÜÀí
ZWCADÊÇÒ»¸öÖ§³Ö¶àÎĵµ£¨MDI£©µÄÓ¦ÓóÌÐò£¬²¢ÌṩÁËÒ»Ì×Õë¶ÔZWCADÎĵµ¹ÜÀíµÄÓ¦Óýӿڣ¬Ã¿Ò»¸ö´ò¿ªµÄdwgͼÐÎΪһ¸öZcApDocumentÎĵµ¶ÔÏó£¬Îĵµ¹ÜÀíÓ¦ÓÃÀàZcApDocManager¹ÜÀíËùÓеÄZcApDocumen¶ÔÏó¡£Îĵµµü´úÆ÷ZcApDocumentIteratorÌṩһÌ×µü´úµÄ·½·¨À´±éÀúµ±Ç°CAD´ò¿ªµÄËùÓÐÎĵµ¡£Îĵµ·´Ó¦Æ÷ZcApDocManagerReactorÓÃÀ´Í¨¸æµ±Ç°Îĵµ²Ù×÷µÄʼþ¡£
1£©Îĵµ¶ÔÏóÀàZcApDocument ZcApDocument::cDoc ZcApDocumen::docTitle ZcApDocument::fileName ZcApDocument::isReadOnly
2£©Îĵµ¹ÜÀíÓ¦ÓÃÀàZcApDocManager ZcApDocManager::addReactor
ZcApDocManager::appContextNewDocument ZcApDocManager::appContextOpenDocument ZcApDocManager::curDocument ZcApDocManager::document ZcApDocManager::documentCount
ZcApDocManager::newAcApDocumentIterator ZcApDocManager::openDocument ZcApDocManager::removeReactor
3£©Îĵµµü´úÆ÷ZcApDocumentIterator ZcApDocumentIterator::docment ZcApDocumentIterator::done ZcApDocumentIterator::step
4£© Îĵµ·´Ó¦Æ÷
ZcApDocManagerReactor::documentActivated ZcApDocManagerReactor::documentBecameCurrent ZcApDocManagerReactor::documentCreated
ZcApDocManagerReactor::documentCreateStarted ZcApDocManagerReactor::documentDestroyed ZcApDocManagerReactor::documentToBeActivated ZcApDocManagerReactor::documentToBeDeactivated ZcApDocManagerReactor::documentToBeDestroyed
´úÂëʾÀý£ºÈçºÎ»ñµÃµ½µ±Ç°ZWCAD´ò¿ªµÄËùÓÐÎĵµÃû³Æ£¿
void listDocuments() {
ZcDbDatabase* pDb = zcdbHostApplicationServices()->workingDatabase(); ZcApDocument* pCurDoc = zcDocManager->document(pDb); const char * strCurTitle = pCurDoc->docTitle();
zcutPrintf(\ZcApDocumentIterator* pDocIter;
pDocIter = zcDocManager->newZcApDocumentIterator(); zcutPrintf(\ZcApDocument* pDoc = NULL; int nIndex = 1;
for ( ; !pDocIter->done(); pDocIter->step()) {
pDoc = pDocIter->document();
const char * strTitle = pDoc->docTitle(); const char * strFileName = pDoc->fileName();
zcutPrintf(\
nIndex, strTitle, strFileName); }
}
delete pDocIter;
nIndex++;
Ìáʾ£ºÎĵµ¹ÜÀíÀàµÄ½Ó¿ÚµÄÏêϸʹÓÿÉÒԲο¼ZRXSDK\\Sample\\Ŀ¼ÏµÄʾÀý³ÌÐòDocumentManager
×Ô¶¨ÒåʵÌåOPM
ʲôÊÇ×Ô¶¨ÒåʵÌåOPM£¿
Õë¶Ô×Ô¶¨ÒåʵÌåÀàÐÍ£¬Óû§¿É×ÔÐж¨ÒåºÍÀ©Õ¹¸ÃʵÌåµÄÊôÐÔ£¬¸ù¾Ý¾ßÌåÐèÒª¶Ô×Ô¶¨ÒåʵÌåµÄÌØÐÔ¶¨ÒåºÍ·ÖÀà¡£Ö§³Ö¶àÖÖÊý¾ÝÀàÐ͵ÄÊôÐÔ£¬°üÀ¨£º×Ö·û´®¡¢ÕûÐÍ¡¢¸¡µã¡¢±äÌåµÈ¡£Ö§³Ö¶à¸öʵÌåÊôÐÔ¼¯ºÏµÄ½»¼¯¡£
×Ô¶¨ÒåʵÌåOPMÌØÐÔ£º
1£© ÏÔʾ×Ô¶¨ÒåÊôÐÔµÄÃû³Æ
2£© ÏÔʾ»ù±¾ÊôÐÔ£¨ÑÕÉ«£¬Í¼²ã£¬ÏßÐ͵ȣ© 3£© ÏÔʾ×Ô¶¨ÒåʵÌå×Ô¶¨ÒåµÄÊôÐÔ 4£© ·ÖÀàÏÔʾ×Ô¶¨ÒåʵÌåÊôÐÔ
5£© ±à¼ÐÞ¸Ä×Ô¶¨ÒåʵÌåÊôÐÔ£¨Ö§³Ö¶à¸öʵÌåÊôÐÔ½»¼¯µÄ±à¼£©
OPMʹÓÃ×¢ÒâÊÂÏ
1£© ĿǰËùÖ§³ÖµÄ×Ô¶¨ÒåʵÌåÊôÐÔÀ¸µÄÏÔʾ»¹²»È«Ã棬´ÓʵÌåÀàÐͶøÑÔ£¬½öÖ§³Ö´Ó
IZcadEntityÅÉÉúµÄ×Ô¶¨ÒåʵÌ壻
2£© ËùÖ§³ÖµÄOPM½Ó¿Ú½öÏÞÓÚÊý¾Ý²ãÃæ£¨ÈçIOPMPropertyExpander£¬
IOPMPropertyExtension£©£¬Ôݲ»Ö§³ÖÓë½çÃæÏà¹ØµÄ½Ó¿Ú£¨ÈçIPerPropertyDisplay£©¡£
Ìáʾ£º×Ô¶¨ÒåʵÌåOPMµÄʹÓÿɲο¼ZRXSDK\\Sample\\Ŀ¼ÏµÄʾÀý³ÌÐòZRX_Misc
MFCÀ©Õ¹UIÀà
ZRXÖ§³ÖÓû§Ê¹ÓÃMFCÀ´À©Õ¹¿ª·¢×Ô¼ºµÄÓ¦ÓóÌÐò¡£ÀýÈçÔÚZRXÓ¦ÓóÌÐòÉÏʹÓÃMFC´´½¨CDialog¡¢CButton¡¢CComboBox¡¢CEditµÈ¿Ø¼þ¡£Í¬Ñù£¬ ZRXÌṩÁ˼¸¸ö»ù±¾µÄUI½Ó¿ÚÀ๩¶þ´Î¿ª·¢Ê¹Óãº
CZdUiBaseDialog¡ª¡ª¼Ì³ÐÓÚCDialog£¬Ìṩ»ù±¾¶Ô»°¿ò´°¿Ú¹¦ÄÜ
CZdUiDailog¡ª¡ª¼Ì³ÐÓÚCZdUiBaseDialog£¬Ìṩ´°¿Ú³ß´ç±ä»¯ºÍÓÀ¾ÃÊý¾ÝµÄ´æ´¢¹¦ÄÜ CZcUiDialog¡ª¡ª¼Ì³ÐÓÚCZdUiDailog£¬À©Õ¹ºÍÍêÕûCZdUiDailogÀàµÄ¹¦ÄÜ
¿ÉÍ£¿¿Ãæ°å£¨DockControlBar£©
ZWCAD¿ÉÍ£¿¿Ãæ°å¹¦ÄÜÖ÷ҪʹÓÃÈ«¾Ö½Ó¿Úº¯Êýzdsw_excuteUICommand, °ÑÌØ¶¨¹¦ÄܵĻص÷º¯Êýת½Óµ½ZWCADÖ÷UIÏß³ÌÉÏÖ´ÐС£Òò´Ë£¬ÔÚÓ¦Óøù¦ÄÜǰ£¬ÐèÒªÊÂÏÈÍê³ÉÌØÐÔ¹¦ÄܵĻص÷º¯Êý¡£