VC6.0中创建Workspaces和文件过滤器

2023-10-30 13:18

本文主要是介绍VC6.0中创建Workspaces和文件过滤器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       VC6.0是1989年发布的,而VS2002是2002年发布的,VC6.0很经典,而VS2002则是C#的第一个IDE版本。

下面讨论VC6.0创建Workspaces和文件过滤器

一、VC6.0创建Workspaces

      1) 打开VC6.0--》点击工具栏上的“File”---》New--》Workspaces--> 工作区间命名为:Chapter04


图(1)创建工作区间Chapter04

      2)右击“Chapter04” ---》Add New Project to Workspaces ---》 选中“ObjectARX 2000/2000I/2002 AppWizard”-->将工程命名为:CreateLine2

          ---》 OK --》勾选“ Use MFC” --》Finish

       3)打开Chapter04所在的文件夹,在与Chapter04同级的目录中新建一个MyCommon2文件,在其中再创建Document、Entity两个文件夹,

这些文件夹的位置关系如图(3)所示:


  图(3)MyCommon2和Chapter04的位置关系

    4)在VC6.0中添加类

         4.1)选择【Insert/New Class】菜单项,系统弹出如图(4.1)所示的对话框。在该对话框中输入类的名称CLineUtil,如果直接单击【Ok】按钮完成类的创建,这个类的头文件和源文件就会保持在工程的目录里,这里我们改一下,我们把这个文件放置到上面创建的MyCommon2文件夹的Entity文件夹里。

          单击【Change】按钮,系统弹出如图(4.2)所示的对话框。

    

图(4.1)输入类的名称                    

图(4.2)选择文件保持的位置

           

图(4.3)   选中Entity文件夹            

 

图(4.4)保存在..\MyCommon2\Entity里

        单击【Browse】按钮,系统弹出如图(4.3)所示的对话框。在该对话框中修改文件的保存位置,保存位置为:..\MyCommon2\Entity里(即上一步所创建的Entity文件夹里),将CLineUtil类 的 .h和 .cpp文件都保存在Entity文件夹里。

        单击【OK】按钮后,回到FileView面板,我们可以看到,头文件和源文件被放置在默认的过滤器Headers Files和Sources Files中,如图(4.5)所示。

        

 图(4.5)头文件和源文件的默认位置           

  

  图(4.6)拖动文件后,头文件和源文件的最终位置 


       实际上,VC++中的文件过滤器(或者称为筛选器) 与.Net中有很大的区别,它不能直接与存储的文件夹直接对应,而是可以灵活地指定任意位置的文件。

在这里,我们需要手工创建出与MyCommon2、Entity和Document文件夹对应的过滤器。

      4.2)创建各个文件夹对应的过滤器,调整CLineUtil类的头文件和源文件在FileView中的正确位置。

       在FileView面板中,右击“CreateLine2”--》New Folder--》命名为:MyCommon2

      同理,右击MyCommon2 ——》New Folder ,在MyCommon2下添加名称为Entity和Document的过滤器。

       FileView面板中,选中LineUtil.h和LineUtil.cpp两个文件,将其拖动到Entity过滤器对应的节点,就得到如图(4.6)所示的结果。

       4.3)采用同样的方法,在Entity文件中添加CEntityUtil类,在Document文件夹添加CDwgDatabaseUtil类。

       5)在CDwgDatabaseUtil类中添加一个静态成员函数PostToModelSpace,用于将一个实体添加到当前图形数据库模型空间。

  这个函数在CDwgDatabaseUtil.h的声明为:  

//将实体添加到模型空间static AcDbObjectId PostToModelSpace(AcDbEntity *pEnt, AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase());

  在CDwgDatabaseUtil.cpp中的实现为:

