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

相关文章

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in