找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 939|回复: 4

[ARX程序]:我真的好沮丧!

[复制链接]
发表于 2002-5-11 08:12:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
刚还很兴奋,以为搞定了,那晓一会儿出此错误,我真命苦!!在视中右键菜单,出现对话框。出此错误。代码为:


void CManProjectVw1::OnAddtree()
{   
    CAcModuleResourceOverride resOverride;
        CManProjectDlg dlg(CWnd::FromHandle(adsw_acadMainWnd()));
        CTreeCtrl& theCtrl=GetTreeCtrl();
        dlg.m_pTreeCtrl=&theCtrl;
    dlg.DoModal();

}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-5-11 10:01:20 | 显示全部楼层
这种情况我在删除按钮、编辑框等控制的时候没有同时删除关联的变量时遇到过,你看看是不是这样
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-18 07:53:15 | 显示全部楼层
void CManProjectVw1::OnAddtree()
{
CAcModuleResourceOverride resOverride;
CManProjectDlg dlg(CWnd::FromHandle(adsw_acadMainWnd()));
CTreeCtrl  *theCtrl;
theCtrl=GetTreeCtrl();
dlg.m_pTreeCtrl=theCtrl;
dlg.DoModal();

}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-18 10:18:48 | 显示全部楼层
求教!!
    我想做的那个“材料成型CAD图纸管理”生成图纸数后,我想将整个数保存,用MFC我已搞定,但ARX不能啊,主要实现的是,在树视中打右建菜单使树项目保存。
关健代码如下:
在文档中:

void CTreeStoreDoc::Serialize(CArchive& ar)
{
        if (ar.IsStoring())
        {
                // TODO: add storing code here
        }
        else
        {
                // TODO: add loading code here
        }

        SerializeTreeView(ar);
}

void CTreeStoreDoc::SerializeTreeView(CArchive& ar)
{
        //SAMPLE: Well, we don't know exactly which view needs
        // to be serialized. For this demo, we'll find the first
        // tree control there is and serialize it. This has the
        // net effect of making the "New" command in the "Window"
        // menu behave in a pretty broken way. In order to fix
        // it, you'd want to override the creation of a new
        // view in that response and have the new view copy data
        // from the copied view. (This is a problem with all
        // control-based views.)

        POSITION pos = GetFirstViewPosition();
        CManProjectVw1* pView = NULL;

        while (pos != NULL && pView == NULL)
        {
        CView* pTemp = GetNextView(pos);
        pView = DYNAMIC_DOWNCAST(CManProjectVw1, pTemp);
        }

        if (pView == NULL)
        {
                MessageBox(NULL, _T("Couldn't find a view to serialize!"),
                        AfxGetAppName(), MB_OK | MB_ICONHAND);
        }
        else
        {
                pView->Serialize(ar);
        }
}



void CManProjectVw1::OnItemSave()
{   
        CTreeStoreDoc *pDoc=GetDocument();
        CFileDialog dlg(TRUE); // FALSE = save dialog
        CString szFilter;
        LPCTSTR lpszPathName;
        szFilter = "材料成型CAD项目文件 (.clcx)|*.clcx|";
        szFilter += "All Files (*.*)|*.*|";
        LPTSTR pch = szFilter.GetBuffer(0);       
        while ((pch = _tcschr(pch, '|')) != NULL)
                        *pch++ = '\0';
        dlg.m_ofn.lpstrFilter = szFilter;
        dlg.m_ofn.nFilterIndex = 11;
        dlg.m_ofn.lpstrTitle = "保存材料成型CAD项目文件";
        dlg.DoModal();

}



void CManProjectVw1::RecursiveWriteItems(CArchive& ar, CTreeCtrl& refCtrl, HTREEITEM hItem)
{
        //SAMPLE: loop through each item at the level of hItem (eg,
        // hItem and all of its siblings)
        do
        {
                CString str = refCtrl.GetItemText(hItem);
                ar << (BYTE) recordRegular;
                ar << str;

                //SAMPLE: if a given item has children, mark a push in the indentation
                // level and recurse to get all those children
                if (refCtrl.ItemHasChildren(hItem))
                {
                        ar << (BYTE) recordPush;
                        RecursiveWriteItems(ar, refCtrl, refCtrl.GetChildItem(hItem));
                }
        }
        while ((hItem = refCtrl.GetNextSiblingItem(hItem)) != NULL);

        //SAMPLE: done working at this level--mark a pop and return
        // either to our caller or the next less nested level.
        ar << (BYTE) recordPop;
}

void CManProjectVw1::WriteTreeViewContent(CArchive& ar, CTreeCtrl& refCtrl)
{
        UINT nCount = refCtrl.GetCount();
        ar << nCount;

        // short circuit the zero-element case
        if (nCount == 0)
                return;

        //SAMPLE: there's real work to do! Start recursing at the root item
        HTREEITEM hItem = refCtrl.GetRootItem();
        RecursiveWriteItems(ar, refCtrl, hItem);
}

void CManProjectVw1::ReadTreeViewContent(CArchive& ar, CTreeCtrl& refCtrl)
{
        //SAMPLE: start out by deleting all the content from the control
        refCtrl.DeleteAllItems();

        //SAMPLE: figure out if the control was empty when it was stored
        UINT nCount;
        ar >> nCount;

        //SAMPLE: if so, just short circuit the zero-element case
        if (nCount == 0)
                return;

        //SAMPLE: otherwise, start sucking data in!
        m_nIndex = 0;
        m_hItems[m_nIndex] = TVI_ROOT;
        HTREEITEM hAfter = TVI_FIRST;

        //SAMPLE: while we're above the root, keep reading
        while (m_nIndex >= 0)
        {
                //SAMPLE: get a record type
                BYTE byteType;
                ar >> byteType;
               
                switch (byteType)
                {
                //SAMPLE: for a regular record, we'll just insert it into
                // the control. Note how we'll insert after the most recently
                // added item, and we'll insert as a child of the item on
                // our hItems stack.
                case recordRegular:
                        {
                                CString str;
                                ar >> str;
                                hAfter = refCtrl.InsertItem(str, m_hItems[m_nIndex], hAfter);
                        }
                        break;

                //SAMPLE: if we're going one deeper, we'll need to bump the stack
                // and reset the insertion flag.  Note that this sample can only
                // handle 99 levels of items in the control. You might want to fix
                // this code to use a dynamic array (eg, a CArray). Whatever you do,
                // the error recovery here needs to be a bit better!
                case recordPush:
                        ASSERT(m_nIndex < 99);
                        m_hItems[++m_nIndex] = hAfter;
                        hAfter = TVI_FIRST;
                        break;

                //SAMPLE: if we're going one less deep, we'll pop the stack
                case recordPop:
                        m_nIndex--;
                        break;

                default:
                        {
                        ASSERT(FALSE);
                        //TODO: pick a better exception type
                        AfxThrowMemoryException();
                        }
                }
        }
}

void CManProjectVw1::Serialize(CArchive& ar)
{
        if (ar.IsStoring())
        {
                WriteTreeViewContent(ar, GetTreeCtrl());
        }
        else
        {
                ReadTreeViewContent(ar, GetTreeCtrl());
        }
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-20 01:54:28 | 显示全部楼层
为了三十贴
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 00:52 , Processed in 0.364616 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表