炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5570|回复: 8

如何获取布局文件中的形状对象句柄

[复制链接]

该用户从未签到

发表于 2017-5-15 11:50:21 | 显示全部楼层 |阅读模式
5炫彩币
  1. HXCGUI hXCGUI = XC_LoadLayout(_T("layout/layoutData.xml"));
  2.         if (XC_IsHELE(hXCGUI))
  3.         {
  4.                 m_hLayoutPane = (HELE)hXCGUI;

  5.                 HXCGUI hTest = XC_GetObjectByID((HWINDOW)m_hLayoutPane, 10504);
  6. }
复制代码
我这个加载的布局文件  获取布局的句柄   然后通过布局文件中的图片控件的ID   想要获取图片句柄   通过XC_GetObjectByID()这个函数  返回的句柄是空   求解决方案   谢谢

该用户从未签到

发表于 2017-5-15 20:19:17 | 显示全部楼层
简单,在设计器里面 点击这个形状对象,在 属性栏里面 找到 id 设置一个id ,然后点击一下 属性栏的其他框,让他修改生效,最后ctrl+s 保存一下,即可
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-5-16 09:41:50 | 显示全部楼层
dasemimi 发表于 2017-5-15 20:19
简单,在设计器里面 点击这个形状对象,在 属性栏里面 找到 id 设置一个id ,然后点击一下 属性栏的其他框 ...

我把ID都设置了   获取布局中的基础元素对象是没有问题的    但是到获取形状对象的时候  就获取不到
回复

使用道具 举报

该用户从未签到

发表于 2017-5-16 19:48:44 | 显示全部楼层
请给出测试工程的demo例子,上传,以便验证
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-5-16 23:19:46 | 显示全部楼层
dasemimi 发表于 2017-5-16 19:48
请给出测试工程的demo例子,上传,以便验证

在哪个版块发啊?
回复

使用道具 举报

该用户从未签到

发表于 2017-5-17 11:24:37 | 显示全部楼层

就在这里,你回复一个例子就行了啊,,,,最好传一个可运行的工程,这样我就可以看到了,,,,,,方便解决问题
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-5-17 17:19:48 | 显示全部楼层
按照布局文件中的ID   可以获取到按钮的句柄  就是无法拿到形状对象的句柄   

testHxcgui.rar

29.56 KB, 下载次数: 489

回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-5-17 17:21:06 | 显示全部楼层
dasemimi 发表于 2017-5-17 11:24
就在这里,你回复一个例子就行了啊,,,,最好传一个可运行的工程,这样我就可以看到了,,,,,,方便 ...

因为上传文件大小的限制    我把xcgui.dll去掉了
回复

使用道具 举报

该用户从未签到

发表于 2017-5-17 18:25:58 | 显示全部楼层
  1. #include <windows.h>
  2. #include <tchar.h>
  3. #include "xcgui.h"
  4. #pragma comment (lib, "xcgui.lib")

  5. class CMyWindowDemo
  6. {
  7. public:
  8.         HWINDOW m_hWindow;
  9.         HELE    m_hLayoutPane;
  10.         CMyWindowDemo()
  11.         {
  12.                 Init();
  13.         }
  14.         void Init()
  15.         {
  16.                 m_hWindow = XWnd_Create(100, 100, 800, 600, L"炫彩界面库窗口", NULL, xc_window_style_default);
  17.                 XBtn_SetType(XBtn_Create(5, 3, 60, 20, L"Close", m_hWindow), button_type_close);

  18.                 HELE m_hLayoutPane = (HELE)XC_LoadLayout(L"layoutPane.xml"); //加载布局面板文件
  19.                 if (XC_IsHELE(m_hLayoutPane))
  20.                 {
  21.                         XWnd_AddEle(m_hWindow, m_hLayoutPane); //将布局面板添加到窗口
  22.                        

  23.                         //XC_GetObjectByID(); //获取指定ID对象
  24.                         //XC_ShowLayoutFrame(TRUE); //显示布局边界
  25.                         HXCGUI hPic = XC_GetObjectByID(m_hWindow, 1002);
  26.                         HXCGUI hxcBtn = XC_GetObjectByID(m_hWindow, 1001);

  27.                         HELE hBtn = XEle_GetChildByID(m_hLayoutPane, 1001);
  28.                         HELE hELePic = XEle_GetChildByID(m_hLayoutPane, 1002);
  29.                        
  30.                        
  31.                 }
  32.                 else
  33.                 {
  34.                         return; //错误
  35.                 }
  36.                 XWnd_AdjustLayout(m_hWindow);
  37.                 XWnd_ShowWindow(m_hWindow, SW_SHOW);
  38.         }
  39. };

  40. int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
  41. {
  42.         XInitXCGUI();
  43.         CMyWindowDemo  MyWindow;
  44.         XRunXCGUI();
  45.         XExitXCGUI();
  46.         return 0;
  47. }
复制代码



这样就可以了,总结问题所在, 要先吧 layoutPane 添加到窗口,此时,layoutpane所有的内部数据结构,都会添加到窗口树节点上


此时用XC_GetObjectByID 才能从 窗口树上获取到句柄,否则是不可以的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 15:56 , Processed in 0.088820 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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