实际使用发现CComboUI的textpadding为 5 较好,在CComboUI::CComboUI中添加: m_rcTextPadding.left = 5;
动态跟进CComboUI::SelectItem: ```c bool CComboUI::SelectItem(int iIndex, bool bTakeFocus) { if( m_pWindow != NULL ) m_pWindow->Close(); if( iIndex == m_iCurSel ) return true; int iOldSel = m_iCurSel; if( m_iCurSel >= 0 ) { CControlUI* pControl = static_cast<CControlUI>(m_items[m_iCurSel]); if( !pControl ) return false; IListItemUI pListItem = static_cast<IListItemUI>(pControl->GetInterface(_T(“ListItem”))); if( pListItem != NULL ) pListItem->Select(false); m_iCurSel = -1; } if( iIndex < 0 ) return false; if( m_items.GetSize() == 0 ) return false; if( iIndex >= m_items.GetSize() ) iIndex = m_items.GetSize() - 1; CControlUI pControl = static_cast<CControlUI>(m_items[iIndex]); if( !pControl || !pControl->IsVisible() || !pControl->IsEnabled() ) return false; IListItemUI pListItem = static_cast<IListItemUI*>(pControl->GetInterface(_T(“ListItem”))); if( pListItem == NULL ) return false; m_iCurSel = iIndex; if( m_pWindow != NULL || bTakeFocus ) pControl->SetFocus(); pListItem->Select(true); if( m_pManager != NULL ) m_pManager->SendNotify(this, DUI_MSGTYPE_ITEMSELECT, m_iCurSel, iOldSel); Invalidate();
```c if (m_logOutCtrl == NULL) return;
经常使用VisualStudio,习惯使用该功能:打开并选择对应的文档,但是DuiDesigner只是打开文件夹,并不选中对应的文档: ```c void CUIDesignerDoc::OnMdiOpenFullPath() { if(m_strPathName.IsEmpty()) { MessageBox(NULL, _T(“请先保存当前文件。”), _T(“提示”), MB_ICONINFORMATION); return; }
duilib还提供了另外一种响应的方法,即消息映射DUI_BEGIN_MESSAGE_MAP,可以将DUI_MSGTYPE_CLICK消息映射到指定的函数(比如OnClick),这和在Notify判断msg.sType是一样的效果,具体请参见duilib的RichListDemo。 先看看下面几段代码: DUI_BEGIN_MESSAGE_MAP(CPage1, CNotifyPump) DUI_ON_MSGTYPE(DUI_MSGTYPE_CLICK,OnClick) DUI_ON_MSGTYPE(DUI_MSGTYPE_SELECTCHANGED,OnSelectChanged) DUI_ON_MSGTYPE(DUI_MSGTYPE_ITEMCLICK,OnItemClick) DUI_END_MESSAGE_MAP()
前面介绍了Default属性,属于全局属性,而字体也是全局属性,也是定义到一级子节点。 <Font name="20号字体" size="20" bold="false" italic="false" /> <Font name="15号字体" size="15" bold="false" italic="false" /> 序号从0开始,上述顺序中,第0个字体就是name为【20号字体】的字体,所以如果想用这个字体,只需要在控件的属性里指定字体序号即可,如: <Button text="字体测试" font="0"/>
1. 怎么设置标题栏区域? 只需在XML的Window节点加上caption=”0,0,0,32”即可,其中32是指从窗口顶部开始,往下32个像素的区域,都设置成标题栏,这样就可以点击标题栏拖动窗口,或者双击最大化了。 <Window size="800,600" caption="0,0,0,32" > 不过可以发现有些Demo的标题栏文字区域不能拖动,比如360Demo,那是因为它的文字区域用的是Text,这里必须换成Label,或者将控件禁用(添加属性 enable=”false”),否则点击文字区域无法移动标题栏。
下面我们介绍一下duilib的另一种特性,那就是可以定制默认样式,这样做有什么好处呢?
CDuiString的bug (重温了一下 Effective C++,发现这就是条款24所指出的问题,看来读书百遍不如写代码一遍啊)
参考: ref:http://www.codeproject.com/Articles/43653/Visual-C-Express-Custom-Wizard