找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1014|回复: 4

[已解决] 在树编辑时项不能改名的问题已解决, 代码如下. 下一个问题是: 在某一接线, 点击鼠标右

[复制链接]
发表于 2002-1-28 17:26:58 | 显示全部楼层 |阅读模式

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

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

×
在树编辑时项不能改名的问题已解决, 代码如下. 下一个问题是: 在某一接线, 点击鼠标右键, 为什么不能出现下拉菜单? 谢谢!


  1. #include "stdafx.h"
  2. #include "MyExam07Dlg.h"
  3. #include "exam07.h"


  4. #define ATTRIB_SIZE 80
  5. struct attribute
  6. {
  7.         char attrib[ATTRIB_SIZE];
  8.         attribute *next;
  9. }at;

  10. #define NAME_SIZE 80
  11. struct object
  12. {
  13.         char name[NAME_SIZE];
  14.         attribute *alist;
  15. };

  16. #define MAX 1024
  17. struct object k_base[MAX];
  18. struct attribute *p;


  19. int l_pos=-1;
  20. int r_pos=-1;
  21. void clear_kbase()
  22. {
  23.         int t;
  24.         struct attribute *p,*p2;
  25.         for (t=0;t<l_pos;t++) {
  26.                 p=k_base[t].alist;
  27.                 while (p) {
  28.                         p2=p->next;
  29.                         free(p);
  30.                         p=p2;
  31.                 }
  32.         }
  33. }


  34. #ifdef _DEBUG
  35. #define new DEBUG_NEW
  36. #undef THIS_FILE
  37. static char THIS_FILE[] = __FILE__;
  38. #endif

  39. MyExam07Dlg::MyExam07Dlg(CWnd* pParent /*=NULL*/)
  40.         : CAcUiDialog(MyExam07Dlg::IDD, pParent)
  41. {
  42.         //{{AFX_DATA_INIT(MyExam07Dlg)
  43.         //}}AFX_DATA_INIT
  44. }

  45. void MyExam07Dlg::DoDataExchange(CDataExchange* pDX)
  46. {
  47.         CAcUiDialog::DoDataExchange(pDX);
  48.         //{{AFX_DATA_MAP(MyExam07Dlg)
  49.         DDX_Control(pDX, ARXDBG_TR_SYS_REG, m_tv);
  50.         //}}AFX_DATA_MAP
  51. }

  52. BEGIN_MESSAGE_MAP(MyExam07Dlg, CAcUiDialog)
  53.         //{{AFX_MSG_MAP(MyExam07Dlg)
  54.         ON_NOTIFY(NM_RCLICK, ARXDBG_TR_SYS_REG, OnRclickTrSysReg)
  55.         ON_NOTIFY(TVN_BEGINLABELEDIT, ARXDBG_TR_SYS_REG, OnBeginlabeleditTrSysReg)
  56.         ON_NOTIFY(TVN_ENDLABELEDIT, ARXDBG_TR_SYS_REG, OnEndlabeleditTrSysReg)
  57.         ON_NOTIFY(NM_RETURN, ARXDBG_TR_SYS_REG, OnReturnTrSysReg)
  58.         //}}AFX_MSG_MAP
  59. END_MESSAGE_MAP()

  60. /////////////////////////////////////////////////////////////////////////////
  61. // MyExam07Dlg message handlers

  62. BOOL MyExam07Dlg::OnInitDialog()
  63. {
  64.         SetDialogName("exam07:MyExam07Dlg");
  65.         CAcUiDialog::OnInitDialog();
  66.         DLGCTLINFO dlgSizeInfo[]= {
  67.                 { IDC_STATIC_GROUP1, ELASTICX, 20 },
  68.                 { IDC_STATIC_GROUP1, ELASTICY, 100 },
  69.                 { IDC_LIST_BLOCKS, MOVEX, 20 },
  70.                 { IDC_LIST_BLOCKS, ELASTICY, 100 },
  71.                 { IDC_LIST_BLOCKS, ELASTICX, 80 },
  72.                 { IDC_COMBO_REGAPPS, MOVEY, 100 },
  73.                 { IDC_COMBO_REGAPPS, ELASTICX, 20 },
  74.         };

  75.         int t,x;
  76.         struct attribute *p,*oldp;
  77.         FILE *fp;
  78.         if ((fp=fopen("expert.dat","r"))==0) {
  79.                 acutPrintf("找不到文件");
  80.                 return TRUE;
  81.         }
  82.         acutPrintf("装入内存\n");
  83.         clear_kbase();
  84.         t=0;
  85.                 HTREEITEM noderoot,nodeson,nodeson1;
  86.         noderoot=m_tv.InsertItem("电气主接线");

  87.         for (;;++t) {
  88.                 if ((k_base[t].name[0]=getc(fp))==0) break;

  89.                 for (x=1;x<=sizeof(k_base[t].name);x++)
  90.                         k_base[t].name[x]=getc(fp);

  91.                 k_base[t].alist=(struct attribute *)malloc(sizeof(at));
  92.                 p=k_base[t].alist;
  93.                                 nodeson=m_tv.InsertItem (k_base[t].name, noderoot);
  94.                 if (!p) {
  95.                         return TRUE;
  96.                 }
  97.                 for (;;) {
  98.                         for (x=0;x<sizeof(p->attrib);x++) p->attrib[x]=getc(fp);
  99.                         nodeson1=m_tv.InsertItem (p->attrib, nodeson);

  100.                         if (!p->attrib[0]) {
  101.                                 oldp->next='\0';
  102.                                 break;
  103.                         }
  104.                         p->next=(struct attribute *)malloc(sizeof(at));
  105.                         if (!p->next) {
  106.                                 break;
  107.                         }
  108.                         oldp=p;
  109.                         p=p->next;
  110.                 }
  111.         }
  112.         fclose(fp);

  113.         l_pos=t-1;
  114.         //return t-1;       
  115.                 //DisplayRegApps();
  116.         return TRUE;

  117. }


  118. void MyExam07Dlg::OnOK()
  119. {
  120.         CAcUiDialog::OnOK();
  121. }


  122. void MyExam07Dlg::OnRclickTrSysReg(NMHDR* pNMHDR, LRESULT* pResult)
  123. {
  124.         // TODO: Add your control notification handler code here

  125.     CMenu menu;
  126.         //CAcModuleResourceOverride(ArxDbgApp::getApp()->dllInstance());

  127.     if (menu.LoadMenu(ARXDBG_MNU_OBJSET)) {
  128.         CMenu* pContextMenu = menu.GetSubMenu(0);
  129.         
  130.         if (pContextMenu) {
  131.                         CPoint point;
  132.             GetCursorPos(&point);
  133.             //ClientToScreen(&point);
  134.             pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this);
  135.             //return;
  136.         }
  137.     }

  138.         *pResult = 0;
  139. }

  140. void MyExam07Dlg::OnBeginlabeleditTrSysReg(NMHDR* pNMHDR, LRESULT* pResult)
  141. {
  142.         TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
  143.         // TODO: Add your control notification handler code here
  144.         acutPrintf("begin");


  145.         *pResult = 0;
  146. }


  147. void MyExam07Dlg::OnEndlabeleditTrSysReg(NMHDR* pNMHDR, LRESULT* pResult)
  148. {
  149.         TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
  150.     *pResult = 0;

  151.     if (pTVDispInfo->item.mask & TVIF_TEXT) {
  152.         HTREEITEM item = m_tv.GetSelectedItem();
  153.         if (item == NULL)
  154.             return;

  155.         CString oldName = m_tv.GetItemText(item);
  156.         CString newName = pTVDispInfo->item.pszText;
  157.         //acutPrintf("%s",oldName);
  158.         //acutPrintf("%s",newName);

  159.             // if it hasn't changed, don't do anything
  160.         if (newName.CompareNoCase(oldName) == 0)
  161.             return;
  162.   
  163.        m_tv.SetItemText(item, newName);

  164.            /*
  165.         if (renameCurrentItem(oldName, newName)) {
  166.                 // set new item name and re-sort entries in this node of tree
  167.             m_tv.SetItem(&(pTVDispInfo->item));
  168.             m_tv.SortChildren(m_tv.GetParentItem(item));
  169.         }
  170.        */
  171.     }   
  172. }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-1-29 02:16:46 | 显示全部楼层
从程序那段击右键代码本身应该是没错,不知你的LoadMenu成功没有。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2002-1-31 10:22:48 | 显示全部楼层
Can't the pop-up menu’s identifier be used in this function--GetSubMenu( int nPos ) ?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-5 03:05 , Processed in 0.339285 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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