炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3560|回复: 3

怎么批量保存控件配置

[复制链接]

该用户从未签到

发表于 2016-12-11 19:55:54 | 显示全部楼层 |阅读模式
10炫彩币
怎么批量保存控件配置




我有150个控件, 我想保存他们所有的配置, 怎么枚举到他们的值?

最佳答案

查看完整内容

编程助手 VC例子 149 详细的写了怎么枚举子控件,欢迎参考

该用户从未签到

发表于 2016-12-11 19:55:55 | 显示全部楼层
编程助手 VC例子  149 详细的写了怎么枚举子控件,欢迎参考
  1. #include "Common.h"

  2. class CMyWindowTree
  3. {
  4. public:
  5.     HWINDOW m_hWindow;
  6.     HELE    m_hTree;
  7.         HXCGUI hAdapter;
  8.     CMyWindowTree()
  9.     {
  10.         Init();
  11.     }

  12.         VOID XCTypeFormat(wchar_t*pbuf , XC_OBJECT_TYPE nType)
  13.         {

  14.                 switch (nType)
  15.                 {
  16.                 case XC_ELE:
  17.                         wsprintfW(pbuf,L"基础元素 - %d",nType);
  18.                         break;
  19.                 case XC_BUTTON:
  20.                         wsprintfW(pbuf,L"按钮 - %d",nType);
  21.                         break;
  22.                 case XC_RICHEDIT:
  23.                         wsprintfW(pbuf,L"富文本编辑框 - %d",nType);
  24.                         break;
  25.                 case XC_COMBOBOX:
  26.                         wsprintfW(pbuf,L"下拉组合框 - %d",nType);
  27.                         break;
  28.                 case XC_SCROLLBAR:
  29.                         wsprintfW(pbuf,L"滚动条 - %d",nType);
  30.                         break;
  31.                 case XC_SCROLLVIEW:
  32.                         wsprintfW(pbuf,L"滚动视图 - %d",nType);
  33.                         break;
  34.                 case XC_LIST:
  35.                         wsprintfW(pbuf,L"列表 - %d",nType);
  36.                         break;
  37.                 case XC_LISTBOX:
  38.                         wsprintfW(pbuf,L"列表框 - %d",nType);
  39.                         break;
  40.                 case XC_LISTVIEW:
  41.                         wsprintfW(pbuf,L"列表视图 - %d",nType);
  42.                         break;
  43.                 case XC_TREE:
  44.                         wsprintfW(pbuf,L"树元素 - %d",nType);
  45.                         break;
  46.                 case XC_MENUBAR:
  47.                         wsprintfW(pbuf,L"菜单条 - %d",nType);
  48.                         break;
  49.                 case XC_SLIDERBAR:
  50.                         wsprintfW(pbuf,L"滑块条 - %d",nType);
  51.                         break;
  52.                 case XC_PROGRESSBAR:
  53.                         wsprintfW(pbuf,L"进度条 - %d",nType);
  54.                         break;
  55.                 case XC_TOOLBAR:
  56.                         wsprintfW(pbuf,L"工具条 - %d",nType);
  57.                         break;
  58.                 case XC_MONTHCAL:
  59.                         wsprintfW(pbuf,L"月历框 - %d",nType);
  60.                         break;
  61.                 case XC_DATETIME:
  62.                         wsprintfW(pbuf,L"日期框 - %d",nType);
  63.                         break;
  64.                 case XC_PROPERTYGRID:
  65.                         wsprintfW(pbuf,L"属性网格 - %d",nType);
  66.                         break;
  67.                 case XC_RICHEDIT_COLOR:
  68.                         wsprintfW(pbuf,L"编辑框-颜色 - %d",nType);
  69.                         break;
  70.                 case XC_RICHEDIT_SET:
  71.                         wsprintfW(pbuf,L"富文本-Set - %d",nType);
  72.                         break;
  73.                 case XC_TABBAR:
  74.                         wsprintfW(pbuf,L"分页条 - %d",nType);
  75.                         break;
  76.                 case XC_TEXTLINK:
  77.                         wsprintfW(pbuf,L"连接文本 - %d",nType);
  78.                         break;
  79.                 default:
  80.                         wsprintfW(pbuf,L"未知 - %d",nType);
  81.                         break;

  82.                 }
  83.                
  84.         }

  85.         VOID EnumWindowChildObject(HELE hParent,int nParentID)
  86.         {
  87.                 wchar_t buffer[MAX_PATH] = {0};
  88.                 XCTypeFormat(buffer,XEle_GetType(hParent));
  89.                 int nChildID = XAdapterTree_InsertItemText(hAdapter,buffer,nParentID,XC_ID_LAST);

  90.                 for (int i = 0; i < XEle_GetChildCount(hParent); i++)
  91.                 {
  92.                         HELE hChild = XEle_GetChildByIndex(hParent,i);
  93.                         EnumWindowChildObject(hChild,nChildID);
  94.                 }

  95.         }

  96.     void Init()
  97.     {
  98.         m_hWindow = XWnd_Create(400, 200, 350, 400, L"炫彩界面库窗口",NULL, xc_window_style_default);
  99.         XBtn_SetType(XBtn_Create(5, 3, 60, 20, L"Close", m_hWindow),button_type_close);
  100.         
  101.         m_hTree = XTree_Create(20,40,300,300,m_hWindow);
  102.         XTree_SetItemTemplateXML(m_hTree,L"Tree_Item.xml");
  103.                
  104.         hAdapter = XAdapterTree_Create();
  105.         XTree_BindAdapter(m_hTree,hAdapter);
  106.         XAdapterTree_AddColumn(hAdapter,L"name");
  107.         

  108.                 int idc1=XAdapterTree_InsertItemText(hAdapter,L"Window",XC_ID_ROOT,XC_ID_LAST);
  109.                 for (int i  = 0 ; i < XWnd_GetChildCount(m_hWindow); i++)
  110.                 {
  111.                         HELE hChildEle = XWnd_GetChildByIndex(m_hWindow,i);
  112.                         EnumWindowChildObject(hChildEle,idc1);
  113.                 }


  114.         XEle_RegEventCPP(m_hTree,XE_TREE_SELECT,&CMyWindowTree::OnTreeSelect);
  115.         XEle_RegEventCPP(m_hTree,XE_TREE_EXPAND,&CMyWindowTree::OnTreeExpand);
  116.                
  117.         XEle_RegEventCPP(m_hTree,XE_TREE_TEMP_CREATE,&CMyWindowTree::OnTemplateCreate);
  118.         XEle_RegEventCPP(m_hTree,XE_TREE_TEMP_DESTROY,&CMyWindowTree::OnTemplateDestroy);
  119.         XEle_RegEventCPP(m_hTree,XE_TREE_TEMP_ADJUST_COORDINATE,&CMyWindowTree::OnTemplateAdjustCoordinate);
  120.                
  121.         XWnd_ShowWindow(m_hWindow,SW_SHOW);
  122.     }
  123.     int OnTreeSelect(int nItemID,BOOL *pbHandled)
  124.     {
  125.         *pbHandled=TRUE;
  126.         return 0;
  127.     }
  128.     int OnTreeExpand(int id,BOOL bExpand,BOOL *pbHandled)
  129.     {
  130.         *pbHandled=TRUE;
  131.         return 0;
  132.     }
  133.     int  OnTemplateCreate(tree_item_i *pItem,BOOL *pbHandled)
  134.     {
  135.         *pbHandled=TRUE;
  136.         return 0;
  137.     }
  138.     int  OnTemplateDestroy(tree_item_i *pItem,BOOL *pbHandled)
  139.     {
  140.         *pbHandled=TRUE;
  141.         return 0;
  142.     }
  143.     int  OnTemplateAdjustCoordinate(tree_item_i *pItem,BOOL *pbHandled)
  144.     {
  145.         *pbHandled=TRUE;
  146.         return 0;
  147.     }
  148. };

  149. int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
  150. {
  151.     XInitXCGUI();
  152.     CMyWindowTree  MyWindow;
  153.     XRunXCGUI();
  154.     XExitXCGUI();
  155.     return TRUE;
  156. }
