找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 9095|回复: 141

[每日一码] 一些ARX源码完整工程(带注释)

 火.. [复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-10-4 20:06:39 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 LoveArx 于 2016-10-4 20:08 编辑

17个完整工程的ARX源码


  1. // MyExam07Dlg.cpp : implementation file
  2. //

  3. #include "stdafx.h"
  4. #include "MyExam07Dlg.h"
  5. #include "exam07.h"

  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif

  11. /////////////////////////////////////////////////////////////////////////////
  12. // MyExam07Dlg dialog


  13. MyExam07Dlg::MyExam07Dlg(CWnd* pParent /*=NULL*/)
  14.   : CAcUiDialog(MyExam07Dlg::IDD, pParent)
  15. {
  16.   //{{AFX_DATA_INIT(MyExam07Dlg)
  17.     // NOTE: the ClassWizard will add member initialization here
  18.   //}}AFX_DATA_INIT
  19. }


  20. void MyExam07Dlg::DoDataExchange(CDataExchange* pDX)
  21. {
  22.   CAcUiDialog::DoDataExchange(pDX);
  23.   //{{AFX_DATA_MAP(MyExam07Dlg)
  24.   DDX_Control(pDX, IDC_COMBO_REGAPPS, m_ctrlRegAppComboBox);
  25.   DDX_Control(pDX, IDC_LIST_BLOCKS, m_ctrlBlockListBox);
  26.   DDX_Control(pDX, IDC_EDIT_ZPT, m_ctrlZPtEdit);
  27.   DDX_Control(pDX, IDC_EDIT_YPT, m_ctrlYPtEdit);
  28.   DDX_Control(pDX, IDC_EDIT_XPT, m_ctrlXPtEdit);
  29.   DDX_Control(pDX, IDC_EDIT_ANGLE, m_ctrlAngleEdit);
  30.   DDX_Control(pDX, IDC_BUTTON_POINT, m_ctrlPickButton);
  31.   DDX_Control(pDX, IDC_BUTTON_ANGLE, m_ctrlAngleButton);
  32.   //}}AFX_DATA_MAP
  33. }


  34. BEGIN_MESSAGE_MAP(MyExam07Dlg, CAcUiDialog)
  35.   //{{AFX_MSG_MAP(MyExam07Dlg)
  36.   ON_BN_CLICKED(IDC_BUTTON_ANGLE, OnButtonAngle)
  37.   ON_BN_CLICKED(IDC_BUTTON_POINT, OnButtonPoint)
  38.   ON_CBN_KILLFOCUS(IDC_COMBO_REGAPPS, OnKillfocusComboRegapps)
  39.   ON_EN_KILLFOCUS(IDC_EDIT_ANGLE, OnKillfocusEditAngle)
  40.   ON_EN_KILLFOCUS(IDC_EDIT_XPT, OnKillfocusEditXpt)
  41.   ON_EN_KILLFOCUS(IDC_EDIT_YPT, OnKillfocusEditYpt)
  42.   ON_EN_KILLFOCUS(IDC_EDIT_ZPT, OnKillfocusEditZpt)
  43.   //}}AFX_MSG_MAP
  44. END_MESSAGE_MAP()

  45. /////////////////////////////////////////////////////////////////////////////
  46. // MyExam07Dlg message handlers

  47. BOOL MyExam07Dlg::OnInitDialog()
  48. {

  49.   SetDialogName("exam07:MyExam07Dlg");
  50.   CAcUiDialog::OnInitDialog();
  51.   DLGCTLINFO dlgSizeInfo[]= {
  52.     { IDC_STATIC_GROUP1, ELASTICX, 20 },
  53.     { IDC_STATIC_GROUP1, ELASTICY, 100 },
  54.     { IDC_EDIT_XPT,ELASTICX, 20 },
  55.     { IDC_EDIT_YPT,ELASTICX, 20 },
  56.     { IDC_EDIT_ZPT,ELASTICX, 20 },
  57.     { IDC_EDIT_ANGLE, ELASTICX, 20 },
  58.     { IDC_STATIC_GROUP2, MOVEX, 20 },
  59.     { IDC_STATIC_GROUP2, ELASTICY, 100 },
  60.     { IDC_STATIC_GROUP2, ELASTICX, 80 },
  61.     { IDC_LIST_BLOCKS, MOVEX, 20 },
  62.     { IDC_LIST_BLOCKS, ELASTICY, 100 },
  63.     { IDC_STATIC_TEXT2,MOVEX, 20 },
  64.     { IDC_STATIC_TEXT2,MOVEY, 100 },
  65.     { IDC_LIST_BLOCKS, ELASTICX, 80 },
  66.     { IDC_STATIC_TEXT2,ELASTICX, 80 },
  67.     { IDC_STATIC_GROUP3, MOVEY, 100 },
  68.     { IDC_STATIC_GROUP3, ELASTICX, 20 },
  69.     { IDC_COMBO_REGAPPS, MOVEY, 100 },
  70.     { IDC_COMBO_REGAPPS, ELASTICX, 20 },
  71.     { IDC_STATIC_TEXT3,MOVEY, 100 },
  72.     { IDC_STATIC_TEXT3,ELASTICX, 20 },
  73.     { IDOK,MOVEX, 100 },
  74.     { IDCANCEL, MOVEX, 100 },
  75.   };

  76.   const DWORD numberofentries =
  77.     sizeof dlgSizeInfo / sizeof DLGCTLINFO;
  78.   SetControlProperty(dlgSizeInfo, numberofentries);

  79.   m_ctrlXPtEdit.SetRange(-50.0, 50.0);
  80.   m_ctrlYPtEdit.SetRange(-50.0, 50.0);
  81.   m_ctrlZPtEdit.SetRange(-50.0, 50.0);
  82.   
  83.   m_ctrlAngleEdit.SetRange(0.0, 90.0 /*(PI/2.0)*/);
  84.   
  85.   SetWindowText("AcUiDialog Sample");
  86.   
  87.   m_ctrlPickButton.AutoLoad();
  88.   m_ctrlAngleButton.AutoLoad();
  89.   
  90.   if (!GetDialogData("ANGLE", m_strAngle))
  91.     m_strAngle = "0.0";
  92.   if (!GetDialogData("POINTX", m_strXPt))
  93.     m_strXPt = "0.0";
  94.   if (!GetDialogData("POINTY", m_strYPt))
  95.     m_strYPt = "0.0";
  96.   if (!GetDialogData("POINTZ", m_strZPt))
  97.     m_strZPt = "0.0";
  98.   DisplayPoint();
  99.   DisplayAngle();
  100.   DisplayBlocks();
  101.   DisplayRegApps();
  102.   return TRUE;
  103. }

  104. void MyExam07Dlg::DisplayPoint()
  105. {
  106.   m_ctrlXPtEdit.SetWindowText(m_strXPt);
  107.   m_ctrlXPtEdit.Convert();
  108.   m_ctrlYPtEdit.SetWindowText(m_strYPt);
  109.   m_ctrlYPtEdit.Convert();
  110.   m_ctrlZPtEdit.SetWindowText(m_strZPt);
  111.   m_ctrlZPtEdit.Convert();
  112. }

  113. bool MyExam07Dlg::ValidatePoint()
  114. {
  115.   if (!m_ctrlXPtEdit.Validate())
  116.     return false;
  117.   if (!m_ctrlYPtEdit.Validate())
  118.     return false;
  119.   if (!m_ctrlZPtEdit.Validate())
  120.     return false;
  121.   return true;
  122. }

  123. void MyExam07Dlg::DisplayAngle()
  124. {
  125.   m_ctrlAngleEdit.SetWindowText(m_strAngle);
  126.   m_ctrlAngleEdit.Convert();
  127. }

  128. bool MyExam07Dlg::ValidateAngle()
  129. {
  130.   if (!m_ctrlAngleEdit.Validate())
  131.     return false;
  132.   return true;
  133. }

  134. void MyExam07Dlg::DisplayBlocks()
  135. {
  136.   AcDbBlockTable *pBlockTable;
  137.   acdbHostApplicationServices()->workingDatabase()
  138.     ->getSymbolTable(pBlockTable, AcDb::kForRead);

  139.   char *pName;
  140.   AcDbBlockTableIterator *pBTItr;
  141.   if (pBlockTable->newIterator(pBTItr) == Acad::eOk)
  142.   {
  143.     while (!pBTItr->done())
  144.     {
  145.       AcDbBlockTableRecord *pRecord;
  146.       if (pBTItr->getRecord(pRecord, AcDb::kForRead)
  147.         == Acad::eOk)
  148.       {
  149.         pRecord->getName(pName);
  150.         m_ctrlBlockListBox.InsertString(-1, pName);
  151.         pRecord->close();
  152.       }
  153.       pBTItr->step();
  154.     }
  155.   }
  156.   pBlockTable->close();
  157. }

  158. void MyExam07Dlg::DisplayRegApps()
  159. {
  160.   AcDbRegAppTable *pRegAppTable;
  161.   acdbHostApplicationServices()->workingDatabase()
  162.     ->getSymbolTable(pRegAppTable, AcDb::kForRead);

  163.   char *pName;
  164.   AcDbRegAppTableIterator *pItr;
  165.   if (pRegAppTable->newIterator(pItr) == Acad::eOk)
  166.   {
  167.     while (!pItr->done())
  168.     {
  169.       AcDbRegAppTableRecord *pRecord;
  170.       if (pItr->getRecord(pRecord, AcDb::kForRead)
  171.         == Acad::eOk)
  172.       {
  173.         pRecord->getName(pName);
  174.         m_ctrlRegAppComboBox.InsertString(-1, pName);
  175.         pRecord->close();
  176.       }
  177.       pItr->step();
  178.     }
  179.   }
  180.   pRegAppTable->close();
  181. }

  182. void MyExam07Dlg::OnButtonAngle()
  183. {
  184.   BeginEditorCommand();

  185.   ads_point pt;
  186.   acdbDisToF(m_strXPt, -1, &pt[X]);
  187.   acdbDisToF(m_strYPt, -1, &pt[Y]);
  188.   acdbDisToF(m_strZPt, -1, &pt[Z]);
  189.   double angle;
  190.   
  191.   if (acedGetAngle(pt, "\nPick an angle: ", &angle) == RTNORM) {
  192.   
  193.     CompleteEditorCommand();
  194.    
  195.     m_strAngle.Format("%g", angle*(180.0/PI));
  196.     DisplayAngle();
  197.   }
  198.   else
  199.   {
  200.     CancelEditorCommand();
  201.   }
  202. }

  203. void MyExam07Dlg::OnButtonPoint()
  204. {

  205.   BeginEditorCommand();
  206.   ads_point pt;
  207.   
  208.   if (acedGetPoint(NULL, "\nPick a point: ", pt) == RTNORM) {
  209.     CompleteEditorCommand();
  210.     m_strXPt.Format("%g", pt[X]);
  211.     m_strYPt.Format("%g", pt[Y]);
  212.     m_strZPt.Format("%g", pt[Z]);
  213.     DisplayPoint();
  214.   }
  215.   else
  216.   {
  217.     CancelEditorCommand();
  218.   }
  219. }

  220. void MyExam07Dlg::OnKillfocusEditAngle()
  221. {
  222.   m_ctrlAngleEdit.Convert();
  223.   m_ctrlAngleEdit.GetWindowText(m_strAngle);
  224. }

  225. void MyExam07Dlg::OnKillfocusEditXpt()
  226. {
  227.   m_ctrlXPtEdit.Convert();
  228.   m_ctrlXPtEdit.GetWindowText(m_strXPt);
  229. }

  230. void MyExam07Dlg::OnKillfocusEditYpt()
  231. {
  232.   m_ctrlYPtEdit.Convert();
  233.   m_ctrlYPtEdit.GetWindowText(m_strYPt);
  234. }

  235. void MyExam07Dlg::OnKillfocusEditZpt()
  236. {
  237.   m_ctrlZPtEdit.Convert();
  238.   m_ctrlZPtEdit.GetWindowText(m_strZPt);
  239. }

  240. void MyExam07Dlg::OnKillfocusComboRegapps()
  241. {
  242.   CString strFromEdit;
  243.   m_ctrlRegAppComboBox.GetWindowText(strFromEdit);
  244.   if (m_ctrlRegAppComboBox.FindString(-1, strFromEdit) == CB_ERR)
  245.     if (acdbRegApp(strFromEdit) == RTNORM)
  246.       m_ctrlRegAppComboBox.AddString(strFromEdit);
  247. }

  248. void MyExam07Dlg::OnOK()
  249. {
  250.   if (!ValidatePoint())
  251.   {
  252.     AfxMessageBox("Sorry, Point out of desired range.");
  253.     m_ctrlXPtEdit.SetFocus();
  254.     return;
  255.   }
  256.   if (!ValidateAngle())
  257.   {
  258.     AfxMessageBox("Sorry, Angle out of desired range.");
  259.     m_ctrlAngleEdit.SetFocus();
  260.     return;
  261.   }

  262.   SetDialogData("ANGLE", m_strAngle);
  263.   SetDialogData("POINTX", m_strXPt);
  264.   SetDialogData("POINTY", m_strYPt);
  265.   SetDialogData("POINTZ", m_strZPt);
  266.   CAcUiDialog::OnOK();
  267. }

[it618postdisplay>0]
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:带注释的ARX源码合辑.rar 
下载次数:186  文件大小:305.72 KB  售价:10D豆 [记录]
下载权限: 不限 以上  [免费赚D豆]

[/it618postdisplay]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 828个

财富等级: 财运亨通

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

使用道具 举报

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

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 3532个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 2409个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 2963个

财富等级: 家财万贯

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

使用道具 举报

发表于 2016-10-16 11:23:23 | 显示全部楼层
正准备学arx,可以少走很多弯路了,谢谢楼主!

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

使用道具 举报

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 35个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 75个

财富等级: 招财进宝

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 19:29 , Processed in 0.205825 second(s), 67 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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