今天看了下directui的源码:directui_src,界面上的元素都是通过XML来配置的。可不知道XML中数值的具体意思,希望谁能提供个directui文档给我看看。
还有,我现在手上的directui_src可以用于开发吗?还是只适合学习?XML格式如下:LPCTSTR CStartPageWnd::GetDialogResource() const
{
return "<Dialog>"
"<HorizontalLayout>"
"<VerticalLayout width=\"150\" >"
"<Toolbar>"
"<ToolGripper />"
"</Toolbar>"
"<NavigatorPanel>"
"<PaddingPanel height=\"18\" />"
"<NavigatorButton name=\"page_start\" text=\"<i 0> Start\" selected=\"true\" tooltip=\"Vis start siden\" />"
"<NavigatorButton name=\"page_registers\" text=\"<i 4> Registre\" tooltip=\"Vis forskellige registre\" />"
"<NavigatorButton name=\"page_systems\" text=\"<i 4> Systemer\" />"
"<NavigatorButton name=\"page_configure\" text=\"<i 4> Ops鎡ning\" />"
"<NavigatorButton name=\"page_reports\" text=\"<i 4> Rapporter\" />"
"</NavigatorPanel>"
"</VerticalLayout>"
"<VerticalLayout>"
"<Toolbar>"
"<LabelPanel align=\"right\" text=\"<f 6><c #fffe28>Start Side</c></f>\" />"
"</Toolbar>"
"<ToolbarTitlePanel text=\"<f 7>Bjarke's Test Program</f>\" />"
"<TitleShadow />"
"<WindowCanvas water=\"StartWater\" >"
"<VerticalLayout>"
"<TextPanel text=\"<f 8>V鎙g startomr錮e?</h>\" />"
"<FadedLine />"
"<TileLayout scrollbar=\"true\" >"
"<TextPanel name=\"link_registers\" text=\"<i 7 50><a><f 6>&Registre</f></a>\n<h>\n<c #444540>V鎙g denne menu for at rette i diverse registre i systemet.\n\nDu kan rette i kunde, vogn og chauff鴕-reigsteret.\" shortcut=\"R\" />"
"<TextPanel name=\"link_systems\" text=\"<i 9 50><a><f 6>&Systemer</f></a>\n<h>\n<c #444540>Gennem denne menu kan du ops鎡te diverse ting.\" shortcut=\"S\" />"
"<TextPanel name=\"link_configure\" text=\"<i 6 50><a><f 6>Ops鎡ning</f></a>\n<h>\n<c #444540>Ops鎡ning giver adgang til konfiguration af de mange k鴕sels-systemer og regler.\" />"
"<TextPanel name=\"link_reports\" text=\"<i 5 50><a><f 6>Rapporter</f></a>\n<h>\n<c #444540>Rapporter giver dig overblik over registre samt hverdagens ture og bestillinger.\n\nGennem statistik og lister kan du hurtigt f?pr鎠enteret historiske data fra systemet.\" />"
"</TileLayout>"
"</VerticalLayout>"
"</WindowCanvas>"
"</VerticalLayout>"
"</HorizontalLayout>"
"</Dialog>";
}
还有,我现在手上的directui_src可以用于开发吗?还是只适合学习?XML格式如下:LPCTSTR CStartPageWnd::GetDialogResource() const
{
return "<Dialog>"
"<HorizontalLayout>"
"<VerticalLayout width=\"150\" >"
"<Toolbar>"
"<ToolGripper />"
"</Toolbar>"
"<NavigatorPanel>"
"<PaddingPanel height=\"18\" />"
"<NavigatorButton name=\"page_start\" text=\"<i 0> Start\" selected=\"true\" tooltip=\"Vis start siden\" />"
"<NavigatorButton name=\"page_registers\" text=\"<i 4> Registre\" tooltip=\"Vis forskellige registre\" />"
"<NavigatorButton name=\"page_systems\" text=\"<i 4> Systemer\" />"
"<NavigatorButton name=\"page_configure\" text=\"<i 4> Ops鎡ning\" />"
"<NavigatorButton name=\"page_reports\" text=\"<i 4> Rapporter\" />"
"</NavigatorPanel>"
"</VerticalLayout>"
"<VerticalLayout>"
"<Toolbar>"
"<LabelPanel align=\"right\" text=\"<f 6><c #fffe28>Start Side</c></f>\" />"
"</Toolbar>"
"<ToolbarTitlePanel text=\"<f 7>Bjarke's Test Program</f>\" />"
"<TitleShadow />"
"<WindowCanvas water=\"StartWater\" >"
"<VerticalLayout>"
"<TextPanel text=\"<f 8>V鎙g startomr錮e?</h>\" />"
"<FadedLine />"
"<TileLayout scrollbar=\"true\" >"
"<TextPanel name=\"link_registers\" text=\"<i 7 50><a><f 6>&Registre</f></a>\n<h>\n<c #444540>V鎙g denne menu for at rette i diverse registre i systemet.\n\nDu kan rette i kunde, vogn og chauff鴕-reigsteret.\" shortcut=\"R\" />"
"<TextPanel name=\"link_systems\" text=\"<i 9 50><a><f 6>&Systemer</f></a>\n<h>\n<c #444540>Gennem denne menu kan du ops鎡te diverse ting.\" shortcut=\"S\" />"
"<TextPanel name=\"link_configure\" text=\"<i 6 50><a><f 6>Ops鎡ning</f></a>\n<h>\n<c #444540>Ops鎡ning giver adgang til konfiguration af de mange k鴕sels-systemer og regler.\" />"
"<TextPanel name=\"link_reports\" text=\"<i 5 50><a><f 6>Rapporter</f></a>\n<h>\n<c #444540>Rapporter giver dig overblik over registre samt hverdagens ture og bestillinger.\n\nGennem statistik og lister kan du hurtigt f?pr鎠enteret historiske data fra systemet.\" />"
"</TileLayout>"
"</VerticalLayout>"
"</WindowCanvas>"
"</VerticalLayout>"
"</HorizontalLayout>"
"</Dialog>";
}
{
CDialogLayoutUI* pStretched = NULL;
IContainerUI* pContainer = NULL;
CControlUI* pReturn = NULL;
for( CMarkupNode node = pRoot->GetChild() ; node.IsValid(); node = node.GetSibling() ) {
LPCTSTR pstrClass = node.GetName();
SIZE_T cchLen = _tcslen(pstrClass);
CControlUI* pControl = NULL;
switch( cchLen ) {
case 4:
if( _tcscmp(pstrClass, _T("List")) == 0 ) pControl = new CListUI;
break;
case 6:
if( _tcscmp(pstrClass, _T("Canvas")) == 0 ) pControl = new CCanvasUI;
else if( _tcscmp(pstrClass, _T("Button")) == 0 ) pControl = new CButtonUI;
else if( _tcscmp(pstrClass, _T("Option")) == 0 ) pControl = new COptionUI;
break;
case 7:
if( _tcscmp(pstrClass, _T("Toolbar")) == 0 ) pControl = new CToolbarUI;
else if( _tcscmp(pstrClass, _T("TabPage")) == 0 ) pControl = new CTabPageUI;
else if( _tcscmp(pstrClass, _T("ActiveX")) == 0 ) pControl = new CActiveXUI;
break;
case 8:
if( _tcscmp(pstrClass, _T("DropDown")) == 0 ) pControl = new CDropDownUI;
break;
case 9:
if( _tcscmp(pstrClass, _T("FadedLine")) == 0 ) pControl = new CFadedLineUI;
else if( _tcscmp(pstrClass, _T("TaskPanel")) == 0 ) pControl = new CTaskPanelUI;
else if( _tcscmp(pstrClass, _T("Statusbar")) == 0 ) pControl = new CStatusbarUI;
else if( _tcscmp(pstrClass, _T("TabFolder")) == 0 ) pControl = new CTabFolderUI;
else if( _tcscmp(pstrClass, _T("TextPanel")) == 0 ) pControl = new CTextPanelUI;
break;
case 10:
if( _tcscmp(pstrClass, _T("ListHeader")) == 0 ) pControl = new CListHeaderUI;
else if( _tcscmp(pstrClass, _T("ListFooter")) == 0 ) pControl = new CListFooterUI;
else if( _tcscmp(pstrClass, _T("TileLayout")) == 0 ) pControl = new CTileLayoutUI;
else if( _tcscmp(pstrClass, _T("ToolButton")) == 0 ) pControl = new CToolButtonUI;
else if( _tcscmp(pstrClass, _T("ImagePanel")) == 0 ) pControl = new CImagePanelUI;
else if( _tcscmp(pstrClass, _T("LabelPanel")) == 0 ) pControl = new CLabelPanelUI;
break;
case 11:
if( _tcscmp(pstrClass, _T("ToolGripper")) == 0 ) pControl = new CToolGripperUI;
else if( _tcscmp(pstrClass, _T("WhiteCanvas")) == 0 ) pControl = new CWhiteCanvasUI;
else if( _tcscmp(pstrClass, _T("TitleShadow")) == 0 ) pControl = new CTitleShadowUI;
break;
case 12:
if( _tcscmp(pstrClass, _T("WindowCanvas")) == 0 ) pControl = new CWindowCanvasUI;
else if( _tcscmp(pstrClass, _T("DialogCanvas")) == 0 ) pControl = new CDialogCanvasUI;
else if( _tcscmp(pstrClass, _T("DialogLayout")) == 0 ) pControl = new CDialogLayoutUI;
else if( _tcscmp(pstrClass, _T("PaddingPanel")) == 0 ) pControl = new CPaddingPanelUI;
else if( _tcscmp(pstrClass, _T("WarningPanel")) == 0 ) pControl = new CWarningPanelUI;
break;
case 13:
if( _tcscmp(pstrClass, _T("SeparatorLine")) == 0 ) pControl = new CSeparatorLineUI;
else if( _tcscmp(pstrClass, _T("ControlCanvas")) == 0 ) pControl = new CControlCanvasUI;
else if( _tcscmp(pstrClass, _T("MultiLineEdit")) == 0 ) pControl = new CMultiLineEditUI;
else if( _tcscmp(pstrClass, _T("ToolSeparator")) == 0 ) pControl = new CToolSeparatorUI;
break;
case 14:
if( _tcscmp(pstrClass, _T("VerticalLayout")) == 0 ) pControl = new CVerticalLayoutUI;
else if( _tcscmp(pstrClass, _T("SingleLineEdit")) == 0 ) pControl = new CSingleLineEditUI;
else if( _tcscmp(pstrClass, _T("SingleLinePick")) == 0 ) pControl = new CSingleLinePickUI;
else if( _tcscmp(pstrClass, _T("NavigatorPanel")) == 0 ) pControl = new CNavigatorPanelUI;
else if( _tcscmp(pstrClass, _T("ListHeaderItem")) == 0 ) pControl = new CListHeaderItemUI;
else if( _tcscmp(pstrClass, _T("GreyTextHeader")) == 0 ) pControl = new CGreyTextHeaderUI;
break;
case 15:
if( _tcscmp(pstrClass, _T("ListTextElement")) == 0 ) pControl = new CListTextElementUI;
else if( _tcscmp(pstrClass, _T("NavigatorButton")) == 0 ) pControl = new CNavigatorButtonUI;
else if( _tcscmp(pstrClass, _T("TabFolderCanvas")) == 0 ) pControl = new CTabFolderCanvasUI;
break;
case 16:
if( _tcscmp(pstrClass, _T("ListHeaderShadow")) == 0 ) pControl = new CListHeaderShadowUI;
else if( _tcscmp(pstrClass, _T("HorizontalLayout")) == 0 ) pControl = new CHorizontalLayoutUI;
else if( _tcscmp(pstrClass, _T("ListLabelElement")) == 0 ) pControl = new CListLabelElementUI;
else if( _tcscmp(pstrClass, _T("SearchTitlePanel")) == 0 ) pControl = new CSearchTitlePanelUI;
break;
case 17:
if( _tcscmp(pstrClass, _T("ToolbarTitlePanel")) == 0 ) pControl = new CToolbarTitlePanelUI;
else if( _tcscmp(pstrClass, _T("ListExpandElement")) == 0 ) pControl = new CListExpandElementUI;
break;
}
// User-supplied control factory
if( pControl == NULL && m_pCallback != NULL ) {
pControl = m_pCallback->CreateControl(pstrClass);
}
ASSERT(pControl);
if( pControl == NULL ) return NULL;
// Add children
if( node.HasChildren() ) {
_Parse(&node, pControl);
}
// Attach to parent
if( pParent != NULL ) {
if( pContainer == NULL ) pContainer = static_cast<IContainerUI*>(pParent->GetInterface(_T("Container")));
ASSERT(pContainer);
if( pContainer == NULL ) return NULL;
pContainer->Add(pControl);
}
// Process attributes
if( node.HasAttributes() ) {
TCHAR szValue[500] = { 0 };
SIZE_T cchLen = lengthof(szValue) - 1;
// Set ordinary attributes
int nAttributes = node.GetAttributeCount();
for( int i = 0; i < nAttributes; i++ ) {
pControl->SetAttribute(node.GetAttributeName(i), node.GetAttributeValue(i));
}
// Very custom attributes
if( node.GetAttributeValue(_T("stretch"), szValue, cchLen) ) {
if( pStretched == NULL ) pStretched = static_cast<CDialogLayoutUI*>(pParent->GetInterface(_T("DialogLayout")));
ASSERT(pStretched);
if( pStretched == NULL ) return NULL;
UINT uMode = 0;
if( _tcsstr(szValue, _T("move_x")) != NULL ) uMode |= UISTRETCH_MOVE_X;
if( _tcsstr(szValue, _T("move_y")) != NULL ) uMode |= UISTRETCH_MOVE_Y;
if( _tcsstr(szValue, _T("move_xy")) != NULL ) uMode |= UISTRETCH_MOVE_X | UISTRETCH_MOVE_Y;
if( _tcsstr(szValue, _T("size_x")) != NULL ) uMode |= UISTRETCH_SIZE_X;
if( _tcsstr(szValue, _T("size_y")) != NULL ) uMode |= UISTRETCH_SIZE_Y;
if( _tcsstr(szValue, _T("size_xy")) != NULL ) uMode |= UISTRETCH_SIZE_X | UISTRETCH_SIZE_Y;
if( _tcsstr(szValue, _T("group")) != NULL ) uMode |= UISTRETCH_NEWGROUP;
if( _tcsstr(szValue, _T("line")) != NULL ) uMode |= UISTRETCH_NEWLINE;
pStretched->SetStretchMode(pControl, uMode);
}
}
// Return first item
if( pReturn == NULL ) pReturn = pControl;
}
return pReturn;
}
我想在前加个:charset=UTF-8 什么的。好像也是不行?
只要将xml文件以utf8格式保存.
{
return "<Dialog>"
"<HorizontalLayout>"
"<VerticalLayout width=\"150\" >"
"<Toolbar>"
"<ToolGripper />"
"</Toolbar>"
"<NavigatorPanel>"
"<PaddingPanel height=\"18\" />"
"<NavigatorButton name=\"page_start\" text=\"<i 0> Start\" selected=\"true\" tooltip=\"Vis start siden\" />"
"<NavigatorButton name=\"page_registers\" text=\"<i 4> Registre\" tooltip=\"Vis forskellige registre\" />"
"<NavigatorButton name=\"page_systems\" text=\"<i 4> Systemer\" />"
"<NavigatorButton name=\"page_configure\" text=\"<i 4> Ops鎡ning\" />"
"<NavigatorButton name=\"page_reports\" text=\"<i 4> Rapporter\" />"
"</NavigatorPanel>"
"</VerticalLayout>"
"<VerticalLayout>"
"<Toolbar>"
"<LabelPanel align=\"right\" text=\"<f 6><c #fffe28>Start Side</c></f>\" />"
"</Toolbar>"
"<ToolbarTitlePanel text=\"<f 7>Bjarke's Test Program</f>\" />"
"<TitleShadow />"
"<WindowCanvas water=\"StartWater\" >"
"<VerticalLayout>"
"<TextPanel text=\"<f 8>V鎙g startomr錮e?</h>\" />"
"<FadedLine />"
"<TileLayout scrollbar=\"true\" >"
"<TextPanel name=\"link_registers\" text=\"<i 7 50><a><f 6>&Registre</f></a>\n<h>\n<c #444540>V鎙g denne menu for at rette i diverse registre i systemet.\n\nDu kan rette i kunde, vogn og chauff鴕-reigsteret.\" shortcut=\"R\" />"
"<TextPanel name=\"link_systems\" text=\"<i 9 50><a><f 6>&Systemer</f></a>\n<h>\n<c #444540>Gennem denne menu kan du ops鎡te diverse ting.\" shortcut=\"S\" />"
"<TextPanel name=\"link_configure\" text=\"<i 6 50><a><f 6>Ops鎡ning</f></a>\n<h>\n<c #444540>Ops鎡ning giver adgang til konfiguration af de mange k鴕sels-systemer og regler.\" />"
"<TextPanel name=\"link_reports\" text=\"<i 5 50><a><f 6>Rapporter</f></a>\n<h>\n<c #444540>Rapporter giver dig overblik over registre samt hverdagens ture og bestillinger.\n\nGennem statistik og lister kan du hurtigt f?pr鎠enteret historiske data fra systemet.\" />"
"</TileLayout>"
"</VerticalLayout>"
"</WindowCanvas>"
"</VerticalLayout>"
"</HorizontalLayout>"
"</Dialog>";
}
还有这里面的数值具体的含义是什么?谁有研究过directui,指导下·!~!
const wchar_t* CStartPageWnd::GetDialogResource() const
{
return L"<Dialog>"
L"<HorizontalLayout>"
............
}
你想添加那种界面元素,可以添加XML节点,自行定义绘制处理函数即可。
要求:
1. VC++ 开发有2年以上经验,熟悉MFC
2. 有使用VC++开发过Skin UI产品的经验
3. 工作勤奋,有团队意识,能很好的和其他人协作.
招聘时间:
到 2009-4-1近期工作目标:
1.开发出最好的UI界面
能换肤,能界面能变形.
类似的软件产品如:QQ, Media Player公司介绍:
IS公司是一家高速发展中的互联网软件公司,现处于创业已起步阶段,已有多家投资公司投资.
我们专注于互联网的娱乐增值服务,目前开发的IS游戏语音平台,是NO.1 .
只要你通过baidu 或者google搜索 :"游戏语音",甚至 "语音",
您在最前面的搜索结果会看到: iSpeak 游戏语音 团队语音
我们的产品都是以口碑相传,已经千万级注册用户,同时在线有几十万,他们多是我们最忠实的用户.
您的加盟是我们IS公司发展的最大力量.您的智慧,经验,勤奋都有希望成为我们的中坚力量.
欢迎您加入我们的团队.公司网址:
www.ipark.cn
公司地址:
上海市徐家汇。
工作地点:
上海市徐家汇数娱大厦(番愚路与虹桥路交叉口)。联系方式:
MSN: [email protected] (加MSN ,请注明 UI VC++开发应聘)
email [email protected] (请把简历发到此邮箱)
http://www.uipower.com/userfiles/mam_01.jpg江民杀毒软件产品:
http://www.uipower.com/userfiles/jiangmin_image.jpg盛大PPNext产品:
http://www.uipower.com/userfiles/PPNext2.jpg
好多 属性都 不知道 怎么添加。