炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6391|回复: 7

mfc 导入模版类

[复制链接]

该用户从未签到

发表于 2016-11-25 10:45:54 | 显示全部楼层 |阅读模式
10炫彩币
我使用XC_LoadResource和XC_LoadLayout导入炫彩生成的ui模版如何加载到mfc的窗口上呢 ?目前我已经可以在mfc上创建窗口并显示,实现代码如下:
hMyWindow =XWnd_CreateEx(NULL,NULL,NULL,WS_CHILD | WS_VISIBLE ,
  hRect.left,hRect.top,hRect.Width(),hRect.Height(),m_hWnd,xc_window_style_nothing );
HBKINFOM hBkinfoM = XWnd_GetBkInfoManager(hMyWindow);
XBkInfoM_AddFill(hBkinfoM,element_state_flag_enable,RGB(56,58,66),255);
XWnd_EnableDrawBk(hMyWindow,FALSE);
XWnd_EnableDragBorder(hMyWindow,TRUE);

谢谢

该用户从未签到

发表于 2016-11-25 13:21:38 | 显示全部楼层
简单,XC_LoadLayout 返回窗口句柄 HWINDOW 然后使用  XWnd_GetHWnd 获得 hWnd ,,

然后 使用 SetParent(hWnd,mfc窗口句柄) 就可以显示上去了
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2016-11-25 14:26:09 | 显示全部楼层
dasemimi 发表于 2016-11-25 13:21
简单,XC_LoadLayout 返回窗口句柄 HWINDOW 然后使用  XWnd_GetHWnd 获得 hWnd ,,

然后 使用 SetParent( ...

你好 我刚按照你指导的实现了代码,可是显示好像没有模版的效果
具体实现代码如下:
        XC_LoadResource(L"res\\resource.xml",L"res");       
        HWINDOW tem_Window =(HWINDOW) XC_LoadLayout(L"res\\layout.xml");
        XWnd_AdjustLayout(tem_Window);       
        HWND tem_wnd = XWnd_GetHWND(tem_Window);
        ::SetParent(tem_wnd,m_hWnd);       
        HWINDOW hWindow = XWnd_CreateEx(
        0,NULL,L"炫彩界面库",WS_CHILD|WS_VISIBLE,0,0,200,100,m_hWnd);       
        XWnd_ShowWindow(hWindow,SW_SHOW);

再次麻烦你了
回复

使用道具 举报

该用户从未签到

发表于 2016-11-25 14:29:20 | 显示全部楼层
本帖最后由 dasemimi 于 2016-11-25 14:31 编辑

记得moveWindow(XWnd_GetHWnd(tem_Window ),0,0,100,100)
XWnd_adjustLayout(tem_Window );
XWnd_ShowWindow(tem_Window ,SW_SHOW);
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2016-11-25 14:40:58 | 显示全部楼层
dasemimi 发表于 2016-11-25 14:29
记得moveWindow(XWnd_GetHWnd(tem_Window ),0,0,100,100)
XWnd_adjustLayout(tem_Window );
XWnd_ShowWindo ...

你好 如果代码这样实现:
        XC_LoadResource(L"res\\resource.xml",L"res");       
        HWINDOW tem_Window =(HWINDOW) XC_LoadLayout(L"res\\layout.xml");
        XWnd_AdjustLayout(tem_Window);       
        XWnd_ShowWindow(tem_Window,SW_SHOW);
可以单独显示qq的那个测试界面:
如果是把这个句柄赋给mfc的窗口句柄的话:
        XC_LoadResource(L"res\\resource.xml",L"res");       
        HWINDOW tem_Window =(HWINDOW) XC_LoadLayout(L"res\\layout.xml");
        XWnd_AdjustLayout(tem_Window);       
        XWnd_ShowWindow(tem_Window,SW_SHOW);
        HWND tem_wnd = XWnd_GetHWND(tem_Window);
        ::SetParent(tem_wnd,m_hWnd);       
        HWINDOW hWindow = XWnd_CreateEx(
        0,NULL,L"炫彩界面库",WS_CHILD|WS_VISIBLE,0,0,200,100,m_hWnd);       
        XWnd_ShowWindow(hWindow,SW_SHOW);
qq的测试界面就没法显示
这是什么原因呢?
回复

使用道具 举报

该用户从未签到

发表于 2016-11-25 14:50:27 | 显示全部楼层
tw007 发表于 2016-11-25 14:40
你好 如果代码这样实现:
        XC_LoadResource(L"res\\resource.xml",L"res");       
        HWINDOW tem_Window =(HWIN ...

一般要自己确定问题出现的位置,到底是没创建成功,还是创建成功不显示,还是显示了看不见


你这个问题,目测应该创建成功了,估计是位置不对,所以,我上面让你movewindow 重新设置一下窗口位置

因为 从外部窗口设置到另外一个窗口的内部,坐标会不正确,所以 setparent后,需要重新movewindow


具体问题,需要自己仔细排查
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2016-11-25 15:34:09 | 显示全部楼层
dasemimi 发表于 2016-11-25 14:50
一般要自己确定问题出现的位置,到底是没创建成功,还是创建成功不显示,还是显示了看不见

你好 我在SetParent之后,movewindow还是不能显示模版的窗口,还是显示的XWnd_CreateEx创建的窗口
回复

使用道具 举报

该用户从未签到

发表于 2016-11-25 17:01:40 | 显示全部楼层
反正一般就是用XWnd_CreateEx创建窗口,然后加载布局面板上去就行了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 11:30 , Processed in 0.066874 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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