本文整理汇总了C++中CImageList::GetImageCount方法的典型用法代码示例。如果您正苦于以下问题:C++ CImageList::GetImageCount方法的具体用法?C++ CImageList::GetImageCount怎么用?C++ CImageList::GetImageCount使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CImageList
的用法示例。
在下文中一共展示了CImageList::GetImageCount方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawImage
INT CFlatHeaderCtrl::DrawImage(CDC* pDC, CRect rect, LPHDITEM lphdi, BOOL bRight)
{
CImageList* pImageList = GetImageList();
INT iWidth = 0;
if(lphdi->mask&HDI_IMAGE && lphdi->fmt&HDF_IMAGE)
{
ASSERT(pImageList);
ASSERT(lphdi->iImage>=0 && lphdi->iImage<pImageList->GetImageCount());
if(rect.Width()>0)
{
POINT point;
point.y = rect.CenterPoint().y - (m_sizeImage.cy>>1);
if(bRight)
point.x = rect.right - m_sizeImage.cx;
else
point.x = rect.left;
SIZE size;
size.cx = rect.Width()<m_sizeImage.cx ? rect.Width():m_sizeImage.cx;
size.cy = m_sizeImage.cy;
pImageList->DrawIndirect(pDC, lphdi->iImage, point, size, CPoint(0, 0));
iWidth = m_sizeImage.cx;
}
示例2: _CreateMeshPanel
bool CMainFrame::_CreateMeshPanel( CImageList& imageList, Ogre::StringVectorPtr& meshNames )
{
if (!m_resourceSelector.Create(WS_CHILD|WS_VISIBLE, CRect(200,100,400,300), this, IDS_ResourceSelector))
return false;
m_resourceSelector.SetOwner(this);
m_resourceSelector.SetIconSize(CSize(MESH_ICON_SIZE, MESH_ICON_SIZE));
CXTPTaskPanelGroup* pGroup = m_resourceSelector.AddGroup(IDS_ResourceSelector_Mesh);
int itemCount = imageList.GetImageCount();
m_resourceSelector.GetImageManager()->SetImageList(imageList.Detach(), 0);
for (int i=0; i<itemCount; ++i)
{
std::wstring meshname(Utility::EngineToUnicode(meshNames->at(i)));
meshname.erase(meshname.length()-5);
// Add folder entries
CXTPTaskPanelGroupItem* pItem = pGroup->AddLinkItem(i, 0);
pItem->SetIconIndex(i);
pItem->SetCaption(meshname.c_str());
}
m_resourceSelector.SetBehaviour(xtpTaskPanelBehaviourList);
m_resourceSelector.SetSelectItemOnFocus(TRUE);
m_resourceSelector.SetMultiColumn(TRUE);
m_resourceSelector.SetColumnWidth(RES_SELECTOR_COLUMN_WIDTH);
m_resourceSelector.GetAt(0)->SetExpanded(TRUE);
//拖拽支持
m_resourceSelector.AllowDrag(xtpTaskItemAllowDragCopyOutsideControl);
return true;
}
示例3: ClearImageList
void CFolderListCtrl::ClearImageList()
{
CImageList * pImgList = GetImageList( LVSIL_NORMAL );
if( pImgList )
for( int i = pImgList->GetImageCount() - 1; i > 0; i-- )
pImgList->Remove( i );
}
示例4: ChangeToolbarBitmap
void CMuleToolbarCtrl::ChangeToolbarBitmap(const CString& path, bool bRefresh)
{
bool bResult = false;
CImageList ImageList;
CEnBitmap Bitmap;
if (!path.IsEmpty() && Bitmap.LoadImage(path))
{
BITMAP bm = {0};
Bitmap.GetObject(sizeof(bm), &bm);
if (bm.bmWidth == NUM_BUTTON_BITMAPS*m_sizBtnBmp.cx && bm.bmHeight == m_sizBtnBmp.cy)
{
bool bAlpha = bm.bmBitsPixel > 24;
if (ImageList.Create(m_sizBtnBmp.cx, bm.bmHeight, bAlpha ? ILC_COLOR32 : (theApp.m_iDfltImageListColorFlags | ILC_MASK), 0, 1))
{
ImageList.Add(&Bitmap, bAlpha ? 0xFF000000 : RGB(255, 0, 255));
CImageList* pimlOld = SetImageList(&ImageList);
ImageList.Detach();
if (pimlOld)
pimlOld->DeleteImageList();
bResult = true;
}
}
Bitmap.DeleteObject();
}
// if image file loading or image list creation failed, create default image list.
if (!bResult)
{
// load from icon ressources
ImageList.Create(m_sizBtnBmp.cx, m_sizBtnBmp.cy, theApp.m_iDfltImageListColorFlags | ILC_MASK, 0, 1);
ImageList.Add(CTempIconLoader(_T("CONNECT"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("DISCONNECT"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("STOPCONNECTING"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("KADEMLIA"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("SERVER"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("TRANSFER"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("SEARCH"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("SharedFiles"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("MESSAGES"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("IRC"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("STATISTICS"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("PREFERENCES"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("TOOLS"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ImageList.Add(CTempIconLoader(_T("HELP"), m_sizBtnBmp.cx, m_sizBtnBmp.cy));
ASSERT( ImageList.GetImageCount() == NUM_BUTTON_BITMAPS );
CImageList* pimlOld = SetImageList(&ImageList);
ImageList.Detach();
if (pimlOld)
pimlOld->DeleteImageList();
}
if (bRefresh)
{
UpdateBackground();
Invalidate();
Refresh();
}
}
示例5: GetImage
UINT DllWrapper::GetImage(CImageList & il, UINT nID)
{
CBitmap bmp;
HBITMAP hBitmap = LoadBitmap(m_hInstance,MAKEINTRESOURCE(nID));
CBitmap* pBmp = bmp.FromHandle(hBitmap);
int ret = il.Add(pBmp,CXTPImageManager::GetBitmapMaskColor(*pBmp, CPoint(0, 0)));
return il.GetImageCount();
}
示例6: Py_BuildValue
// @pymethod int|PyCImageList|GetImageCount|Retrieves the number of images in an image list.
PyObject *PyCImageList_GetImageCount( PyObject *self, PyObject *args )
{
CImageList *pList;
if (!(pList=PyCImageList::GetImageList(self)))
return NULL;
CHECK_NO_ARGS2(args, "GetImageCount");
GUI_BGN_SAVE;
int rc = pList->GetImageCount();
GUI_END_SAVE;
return Py_BuildValue("i", rc);
}
示例7: finder
bool
CToolWindow::TryToIntegrate(HWND hWnd)
{
if (m_hWnd) return true; // this is singleton, integrate only first time
CFindWnd finder(hWnd, TOOLBARCLASSNAME); // TODO: do it safer
if (!finder.m_hWnd) return false;
SubclassWindow(finder.m_hWnd);
if (!::IsWindow(this->m_hWnd)) return true; // HACK
CImageList il = GetImageList();
m_IconBase = il.GetImageCount();
il.AddIcon(LoadIcon(GetBaseModule().GetModuleInstance(), MAKEINTRESOURCE(IDI_XREFRESHA)));
il.AddIcon(LoadIcon(GetBaseModule().GetModuleInstance(), MAKEINTRESOURCE(IDI_XREFRESHZ)));
return true;
}
示例8: AppendStateImages
//------------------------------------------------------------------------
//! Appends the checkbox state images to the list control image list
//!
//! @param owner The list control adding column
//! @param imagelist The image list assigned to the list control
//! @return Image index where the two state images (unchecked/checked) was inserted
//------------------------------------------------------------------------
int CGridColumnTraitImage::AppendStateImages(CGridListCtrlEx& owner, CImageList& imagelist)
{
if (!(owner.GetExtendedStyle() & LVS_EX_SUBITEMIMAGES))
owner.SetExtendedStyle(owner.GetExtendedStyle() | LVS_EX_SUBITEMIMAGES);
if (!imagelist)
imagelist.Create(16, 16, ILC_COLOR16 | ILC_MASK, 1, 0);
if (!owner.GetImageList(LVSIL_SMALL))
owner.SetImageList(&imagelist, LVSIL_SMALL);
VERIFY( owner.GetImageList(LVSIL_SMALL)==&imagelist );
bool createdStateImages = false;
CImageList* pStateList = owner.GetImageList(LVSIL_STATE);
if (pStateList==NULL)
{
if (!(owner.GetExtendedStyle() & LVS_EX_CHECKBOXES))
{
createdStateImages = true;
owner.SetExtendedStyle(owner.GetExtendedStyle() | LVS_EX_CHECKBOXES);
pStateList = owner.GetImageList(LVSIL_STATE);
}
}
int imageCount = -1;
ASSERT(pStateList!=NULL);
if (pStateList!=NULL)
{
imageCount = imagelist.GetImageCount();
HICON uncheckedIcon = pStateList->ExtractIcon(0);
imagelist.Add(uncheckedIcon);
DestroyIcon(uncheckedIcon);
HICON checkedIcon = pStateList->ExtractIcon(1);
imagelist.Add(checkedIcon);
DestroyIcon(checkedIcon);
}
if (createdStateImages)
owner.SetExtendedStyle(owner.GetExtendedStyle() & ~LVS_EX_CHECKBOXES);
return imageCount;
}
示例9: ResizeAllListCtrlCols
void CCommonAppUtils::ResizeAllListCtrlCols(CListCtrl * pListCtrl)
{
int maxcol = ((CHeaderCtrl*)(pListCtrl->GetDlgItem(0)))->GetItemCount()-1;
int nItemCount = pListCtrl->GetItemCount();
TCHAR textbuf[MAX_PATH] = { 0 };
CHeaderCtrl * pHdrCtrl = (CHeaderCtrl*)(pListCtrl->GetDlgItem(0));
if (pHdrCtrl)
{
int imgWidth = 0;
CImageList * pImgList = pListCtrl->GetImageList(LVSIL_SMALL);
if ((pImgList)&&(pImgList->GetImageCount()))
{
IMAGEINFO imginfo;
pImgList->GetImageInfo(0, &imginfo);
imgWidth = (imginfo.rcImage.right - imginfo.rcImage.left) + 3; // 3 pixels between icon and text
}
for (int col = 0; col <= maxcol; col++)
{
HDITEM hdi = {0};
hdi.mask = HDI_TEXT;
hdi.pszText = textbuf;
hdi.cchTextMax = _countof(textbuf);
pHdrCtrl->GetItem(col, &hdi);
int cx = pListCtrl->GetStringWidth(hdi.pszText)+20; // 20 pixels for col separator and margin
for (int index = 0; index<nItemCount; ++index)
{
// get the width of the string and add 14 pixels for the column separator and margins
int linewidth = pListCtrl->GetStringWidth(pListCtrl->GetItemText(index, col)) + 14;
// add the image size
if (col == 0)
linewidth += imgWidth;
if (cx < linewidth)
cx = linewidth;
}
pListCtrl->SetColumnWidth(col, cx);
}
}
}
示例10: AppendStateImages
//------------------------------------------------------------------------
//! Appends the checkbox state images to the list control image list
//!
//! @param owner The list control adding column
//! @param imagelist The image list assigned to the list control
//! @return Image index where the two state images (unchecked/checked) was inserted
//------------------------------------------------------------------------
int CGridColumnTraitImage::AppendStateImages(CGridListCtrlEx& owner, CImageList& imagelist)
{
if (!(owner.GetExtendedStyle() & LVS_EX_SUBITEMIMAGES))
owner.SetExtendedStyle(owner.GetExtendedStyle() | LVS_EX_SUBITEMIMAGES);
if (!imagelist)
imagelist.Create(16, 16, ILC_COLOR16 | ILC_MASK, 1, 0);
if (!owner.GetImageList(LVSIL_SMALL))
owner.SetImageList(&imagelist, LVSIL_SMALL);
VERIFY(owner.GetImageList(LVSIL_SMALL) == &imagelist);
bool createdStateImages = false;
CImageList* pStateList = owner.GetImageList(LVSIL_STATE);
if (pStateList == NULL)
{
if (!(owner.GetExtendedStyle() & LVS_EX_CHECKBOXES))
{
createdStateImages = true;
owner.SetExtendedStyle(owner.GetExtendedStyle() | LVS_EX_CHECKBOXES);
pStateList = owner.GetImageList(LVSIL_STATE);
}
}
int imageCount = -1;
ASSERT(pStateList != NULL);
if (pStateList != NULL && pStateList->GetImageCount() >= 2)
{
imageCount = imagelist.GetImageCount();
// Get the icon size of current imagelist
CSize iconSize(16, 16);
if (imageCount > 0)
{
IMAGEINFO iconSizeInfo = { 0 };
VERIFY(imagelist.GetImageInfo(0, &iconSizeInfo));
iconSize =
CSize(iconSizeInfo.rcImage.right - iconSizeInfo.rcImage.left,
iconSizeInfo.rcImage.bottom - iconSizeInfo.rcImage.top);
}
// Scale the icon-position if necessary
CPoint iconPos(1, 0); // +1 pixel to avoid overlap with left-grid-line
{
IMAGEINFO stateSizeInfo = { 0 };
VERIFY(pStateList->GetImageInfo(0, &stateSizeInfo));
int stateIconHeight = stateSizeInfo.rcImage.bottom - stateSizeInfo.rcImage.top;
if (iconSize.cy > stateIconHeight)
iconPos.y = (iconSize.cy - stateIconHeight) / 2;
}
// Redraw the state-icon to match the icon size of the current imagelist (without scaling image)
CClientDC clienDC(&owner);
CDC memDC;
VERIFY(memDC.CreateCompatibleDC(&clienDC));
CBitmap dstBmp;
VERIFY(dstBmp.CreateCompatibleBitmap(&clienDC, iconSize.cx, iconSize.cy));
CBitmap* pBmpOld = memDC.SelectObject(&dstBmp);
COLORREF oldBkColor = pStateList->SetBkColor(imagelist.GetBkColor());
CBrush brush(imagelist.GetBkColor());
memDC.FillRect(CRect(0, 0, iconSize.cx, iconSize.cy), &brush);
VERIFY(pStateList->Draw(&memDC, 0, iconPos, ILD_NORMAL));
memDC.SelectObject(pBmpOld);
VERIFY(imagelist.Add(&dstBmp, oldBkColor) != -1);
pBmpOld = memDC.SelectObject(&dstBmp);
memDC.FillRect(CRect(0, 0, iconSize.cx, iconSize.cy), &brush);
VERIFY(pStateList->Draw(&memDC, 1, iconPos, ILD_NORMAL));
memDC.SelectObject(pBmpOld);
VERIFY(imagelist.Add(&dstBmp, oldBkColor) != -1);
pStateList->SetBkColor(oldBkColor);
}
if (createdStateImages)
owner.SetExtendedStyle(owner.GetExtendedStyle() & ~LVS_EX_CHECKBOXES);
return imageCount;
}
示例11: DrawItemEntry
void CXTPSkinObjectHeader::DrawItemEntry(CDC* pDC, int nIndex, CRect rcItem, int nState)
{
CXTPSkinManagerClass* pClass = GetSkinClass();
CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)this;
CImageList* pImageList = CImageList::FromHandle((HIMAGELIST)
::SendMessage(pHeaderCtrl->m_hWnd, HDM_GETIMAGELIST, 0, 0L));
// Set up the header item order array.
HD_ITEM hdi;
::ZeroMemory(&hdi, sizeof(HD_ITEM));
hdi.fmt = HDF_STRING | HDF_IMAGE;
hdi.mask = HDI_TEXT | HDI_FORMAT | HDI_IMAGE | HDI_LPARAM;
// Get the header item text and format
CString strCaption;
LPTSTR pszText = strCaption.GetBuffer(256);
pszText[0] = 0;
hdi.pszText = pszText;
hdi.cchTextMax = 255;
BOOL bResult = pHeaderCtrl->GetItem(nIndex, &hdi);
strCaption.ReleaseBuffer();
#ifdef _UNICODE
if (!bResult)
{
char tText[256];
tText[0] = 0;
HD_ITEMA hdia;
::ZeroMemory(&hdia, sizeof(HD_ITEMA));
hdia.fmt = HDF_STRING | HDF_IMAGE;
hdia.mask = HDI_TEXT | HDI_FORMAT | HDI_IMAGE | HDI_LPARAM;
// Get the header item text and format
hdia.pszText = tText;
hdia.cchTextMax = 255;
::SendMessage(pHeaderCtrl->m_hWnd, HDM_GETITEMA, nIndex, (LPARAM)&hdia);
strCaption = tText;
hdi.fmt = hdia.fmt;
hdi.iImage = hdia.iImage;
hdi.lParam = hdia.lParam;
}
#else
bResult;
#endif
if (hdi.fmt & HDF_OWNERDRAW)
{
DRAWITEMSTRUCT dis;
dis.CtlType = ODT_HEADER;
dis.CtlID = (UINT)GetDlgCtrlID();
dis.itemID = nIndex;
dis.itemAction = ODA_DRAWENTIRE;
dis.itemState = (nState == HIS_PRESSED) ? ODS_SELECTED : 0;
dis.hwndItem = m_hWnd;
dis.hDC = pDC->GetSafeHdc();
dis.rcItem = rcItem;
dis.itemData = hdi.lParam;
// Now send it off to my parent...
if (GetParent()->SendMessage(WM_DRAWITEM, dis.CtlID,
(LPARAM)(DRAWITEMSTRUCT*)&dis))
{
return;
}
}
CRect rcText(rcItem);
if (pImageList && (hdi.fmt & HDF_IMAGE) && hdi.iImage >= 0 && hdi.iImage < pImageList->GetImageCount())
{
int iBitmapMargin = (int)SendMessage(HDM_GETBITMAPMARGIN);
if (iBitmapMargin == 0)
iBitmapMargin = GetMetrics()->m_cxEdge * 3;
int cxBitmap = 16, cyBitmap = 16;
ImageList_GetIconSize(pImageList->GetSafeHandle(), &cxBitmap, &cyBitmap);
CPoint pt(rcItem.left + iBitmapMargin, (rcItem.bottom + rcItem.top - cyBitmap) / 2);
if (hdi.fmt & HDF_BITMAP_ON_RIGHT)
{
CSize sz = pDC->GetTextExtent(strCaption);
pt.x += sz.cx + iBitmapMargin + 9;
if (pt.x + cxBitmap > rcItem.right - 3)
pt.x = max(rcItem.left + 6, rcItem.right - 3 - cxBitmap);
if (nState == HIS_PRESSED)
pt.x ++;
pImageList->Draw(pDC, hdi.iImage, pt, ILD_TRANSPARENT);
rcText.right = pt.x + 6;
}
//.........这里部分代码省略.........
示例12: RefillPageTree
void CTreePropSheet::RefillPageTree()
{
if (!IsWindow(m_hWnd))
return;
m_pwndPageTree->DeleteAllItems();
CTabCtrl *pTabCtrl = GetTabControl();
if (!IsWindow(pTabCtrl->GetSafeHwnd()))
{
ASSERT(FALSE);
return;
}
const int nPageCount = pTabCtrl->GetItemCount();
// rebuild image list
if (m_bTreeImages)
{
for (int i = m_Images.GetImageCount()-1; i >= 0; --i)
m_Images.Remove(i);
// add page images
CImageList *pPageImages = pTabCtrl->GetImageList();
if (pPageImages)
{
for (int nImage = 0; nImage < pPageImages->GetImageCount(); ++nImage)
{
HICON hIcon = pPageImages->ExtractIcon(nImage);
m_Images.Add(hIcon);
DestroyIcon(hIcon);
}
}
// add default images
if (m_DefaultImages.GetSafeHandle())
{
HICON hIcon;
// add default images
hIcon = m_DefaultImages.ExtractIcon(0);
if (hIcon)
{
m_Images.Add(hIcon);
DestroyIcon(hIcon);
}
hIcon = m_DefaultImages.ExtractIcon(1);
{
m_Images.Add(hIcon);
DestroyIcon(hIcon);
}
}
}
// insert tree items
for (int nPage = 0; nPage < nPageCount; ++nPage)
{
// Get title and image of the page
CString strPagePath;
TCITEM ti;
ZeroMemory(&ti, sizeof(ti));
ti.mask = TCIF_TEXT|TCIF_IMAGE;
ti.cchTextMax = MAX_PATH;
ti.pszText = strPagePath.GetBuffer(ti.cchTextMax);
ASSERT(ti.pszText);
if (!ti.pszText)
return;
pTabCtrl->GetItem(nPage, &ti);
strPagePath.ReleaseBuffer();
// Create an item in the tree for the page
HTREEITEM hItem = CreatePageTreeItem(ti.pszText);
ASSERT(hItem);
if (hItem)
{
m_pwndPageTree->SetItemData(hItem, nPage);
// set image
if (m_bTreeImages)
{
int nImage = ti.iImage;
if (nImage < 0 || nImage >= m_Images.GetImageCount())
nImage = m_DefaultImages.GetSafeHandle()? m_Images.GetImageCount()-1 : -1;
m_pwndPageTree->SetItemImage(hItem, nImage, nImage);
}
}
}
}
示例13: GetWndIcon
//------------------------------------------------------------------------//
HICON CBCGPGlobalUtils::GetWndIcon (CWnd* pWnd, BOOL* bDestroyIcon, BOOL bNoDefault)
{
#ifdef _BCGSUITE_
UNREFERENCED_PARAMETER(bNoDefault);
#endif
ASSERT_VALID (pWnd);
if (pWnd->GetSafeHwnd () == NULL)
{
return NULL;
}
if (bDestroyIcon != NULL)
{
*bDestroyIcon = FALSE;
}
HICON hIcon = pWnd->GetIcon (FALSE);
if (hIcon == NULL)
{
hIcon = pWnd->GetIcon (TRUE);
if (hIcon != NULL)
{
CImageList il;
il.Create (16, 16, ILC_COLOR32 | ILC_MASK, 0, 1);
il.Add (hIcon);
if (il.GetImageCount () == 1)
{
hIcon = il.ExtractIcon (0);
if (bDestroyIcon != NULL)
{
*bDestroyIcon = hIcon != NULL;
}
}
}
}
if (hIcon == NULL)
{
hIcon = (HICON)(LONG_PTR)::GetClassLongPtr(pWnd->GetSafeHwnd (), GCLP_HICONSM);
}
if (hIcon == NULL)
{
hIcon = (HICON)(LONG_PTR)::GetClassLongPtr(pWnd->GetSafeHwnd (), GCLP_HICON);
}
#ifndef _BCGSUITE_
if (hIcon == NULL && !bNoDefault &&
!pWnd->IsKindOf (RUNTIME_CLASS(CDialog)) && !pWnd->IsKindOf (RUNTIME_CLASS(CPropertySheet)))
{
hIcon = globalData.m_hiconApp;
if (bDestroyIcon != NULL)
{
*bDestroyIcon = FALSE;
}
}
#endif
return hIcon;
}
示例14: RefillPageTree
void CTreePropSheetBase::RefillPageTree()
{
if (!IsWindow(m_hWnd))
return;
// TreePropSheetEx: OnPageTreeSelChanging does not process message.
TreePropSheet::CIncrementScope RefillingPageTreeContentGuard( m_nRefillingPageTreeContent );
// TreePropSheetEx: End OnPageTreeSelChanging does not process message.
m_pwndPageTree->DeleteAllItems();
CTabCtrl *pTabCtrl = GetTabControl();
if (!IsWindow(pTabCtrl->GetSafeHwnd()))
{
ASSERT(FALSE);
return;
}
const int nPageCount = pTabCtrl->GetItemCount();
// rebuild image list
if (m_bTreeImages)
{
for (int i = m_Images.GetImageCount()-1; i >= 0; --i)
m_Images.Remove(i);
// add page images
CImageList *pPageImages = pTabCtrl->GetImageList();
if (pPageImages)
{
for (int nImage = 0; nImage < pPageImages->GetImageCount(); ++nImage)
{
HICON hIcon = pPageImages->ExtractIcon(nImage);
m_Images.Add(hIcon);
DestroyIcon(hIcon);
}
}
// add default images
if (m_DefaultImages.GetSafeHandle())
{
HICON hIcon;
// add default images
hIcon = m_DefaultImages.ExtractIcon(0);
if (hIcon)
{
m_Images.Add(hIcon);
DestroyIcon(hIcon);
}
hIcon = m_DefaultImages.ExtractIcon(1);
{
m_Images.Add(hIcon);
DestroyIcon(hIcon);
}
}
}
// insert tree items
for (int nPage = 0; nPage < nPageCount; ++nPage)
{
// Get title and image of the page
CString strPagePath;
TCITEM ti;
ZeroMemory(&ti, sizeof(ti));
ti.mask = TCIF_TEXT|TCIF_IMAGE;
ti.cchTextMax = MAX_PATH;
ti.pszText = strPagePath.GetBuffer(ti.cchTextMax);
ASSERT(ti.pszText);
if (!ti.pszText)
return;
pTabCtrl->GetItem(nPage, &ti);
strPagePath.ReleaseBuffer();
// Create an item in the tree for the page
HTREEITEM hItem = CreatePageTreeItem(ti.pszText);
ASSERT(hItem);
if (hItem)
{
m_pwndPageTree->SetItemData(hItem, nPage);
// set image
if (m_bTreeImages)
{
int nImage = ti.iImage;
if (nImage < 0 || nImage >= m_Images.GetImageCount())
nImage = m_DefaultImages.GetSafeHandle()? m_Images.GetImageCount()-1 : -1;
m_pwndPageTree->SetItemImage(hItem, nImage, nImage);
}
// Set font if disabled.
CPropertyPage* pPage = GetPage( nPage );
ASSERT( pPage );
if( NULL != pPage && !IsPageEnabled( pPage ) )
{
::SendMessage( m_pwndPageTree->GetSafeHwnd(), WMU_ENABLETREEITEM, (WPARAM)hItem, (LPARAM)GetSysColor(COLOR_GRAYTEXT) );
}
//.........这里部分代码省略.........
示例15: populate
void ToolBarCreator::populate(std::map <std::string, CToolBar*> wndtoolbar, Menu itemmenu, std::string parentmenu, IIdGenerator* idgenerator)
{
TBBUTTON btn;
CImageList* imageList = nullptr;
for (auto toolbar : wndtoolbar)
{
int btnCount = toolbar.second->GetToolBarCtrl().GetButtonCount();
if (toolbar.first == parentmenu)
{
switch (itemmenu.mMenuType)
{
case eMenuTypes::PopUp:
{
for (auto submenu : itemmenu.submenulist)
{
populate(wndtoolbar, submenu, parentmenu, idgenerator);
}
break;
}
/*if (itemmenu.mMenuType == eMenuTypes::PopUp)
{
for (auto submenu : itemmenu.submenulist)
{
populate(wndtoolbar, submenu, parentmenu, idgenerator);
}
}*/
case eMenuTypes::Separator:
{
ZeroMemory(&btn, sizeof(btn));
btn.fsStyle = TBBS_SEPARATOR;
toolbar.second->GetToolBarCtrl().InsertButton(btnCount, &btn);
break;
}
/*else if (itemmenu.mMenuType == eMenuTypes::Separator)
{
ZeroMemory(&btn, sizeof(btn));
btn.fsStyle = TBBS_SEPARATOR;
toolbar.second->GetToolBarCtrl().InsertButton(btnCount, &btn);
}*/
case eMenuTypes::MenuItem:
{
if (itemmenu.mToolbar.isToolButtonReq)
{
ZeroMemory(&btn, sizeof(btn));
toolbar.second->EnableDocking(CBRS_ALIGN_ANY);
imageList = toolbar.second->GetToolBarCtrl().GetImageList();
index = imageList->GetImageCount();
idgenerator->generateId(itemmenu.mId, idgenerator->id);
CBitmap* bmp = new CBitmap();
//Enabled image list
if (!FileExist(itemmenu.mToolbar.iconPathEnable.c_str()))
{
bmp->Attach(LoadImage(AfxGetInstanceHandle(), DEFAULT_IMAGE_PATH, IMAGE_BITMAP, 32, 32, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_LOADFROMFILE)));
}
else
{
bmp->Attach(LoadImage(AfxGetInstanceHandle(), itemmenu.mToolbar.iconPathEnable.c_str(), IMAGE_BITMAP, 32, 32, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_LOADFROMFILE)));
}
imageList->Add(bmp, RGB(255, 255, 255));
bmp->Detach();
btn.idCommand = idgenerator->id;
btn.iBitmap = index;
btn.fsStyle = TBSTYLE_BUTTON;
//Disabled image list
imageList = toolbar.second->GetToolBarCtrl().GetDisabledImageList();
index = imageList->GetImageCount();
if (!FileExist(itemmenu.mToolbar.iconPathDisable.c_str()))
{
bmp->Attach(LoadImage(AfxGetInstanceHandle(), itemmenu.mToolbar.iconPathEnable.c_str(), IMAGE_BITMAP, 32, 32, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_LOADFROMFILE)));
}
else
{
bmp->Attach(LoadImage(AfxGetInstanceHandle(), itemmenu.mToolbar.iconPathDisable.c_str(), IMAGE_BITMAP, 32, 32, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_LOADFROMFILE)));
}
imageList->Add(bmp, RGB(255, 255, 255));
bmp->Detach();
toolbar.second->GetToolBarCtrl().SetDisabledImageList(imageList);
btn.idCommand = idgenerator->id;
btn.iBitmap = index;
btn.fsStyle = TBSTYLE_BUTTON;
//Hotimage Image List
imageList = toolbar.second->GetToolBarCtrl().GetHotImageList();
index = imageList->GetImageCount();
if (!FileExist(itemmenu.mToolbar.iconPathHot.c_str()))
{
bmp->Attach(LoadImage(AfxGetInstanceHandle(), itemmenu.mToolbar.iconPathEnable.c_str(), IMAGE_BITMAP, 32, 32, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_LOADFROMFILE)));
}
else
{
bmp->Attach(LoadImage(AfxGetInstanceHandle(), itemmenu.mToolbar.iconPathHot.c_str(), IMAGE_BITMAP, 32, 32, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_LOADFROMFILE)));
//.........这里部分代码省略.........