求大师给补充几句,我不会C++编程,感谢了!
int usrDrawLine(int& step,int& flag){
AFX_MANAGE_STATE(AfxGetStaticModuleState())
static EB_NODE yy; //定义圆
static EB_POINT pp,yx,yd,dd; //定义点
int ret1=0,ret2=0,ret3=0; //定义内存
double r;
////////////////////////////////////////////////////////////////////定义数组
ebRegisterPopMenu(); // 登记工具点菜单
switch(step)
{
case 0: // 第一步
ebPrompt("请指定原点:");
break;
case 1: // 第二步
ret1=ebGetPoint(&yd); // 得到点的信息
ebPrompt("请拾取圆或点:");
break;
case 2: // 第三步 往返取值,存入数组,最后写入TXT文件
ret2=ebGetPoint(&pp);//拾取点
if(ret2==RT_FINISH||ret2==RT_USERBRK) // 如果点鼠标右键或按键盘的ESC键,则结束绘图,并将结果导入记事本
{
//
/////////////////////////////////////////////////////将数组内容按模式写入记事本"C:\Documents and Settings\Administrator\My Documents\c1.txt"
//
yy=NULL;
ebFreeNode(yy); // 释放所占用内存
ebEndCommand(); // 结束命令
ebClearPrompt(); // 清除提示区内的提示
ebRedraw();
return RT_ISOVER;
}
else
{
yy=ebGetNode(pp,CIRCLE); //拾取圆
if(yy==NULL) //如果拾取的不是圆(实际是点)
{
ebTransPtToLc(yd,0,pp,&dd); //转为用户坐标系坐标
//
// 已经得到了点的坐标(dd.x,dd.y) 半径 r=0
///////////////////////////////////////////////将得到的点的坐标与半径(值为0)写入数组
//
ebClearPrompt(); // 清除提示区内的提示
step=1; //返回第三步继续拾取
ebPrompt("请拾取圆或点:");
break;
}
else
{
ret3=ebGetCircleData(yy,&yx,&r); // 得到圆的信息
//
//已经得到了圆心的坐标(yx.x,yx.y) 半径 r
///////////////////////////////////////////////将得到的圆的的坐标与半径写入数组
//
yy=NULL;
ebFreeNode(yy); // 释放所占用内存
ebClearPrompt(); // 清除提示区内的提示
step=1;//返回第三步继续拾取
ebPrompt("请拾取圆或点:");
break;
}
}
}
return RT_NORMAL;
}
[此贴子已经被作者于2020-5-18 19:09编辑过]