天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 142|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    半小时前
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    115

    主题

    11

    回帖

    1393

    积分

    管理员

    积分
    1393
    QQ
    发表于 2024-3-14 20:57:24 | 显示全部楼层 |阅读模式
    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. }
    复制代码

     

     

     

     

    [每日一码] 一些ARX源码完整工程(带注释)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-5 06:05 , Processed in 0.151564 second(s), 29 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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