赞
踩
使用迭代器之后,千万要记得delete掉,不然就可能会无法删除创建出来的实体,甚至崩溃。
很多bug其实都是因为没有close掉或删除掉相关的资源导致的。切记!要确保代码的每一条路径都释放掉了资源!有open就有close. 有new也要有对应的close或者delete。
涉及几何运算的,一般用AcGe类。涉及数据库和显示的,一般用AcDb类
判断多段线是否封闭非常简单,调用成员函数isClose()即可,返回true代表闭合,返回false表示不闭合。
int acedGetVar(
const ACHAR * sym,
struct resbuf * result
);
提取AutoCAD系统变量的值,放在结果缓冲result中,这个结果缓冲必须要事先分配好内存,不能仅仅是一个指针。例子:
acedGetVar(L"EXTMAX",&rb1);//获取当前图形右上角点坐标
acedGetVar(L"EXTMIN",&rb2);//获取当前图形左下角点坐标
int acdbEntLast(
ads_name result
);成功返回RTNORM,失败返回RTERROR
该函数的作用是最近创建出来的实体的ads_name
注意:boundary命令和-boundary命令是不一样的,前面一个是界面操作,后面的才是命令行操作,用代码调用AutoCAD命令时要用后面那种写法!注意:所有的字面字符串前面必须加L
要记得更改按钮的owner draw属性为true,这样才能加载到AutoCAD的位图
9.不调updatedata也能自动更新数据
10.书中的描述是错的,CancelEditorCommand会把对话框整个关闭掉。如果不想关闭,可以用ShowWindow(SW_SHOW)重新显示窗口。
11. EndDialog用于关闭模态对话框,closewindow不能用。点击esc键后,会触发oncancel函数,为了按下esc不退出,要重写这个函数,把调用父类的取消函数注释掉。
非模态对话框用destroywindow函数来销毁对话框,销毁之后会自动调用postNcDestroy函数,在该函数中释放内存。
12.非模态对话框必须在堆上分配内存
颜色索引256代表随层,0代表随块
CString的Find函数用于在字符串中查找子串或字符,如果没找到则返回-1。
Compare函数用于比较字符串的大小,如果相等则返回0
不可以在未关闭资源的情况下,再次打开资源。
MFC列表控件插入表头用InsertColum,从0开始。插入行的第一项(item)用InsertItem,从0开始。插入行后续列的内容(subitem)用setItemText,从1开始。列表控件要记得设置属性为report报表模式(View属性)。
CTRL+D可改变控件的tab键切换顺序,鼠标依次点击控件即可根据鼠标点击的顺序确定控件的tab顺序
要建立与对话框关联的类时,在类向导中要选择对应的对话框的ID。
AutoCAD的曲线实体都可以使用isclosed()成员函数判断是否闭合。有的时候曲线看起来是闭合的,但实际上并不闭合,可以根据其特性对话框的闭合属性确定是否闭合。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。