炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4035|回复: 3

我想问下 我的代码就是为什么不显示。。

[复制链接]

该用户从未签到

发表于 2016-1-21 20:12:18 | 显示全部楼层 |阅读模式
10炫彩币
  1. #include "stdafx.h"
  2. #include "XC_UIDebug.h"

  3. HWINDOW m_hWindow;
  4. typedef std::map <std::wstring, std::wstring> Resource;
  5. std::map <std::wstring, HELE> hEles;
  6. std::map<std::wstring, HIMAGE> hImages;
  7. std::map<std::wstring, HXCGUI> hLayoutFrames;
  8. void CreateWindows(void);
  9. void CreateTop(HXCGUI& hLayoutFrameTop);
  10. bool LoadResource(Resource hResource);
  11. Resource Init_LoadRes(void);

  12. int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
  13.                      _In_opt_ HINSTANCE hPrevInstance,
  14.                      _In_ LPTSTR    lpCmdLine,
  15.                      _In_ int       nCmdShow)
  16. {
  17.         XInitXCGUI();
  18.         CreateWindows();
  19.         XRunXCGUI();
  20.         XExitXCGUI();
  21.         return TRUE;
  22. }

  23. void CreateWindows(void)
  24. {
  25.         LoadResource(Init_LoadRes());
  26.         m_hWindow = XWnd_Create(0, 0, 600, 500, L"WindowsUI", NULL, xc_window_style_default);

  27.         hLayoutFrames[L"MainUI"] = XLayout_Create();
  28.         hLayoutFrames[L"Background"] = XLayout_Create();
  29.         hLayoutFrames[L"Masked"] = XLayout_Create();
  30.         hLayoutFrames[L"Content"] = XLayout_Create();
  31.         hLayoutFrames[L"Top"] = XLayout_Create();
  32.         hLayoutFrames[L"Body"] = XLayout_Create();

  33.         XLayout_SetLayoutWidth(hLayoutFrames[L"MainUI"], layout_size_type_fill, 0);
  34.         XLayout_SetLayoutHeight(hLayoutFrames[L"MainUI"], layout_size_type_fill, 0);
  35.         XLayout_SetLayoutWidth(hLayoutFrames[L"Background"], layout_size_type_fill, 0);
  36.         XLayout_SetLayoutHeight(hLayoutFrames[L"Background"], layout_size_type_fill, 0);
  37.         XLayout_SetLayoutWidth(hLayoutFrames[L"Masked"], layout_size_type_fill, 0);
  38.         XLayout_SetLayoutHeight(hLayoutFrames[L"Masked"], layout_size_type_fill, 0);
  39.         XLayout_SetLayoutWidth(hLayoutFrames[L"Content"], layout_size_type_fill, 0);
  40.         XLayout_SetLayoutHeight(hLayoutFrames[L"Content"], layout_size_type_fill, 0);

  41.         XLayout_AddLayoutObject(hLayoutFrames[L"MainUI"], hLayoutFrames[L"Background"]);
  42.         XLayout_AddLayoutObject(hLayoutFrames[L"MainUI"], hLayoutFrames[L"Masked"]);
  43.         XLayout_AddLayoutObject(hLayoutFrames[L"MainUI"], hLayoutFrames[L"Content"]);
  44.         XWnd_BindLayoutObject(m_hWindow, window_position_body, hLayoutFrames[L"MainUI"]);

  45.         //XWnd_RegEventCPP(m_hWindow, WM_DESTROY, &WindowsUI::OnDestroy);
  46.         //XWnd_RegEventCPP(m_hWindow, WM_SIZE, &WindowsUI::OnWndSize);
  47.         HXCGUI background = XShapePic_Create(0, 0, 599, 900);
  48.         XShapePic_SetImage(background,hImages[L"background"]);
  49.         XLayout_AddShape(hLayoutFrames[L"Background"], background);

  50.         //XWnd_EnableDragBorder(m_hWindow, false);
  51.         XWnd_SetLayoutSize(m_hWindow, 0, 0, 0, 0);
  52.         XWnd_EnableDragCaption(m_hWindow, true);

  53.         XLayout_SetLayoutWidth(hLayoutFrames[L"Top"], layout_size_type_fill, 0);
  54.         XLayout_SetLayoutHeight(hLayoutFrames[L"Top"], layout_size_type_fixed, 27);
  55.         XLayout_SetAlignH(hLayoutFrames[L"Top"], layout_align_right);
  56.         XLayout_SetAlignV(hLayoutFrames[L"Top"], layout_align_top);
  57.         XLayout_AddLayoutObject(hLayoutFrames[L"Content"], hLayoutFrames[L"Top"]);
  58.         CreateTop(hLayoutFrames[L"Top"]);
  59.         for (auto hEle : hEles)//刷新所有ele
  60.         {
  61.                 XEle_RedrawEle(hEle.second);
  62.         }
  63.         for (auto hLayout : hLayoutFrames)//刷新所有layout
  64.         {
  65.                 XLayout_ShowLayout(hLayout.second, true);
  66.                 XLayout_AdjustLayout(hLayout.second);
  67.         }

  68.         XWnd_AdjustLayout(m_hWindow);
  69.         XWnd_ShowWindow(m_hWindow, SW_SHOW);
  70. }

  71. void CreateTop(HXCGUI& hLayoutFrameTop)
  72. {
  73.         XC_ShowLayoutFrame(TRUE);
  74.         hLayoutFrames[L"ControlButton"] = XLayout_Create();
  75.         hLayoutFrames[L"ToolsButton"] = XLayout_Create();
  76.         XLayout_SetLayoutWidth(hLayoutFrames[L"ControlButton"], layout_size_type_auto, 0);
  77.         XLayout_SetLayoutHeight(hLayoutFrames[L"ControlButton"], layout_size_type_fill, 0);
  78.         XLayout_SetAlignH(hLayoutFrames[L"ControlButton"], layout_align_right);
  79.         XLayout_SetAlignV(hLayoutFrames[L"ControlButton"], layout_align_top);
  80.         XLayout_SetSpace(hLayoutFrames[L"ControlButton"], 0);

  81.         XLayout_SetLayoutWidth(hLayoutFrames[L"ToolsButton"], layout_size_type_weight, 1);
  82.         XLayout_SetLayoutHeight(hLayoutFrames[L"ToolsButton"], layout_size_type_fill, 0);
  83.         XLayout_SetAlignH(hLayoutFrames[L"ToolsButton"], layout_align_left);
  84.         XLayout_SetAlignV(hLayoutFrames[L"ToolsButton"], layout_align_top);
  85.         XLayout_SetSpace(hLayoutFrames[L"ToolsButton"], 0);

  86.         hEles[L"hButton_close"] = XBtn_Create(0, 0, 30, 27, nullptr);
  87.         hEles[L"hButton_minimum"] = XBtn_Create(0, 0, 30, 27, nullptr);
  88.         hEles[L"hButton_maximize"] = XBtn_Create(0, 0, 30, 27, nullptr);

  89.         XBtn_SetType(hEles[L"hButton_close"], button_type_close);
  90.         XBtn_SetType(hEles[L"hButton_minimum"], button_type_min);
  91.         XBtn_SetType(hEles[L"hButton_maximize"], button_type_max);

  92.         XBtn_AddBkImage(hEles[L"hButton_close"], button_state_leave, hImages[L"sysbtn_close_normal"]);
  93.         XBtn_AddBkImage(hEles[L"hButton_close"], button_state_stay, hImages[L"sysbtn_close_hover"]);
  94.         XBtn_AddBkImage(hEles[L"hButton_close"], button_state_down, hImages[L"sysbtn_close_down"]);
  95.         XEle_EnableBkTransparent(hEles[L"hButton_close"], TRUE);
  96.         XEle_EnableFocus(hEles[L"hButton_close"], false);

  97.         XBtn_AddBkImage(hEles[L"hButton_minimum"], button_state_leave, hImages[L"sysbtn_min_normal"]);
  98.         XBtn_AddBkImage(hEles[L"hButton_minimum"], button_state_stay, hImages[L"sysbtn_min_hover"]);
  99.         XBtn_AddBkImage(hEles[L"hButton_minimum"], button_state_down, hImages[L"sysbtn_min_down"]);
  100.         XEle_EnableBkTransparent(hEles[L"hButton_minimum"], TRUE);
  101.         XEle_EnableFocus(hEles[L"hButton_minimum"], false);

  102.         XBtn_AddBkImage(hEles[L"hButton_maximize"], button_state_leave, hImages[L"sysbtn_max_normal"]);
  103.         XBtn_AddBkImage(hEles[L"hButton_maximize"], button_state_stay, hImages[L"sysbtn_max_hover"]);
  104.         XBtn_AddBkImage(hEles[L"hButton_maximize"], button_state_down, hImages[L"sysbtn_max_down"]);
  105.         XEle_EnableBkTransparent(hEles[L"hButton_maximize"], TRUE);
  106.         XEle_EnableFocus(hEles[L"hButton_maximize"], false);

  107.         XLayout_AddEle(hLayoutFrames[L"ControlButton"], hEles[L"hButton_minimum"]);
  108.         XLayout_AddEle(hLayoutFrames[L"ControlButton"], hEles[L"hButton_maximize"]);
  109.         XLayout_AddEle(hLayoutFrames[L"ControlButton"], hEles[L"hButton_close"]);

  110.         XLayout_AddLayoutObject(hLayoutFrameTop, hLayoutFrames[L"ControlButton"]);

  111. }
  112. bool LoadResource(Resource hResource)
  113. {
  114.         for (auto hRes : hResource){
  115.                 hImages[hRes.first] = XImage_LoadFile(hRes.second.c_str(), false);
  116.                 XImage_EnableAutoDestroy(hImages[hRes.first], false);
  117.         }
  118.         return true;
  119. }
  120. Resource Init_LoadRes(void)
  121. {
  122.         Resource hRes;
  123.         hRes[L"sysbtn_close_down"] = L"Images\\sysbtn_close_down.png";
  124.         hRes[L"sysbtn_close_hover"] = L"Images\\sysbtn_close_hover.png";
  125.         hRes[L"sysbtn_close_normal"] = L"Images\\sysbtn_close_normal.png";

  126.         hRes[L"sysbtn_max_down"] = L"Images\\sysbtn_max_down.png";
  127.         hRes[L"sysbtn_max_hover"] = L"Images\\sysbtn_max_hover.png";
  128.         hRes[L"sysbtn_max_normal"] = L"Images\\sysbtn_max_normal.png";

  129.         hRes[L"sysbtn_min_down"] = L"Images\\sysbtn_min_down.png";
  130.         hRes[L"sysbtn_min_hover"] = L"Images\\sysbtn_min_hover.png";
  131.         hRes[L"sysbtn_min_normal"] = L"Images\\sysbtn_min_normal.png";

  132.         hRes[L"sysbtn_restore_down"] = L"Images\\sysbtn_restore_down.png";
  133.         hRes[L"sysbtn_restore_hover"] = L"Images\\sysbtn_restore_hover.png";
  134.         hRes[L"sysbtn_restore_normal"] = L"Images\\sysbtn_restore_normal.png";

  135.         hRes[L"tools_normal"] = L"Images\\tools.png";
  136.         hRes[L"tools_down"] = L"Images\\tools_down.png";
  137.         hRes[L"tools_hover"] = L"Images\\tools_hover.png";

  138.         hRes[L"background"] = L"Images\\background.jpg";

  139.         return hRes;
  140. }
