XTemp-动态创建列表项模板

menu 弹出菜单事件

示例代码:

#pragma comment(lib, "XCGUI.lib")
#include "xcgui.h"
class CMyWindowListBox
{
public:
HWINDOW m_hWindow;
HELE m_hListBox;
HTEMP m_hItemTemp;
CMyWindowListBox()
{
m_hItemTemp=NULL;
Init();
}
~CMyWindowListBox()
{
if(m_hItemTemp)
XTemp_Destroy(m_hItemTemp);
}
void Init()
{
void* pLayoutRoot= XTemp_CreateNode(XC_LAYOUT_OBJECT);
XTemp_SetNodeAttribute(pLayoutRoot,L"layout.width",L"fill");
XTemp_SetNodeAttribute(pLayoutRoot,L"layout.height",L"fill");
XTemp_AddNodeRoot(m_hItemTemp,pLayoutRoot);
{
void* pElement= XTemp_CreateNode(XC_ELE);
XTemp_SetNodeAttribute(pElement,L"layout.width",L"60");
XTemp_SetNodeAttribute(pElement,L"layout.height",L"fill");
XTemp_AddNode(pLayoutRoot,pElement);
void* pLayoutRight= XTemp_CreateNode(XC_LAYOUT_OBJECT);
XTemp_SetNodeAttribute(pLayoutRight,L"layout.width",L":1");
XTemp_SetNodeAttribute(pLayoutRight,L"layout.height",L"fill");
XTemp_SetNodeAttribute(pLayoutRight,L"layout.horizon",L"false");
XTemp_SetNodeAttribute(pLayoutRight,L"layout.alignV",L"center");
XTemp_AddNode(pLayoutRoot,pLayoutRight);
{
void* pShapeText1= XTemp_CreateNode(XC_SHAPE_TEXT);
XTemp_SetNodeAttribute(pShapeText1,L"layout.width",L"auto");
XTemp_SetNodeAttribute(pShapeText1,L"layout.height",L"25");
XTemp_SetNodeAttribute(pShapeText1,L"content",L"TextBlock--------------------123456789");
XTemp_AddNode(pLayoutRight,pShapeText1);
void* pShapeText2= XTemp_CreateNode(XC_SHAPE_TEXT);
XTemp_SetNodeAttribute(pShapeText2,L"layout.width",L"auto");
XTemp_SetNodeAttribute(pShapeText2,L"layout.height",L"20");
XTemp_SetNodeAttribute(pShapeText2,L"content",L"{binding field=name1}");
XTemp_AddNode(pLayoutRight,pShapeText2);
}
}
m_hWindow = XWnd_Create(0, 0, 500, 400, L"炫彩界面库窗口",NULL, window_style_default);
m_hListBox=XListBox_Create(20,40,400,304,m_hWindow);
XListBox_SetItemHeightDefault(m_hListBox,50,60);
XSView_SetLineSize(m_hListBox,25,20);
XListBox_EnableMultiSel(m_hListBox,FALSE);
XSView_SetBorderSize(m_hListBox,10,10,10,10);
XListBox_SetRowSpace(m_hListBox,5);
HXCGUI hAdapter=XAdTable_Create();
XListBox_BindAdapter(m_hListBox,hAdapter);
XAdTable_AddColumn(hAdapter, L"name1");
wchar_t buf[256]={0};
int index=0;
for (int i=0;i<10;i++)
{
wsprintf(buf,L"item-%d",i);
index=XAdTable_AddItemTextEx(hAdapter,L"name1",buf);
}
XEle_RegEventCPP(m_hListBox,XE_LISTBOX_TEMP_CREATE,&CMyWindowListBox::OnListBoxTemplateCreate);
XWnd_ShowWindow(m_hWindow,SW_SHOW);
}
int OnListBoxTemplateCreate(listBox_item_i* pItem,BOOL *pbHandled)
{
if(pItem->index % 2)
pItem->hTemp=m_hItemTemp;
return 0;
}
};
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
XInitXCGUI(TRUE);
CMyWindowListBox MyWindow;
return TRUE;
}
@ listItemTemp_type_listBox
listBox
Definition: XCGUI.h:1771
#define XE_LISTBOX_TEMP_CREATE
列表框元素-项模板创建事件, 模板复用机制需先启用; 替换模板无效判断nFlag,因为内部会检查模板是否改变,不用担心重复
Definition: XCGUI.h:987
@ XC_LAYOUT_OBJECT
布局对象LayoutObject, 已废弃
Definition: XCGUI.h:251
@ XC_SHAPE_TEXT
形状对象-文本
Definition: XCGUI.h:220
@ XC_ELE
基础元素
Definition: XCGUI.h:152
BOOL WINAPI XTemp_SetNodeAttribute(void *pNode, const wchar_t *pName, const wchar_t *pAttr)
@项模板_置节点属性 设置属性
Definition: ListItemTemp.cpp:834
BOOL WINAPI XTemp_Destroy(HTEMP hTemp)
@项模板_销毁 项模板销毁
Definition: ListItemTemp.cpp:667
HTEMP WINAPI XTemp_Create(listItemTemp_type_ nType)
@项模板_创建 创建项模板
Definition: ListItemTemp.cpp:717
BOOL WINAPI XTemp_AddNodeRoot(HTEMP hTemp, void *pNode)
@项模板_添加根节点 添加根节点
Definition: ListItemTemp.cpp:735
void *WINAPI XTemp_CreateNode(XC_OBJECT_TYPE nType)
@项模板_创建节点 创建节点
Definition: ListItemTemp.cpp:822
BOOL WINAPI XTemp_AddNode(void *pParentNode, void *pNode)
@项模板_添加子节点 添加子节点
Definition: ListItemTemp.cpp:808
@ window_style_default
窗口样式-控制按钮: 居中 图标, 标题, 关闭按钮, 最大化按钮, 最小化按钮
Definition: XCGUI.h:398
BOOL WINAPI XSView_SetLineSize(HELE hEle, int nWidth, int nHeight)
滚动视_置滚动单位大小 设置滚动单位大小.
Definition: ScrollViewUI.cpp:694
void WINAPI XC_ShowLayoutFrame(BOOL bShow)
炫彩_显示布局边界 显示布局对象边界.
Definition: Api.cpp:585
void WINAPI XExitXCGUI()
炫彩_退出 退出界面库释放资源. 不可在dllmain()中卸载, 否则会死锁
Definition: App.cpp:572
void WINAPI XRunXCGUI()
炫彩_运行 运行消息循环,当炫彩窗口数量为0时退出.
Definition: App.cpp:564
BOOL WINAPI XInitXCGUI(BOOL bD2D)
炫彩_初始化 初始化界面库.
Definition: App.cpp:557
void * HXCGUI
资源句柄
Definition: XCGUI.h:92
XEle_RegEventCPP(hEle, nEvent, memberFunction)
元素_注册事件CPP 注册元素事件,将类成员函数作为事件响应函数.函数省略元素自身句柄hEle.
int WINAPI XAdTable_AddColumn(HXCGUI hAdapter, const wchar_t *pName)
数据适配器表_添加列 添加数据列.
Definition: DataAdapter.cpp:1908
HXCGUI WINAPI XAdTable_Create()
数据适配器表_创建 创建列表框元素数据适配器.数据适配器存储数据, UI对象根据绑定的字段名显示数据适配器中对应的数据;
Definition: DataAdapter.cpp:1863
void WINAPI XListBox_BindAdapter(HELE hEle, HXCGUI hAdapter)
列表框_绑定数据适配器 绑定数据适配器.
Definition: ListBoxUI.cpp:3035
HELE WINAPI XListBox_Create(int x, int y, int cx, int cy, HXCGUI hParent)
列表框_创建 创建列表框元素.
Definition: ListBoxUI.cpp:2562
void WINAPI XListBox_SetRowSpace(HELE hEle, int nSpace)
列表框_置行间距 设置行间距.
Definition: ListBoxUI.cpp:2896
void WINAPI XListBox_EnableMultiSel(HELE hEle, BOOL bEnable)
列表框_启用多选 是否启用多行选择功能.
Definition: ListBoxUI.cpp:3014
void WINAPI XListBox_SetItemHeightDefault(HELE hEle, int nHeight, int nSelHeight)
列表框_置项默认高度 设置项默认高度.
Definition: ListBoxUI.cpp:2867
HWINDOW WINAPI XWnd_Create(int x, int y, int cx, int cy, const wchar_t *pTitle, HWND hWndParent, int XCStyle)
窗口_创建 创建窗口
Definition: WindowUI.cpp:5964
BOOL WINAPI XWnd_ShowWindow(HWINDOW hWindow, int nCmdShow)
@窗口_显示扩展 显示隐藏及控制窗口最大化还原等
Definition: WindowUI.cpp:6387