复制代码


回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2016-12-12 00:03:46 | 显示全部楼层
dasemimi 发表于 2016-12-11 21:23
编程助手 VC例子  149 详细的写了怎么枚举子控件,欢迎参考

?????
那比如子控件下的子控件怎么枚举?
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2016-12-12 03:26:51 | 显示全部楼层
  1. void EnumWindowChildObject(HELE hParent, __in const char * EnumFlag)
  2. {
  3.         //                cout << "当前层句柄:" << hParent << "类型是:" << XEle_GetType(hParent) <<  endl;
  4.         switch (XEle_GetType(hParent)) {
  5.         case XC_ELE:
  6.                 for (int i = 0; i < XEle_GetChildCount(hParent); i++) {
  7.                         HELE hChildEle = XEle_GetChildByIndex(hParent, i);
  8.                         EnumWindowChildObject(hChildEle, EnumFlag);
  9.                 }
  10.                 break;
  11.         case XC_RICHEDIT:
  12.                 if (EnumFlag == "Save") {
  13.                         WCHAR Buffer[MAX_PATH] = { 0 };
  14.                         XRichEdit_GetText(hParent, Buffer, sizeof(Buffer));                        // 获取文本内容.

  15.                         char OutId[MAX_PATH] = { 0 };
  16.                         sprintf_s(OutId, "%d", (int)hParent);

  17.                         Root["Main"]["EDT"][OutId] = Code.Code_widechar__multibyte(Buffer).c_str();
  18.                 }
  19.                 else {
  20.                         char OutId[MAX_PATH] = { 0 };
  21.                         sprintf_s(OutId, "%d", (int)hParent);
  22.                         XRichEdit_SetText(hParent, Code.Code_multibyte__widechar(Root["Main"]["EDT"][OutId].asString().c_str()).c_str());
  23.                 }
  24.                 break;
  25.         case XC_BUTTON:
  26.                 if (button_type_check == XBtn_GetType(hParent) || button_type_radio == XBtn_GetType(hParent)) {
  27.                         if (EnumFlag == "Save") {
  28.                                 char OutId[MAX_PATH] = { 0 };
  29.                                 sprintf_s(OutId, "%d", (int)hParent);
  30.                                 Root["Main"]["CHK"][OutId] = XBtn_IsCheck(hParent);
  31.                         }
  32.                         else {
  33.                                 char OutId[MAX_PATH] = { 0 };
  34.                                 sprintf_s(OutId, "%d", (int)hParent);
  35.                                 XBtn_SetCheck(hParent, Root["Main"]["CHK"][OutId].asBool());
  36.                                 XEle_RedrawEle(hParent, TRUE);
  37.                         }
  38.                 }
  39.                 break;
  40.         default: break;
  41.         }
  42. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

GMT+8, 2024-5-4 21:19 , Processed in 0.070692 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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