找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4713|回复: 18

[ARX程序]:大虾帮我看看这段程序:(关于CGridCtrl的使用)

[复制链接]
发表于 2004-6-19 10:23:03 | 显示全部楼层 |阅读模式

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

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

×
我想使用Chris Maunder 的一个控件CGridCtrl,我是这样做的:
1.首先添加一个对话框资源,然后在对话框资源里插入一个custom conctrol(ID为IDC_MYGRID),再用Add_In里的“ObjectARX MFC Support”工具从CAcuiDialog派生出一个对话框类(CWdGridDlg, 以上述对话框资源为模板);
2.在上述对话框类里加入成员CGridCtrl m_Grid;
3.在CWdGridDlg::DoDataExchange (CDataExchange *pDX)中加入代码: DDX_Control(pDX, IDC_MYGRID, m_Grid);
4.在BOOL CWdGridDlg::OnInitDialog()中加入:
try
{
        m_Grid.SetRowCount(10);
        m_Grid.SetColumnCount(9);
        m_Grid.SetFixedRowCount(1);
        m_Grid.SetFixedColumnCount(1);
}
catch (CMemoryException* e)
{
        e->ReportError();
        e->Delete();
        return FALSE;
}

// fill rows/cols with text
for (int row = 0; row < 10; row++)
for (int col = 0; col < 9; col++)
{
        GV_ITEM Item;
        Item.mask = GVIF_TEXT|GVIF_FORMAT;
        Item.row = row;
        Item.col = col;
        if (row < 1)
        {
                Item.nFormat = DT_LEFT|DT_WORDBREAK;
                if (col == 0 || col == 1)
                {
                        Item.szText.Format(_T("Column %d NOEDIT"),col);
                }
                else if (col == 2 || col == 3)
                {
                        Item.szText.Format(_T("Column %d EditBOX"),col);
                }
                else {
                        Item.szText.Format(_T("Column %d EDITBOX"),col);
                }
               
        }
        else if (col < 1)
        {
                Item.nFormat = DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
                Item.szText.Format(_T("Row %d"),row);
        }
        m_Grid.SetItem(&Item);
       
       
}
5.添加命令ACMD
void wdACmd()
{
CAcModuleResourceOverride resOverride;
CWdGridDlgdlg(CWnd::FromHandle(adsw_acadMainWnd()));
dlg.DoModal();
}

编译链接都没问题,但加载这个程序后执行命令ACMD,对话框不能显示,不知是何原因。
我在MFC里面这样使用一点问题都没有;也曾试过在OnInitDialog()中调用m_Grid.Create(...),一样不能显示对话框;我还发现只要一加入custom conctrol对话框就不能显示,去掉之后就没问题。
我觉得应该是资源方面的原因,不知如何解决?抑或还是其他方面的原因?
大虾救命啊。谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-19 12:31:26 | 显示全部楼层
我也遇到这样的问题,在EXE中可以声明一个成员,在ARX只能用指针,然后new一个,不知为什么!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-19 14:47:30 | 显示全部楼层
用Custom Control的时候,在编辑资源的时候需要在class里指明这个控件的类型,否则就不能显示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-6-19 15:34:53 | 显示全部楼层
谢谢大家!
我照大家说的做了,还是不行啊。
恕我愚钝,我把成员改为指针,然后把对话框的OnInitDialog()改为
        CRect rc(0,0,100,100);
        m_Grid = new CGridCtrl(10, 10, 1, 1);
        m_Grid->Create(rc, this, IDC_MYGRID);
        m_Grid->ShowWindow(SW_SHOW);
还是没有解决问题。
tbsa先生所说“控件的类型”我填入CGridCtrl 和MFCGridCtrl都不行啊。
大虾们能不能说得详细些?(或者使用其他的方法?)万分感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-6-20 11:16:15 | 显示全部楼层
哦,终于出来了。
谢谢你们,特别是binbin先生!
是不是在你加注释的地方加上:
        CRect rect, rcW, rectThis;       
        GetWindowRect(&rectThis);
        GetDlgItem(IDC_STATIC1)->GetWindowRect(&rcW);
        GetDlgItem(IDC_STATIC1)->GetClientRect(&rect);
        rect +=(rcW.TopLeft() - rectThis.TopLeft());
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-20 11:47:03 | 显示全部楼层
没那么复杂,只有一句话,好像是 ...Map...(),不记得了,反正有个map
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-6-24 13:20:05 | 显示全部楼层
显示对话框前进行资源重载便可,只是一个arx函数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-3 14:59:12 | 显示全部楼层
可能是你的资源ID和AutoCAD的资源ID 发生了冲突,只要加入#include "AcExtensionModule.h",然后再对话框弹出前加上CAcModuleResourceOverride resOverride;就可以解决了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-3 15:10:30 | 显示全部楼层
这个问题我以前碰到过,你用的MFCGrid很可能是旧版本,现在新的2.25版把这个问题已经解决了。他实际上就是一个资源问题,也是MFC扩展DLL的典型问题:在CGridCtrl中注册此类窗口的函数中,把最前面的AfxGetInstanceHandle改为AfxGetResourceHandle,一切问题就OK了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 12:45 , Processed in 0.229769 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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