复制代码


XC_UIDebug.rar

116.85 KB, 下载次数: 440

最佳答案

查看完整内容

问题有三: 其一: 你创建的控件 不设置 父元素句柄,这意味着是在内存中,和炫彩窗口没任何联系,导致无法显示 其二: 你虽然创建了布局。但是你创建了布局,没有把控件添加到布局里面,布局无法管理你的元素,即使你 第一步做正确了,那也不会得到你想要的结果。。。 其三: 你的代码虽然很简洁,但是维护起来太吃力了。。。换肤虽然很容易,但是,,,,后来的人来维护你的代码鸭梨太大。。。。。。。。。。 ...

该用户从未签到

发表于 2016-1-21 20:12:19 | 显示全部楼层
问题有三:

其一: 你创建的控件 不设置 父元素句柄,这意味着是在内存中,和炫彩窗口没任何联系,导致无法显示

其二: 你虽然创建了布局。但是你创建了布局,没有把控件添加到布局里面,布局无法管理你的元素,即使你
第一步做正确了,那也不会得到你想要的结果。。。


其三: 你的代码虽然很简洁,但是维护起来太吃力了。。。换肤虽然很容易,但是,,,,后来的人来维护你的代码鸭梨太大。。。。。。。。。。
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2016-1-22 21:29:40 | 显示全部楼层
嗯,解决了
顺便问下layout怎么做到能拖动窗口
回复

使用道具 举报

该用户从未签到

发表于 2016-1-25 17:50:31 | 显示全部楼层
ゞMelodyメ∞ 发表于 2016-1-22 21:29
嗯,解决了
顺便问下layout怎么做到能拖动窗口

不知道你说的是什么,如果是窗口的话,启用拖放,如果元素在窗口上的话,设置鼠标穿透
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 00:18 , Processed in 0.083808 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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