AcDbObjectId CDwgDatabaseUtil::PostToModelSpace( AcDbEntity *pEnt, AcDbDatabase *pDb )
{// 检查输入参数的有效性assert (pEnt);		// 等效于assert (pEnt != NULL);// 获得当前图形数据库的块表AcDbBlockTable *pBlkTbl = NULL;pDb->getBlockTable(pBlkTbl, AcDb::kForRead);// 获得模型空间对应的块表记录AcDbBlockTableRecord *pBlkTblRcd = NULL;pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, AcDb::kForWrite);pBlkTbl->close();// 将实体添加到模型空间的块表记录AcDbObjectId entId;Acad::ErrorStatus es = pBlkTblRcd->appendAcDbEntity(entId, pEnt);if (es != Acad::eOk){pBlkTblRcd->close();delete pEnt;	// 添加失败时,要deletepEnt = NULL;return AcDbObjectId::kNull;}// 关闭模型空间块表记录和实体pBlkTblRcd->close();pEnt->close();return entId;
}

     6)在CLineUtil类中添加一个Add函数,它的实现非常简洁:

AcDbObjectId CLineUtil::Add( const AcGePoint3d &startPoint, const AcGePoint3d &endPoint, AcDbDatabase *pDb )
{// 创建直线实体AcDbLine *pLine = new AcDbLine(startPoint, endPoint);// 将直线实体添加到模型空间return CDwgDatabaseUtil::PostToModelSpace(pLine, pDb);
}

        7)在CEntityUtil类中添加SetColor函数,修改实体的颜色,其实现代码如下:

void CEntityUtil::SetColor( AcDbObjectId entId, int colorIndex )
{// 检测参数的有效性assert (colorIndex >= 0 && colorIndex <= 256);AcDbEntity *pEnt = NULL;if (acdbOpenObject(pEnt, entId, AcDb::kForWrite) == Acad::eOk){pEnt->setColorIndex(colorIndex);pEnt->close();}
}

         8)利用ObjectARX向导注册一个新命令ChangColor2,实现的功能仍然是添加一条直线,修改它的颜色为“红色”,如下:

// This is command 'CHANGCOLOR2'
void WhCHAP2CHANGCOLOR2()
{// TODO: Implement the command//创建直线AcGePoint3d startPoint(0,0,0);AcGePoint3d endPoint(100,100,0);AcDbObjectId lineId = CLineUtil::Add(startPoint,endPoint);//修改颜色CEntityUtil::SetColor(lineId,1);
}
      效果如下:

    按F7编译该工程--》F5启动调试和AutoCAD2002--》在Cad2002的命令行窗口输入:applode --》加载相应的.arx文件 ——》输入changcolor2——》回车,结果如下:


                                                                                      图(6)输入appload加载.arx,再执行changcolor2命令

    

这篇关于VC6.0中创建Workspaces和文件过滤器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308171

相关文章

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Redis中使用布隆过滤器解决缓存穿透问题

一、缓存穿透(失效)问题 缓存穿透是指查询一个一定不存在的数据,由于缓存中没有命中,会去数据库中查询,而数据库中也没有该数据,并且每次查询都不会命中缓存,从而每次请求都直接打到了数据库上,这会给数据库带来巨大压力。 二、布隆过滤器原理 布隆过滤器(Bloom Filter)是一种空间效率很高的随机数据结构,它利用多个不同的哈希函数将一个元素映射到一个位数组中的多个位置,并将这些位置的值置

PHP7扩展开发之类的创建

本篇文章主要将如何在扩展中创建一个对象。创建的对象的过程,其实和一个小孩出生,成长的过程有些类似。 第一步,办准生证 生孩子第一步,先办准生证。声明我要生孩子了。对象创建的时候,如何办准生证呢?只要定义一个zend_class_entry变量即可。代码如下: zend_class_entry ce; zend_class_entry 是啥?可以认为它使一个原型,定义了一些对象应该有哪些东西

布隆过滤器的详解与应用

一、什么是Bloom Filter Bloom Filter是一种空间效率很高的随机数据结构,它的原理是,当一个元素被加入集合时,通过K个Hash函数将这个元素映射成一个位阵列(Bit array)中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检索元素一定不在;如果都是1,则被检索元素很可能在。这就是布隆过滤器的基本思