GRIDCTRL如何在单元格设置图片

qq_26868981 2017-10-24 03:46:04
果然是一个好难的控件,我找到了SetImage(int nImage),SetImageList(CImageList* pList), SetItemImage(int nRow, int nCol, int iImage),但是,还是不知道怎么让表格显示出图片。
...全文
420 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2017-10-28
  • 打赏
  • 举报
回复

//
BOOL CMainFrame::GetBitmapFromImageList(CDC* pDC,CImageList *imglist,int nIndex,CBitmap &bmp)
{
	HICON hIcon = imglist->ExtractIcon(nIndex);
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	bmp.CreateCompatibleBitmap(pDC,16,16);
	CBitmap* pOldBmp = memDC.SelectObject(&bmp);
	CBrush brush ;
	brush.CreateSolidBrush(RGB(255,255,0));//yellow
	::DrawIconEx(memDC.GetSafeHdc(),0,0,hIcon,16,16,0,(HBRUSH)brush,DI_NORMAL);
// to screen
//	pDC->BitBlt(260,10,16,16,&memDC,0,0,SRCCOPY);
// free
	memDC.SelectObject(pOldBmp);
	memDC.DeleteDC();
// the icon is not longer needed
	DestroyIcon(hIcon);
//
	return(TRUE);
}
调用:
void CMainFrame::OnDrawicon() 
{
	// TODO: Add your command handler code here
static int n=0;
	CDC *pDC=GetDC();
// draw
	CBitmap bmp;
	GetBitmapFromImageList(pDC,&tree_imageList,n,bmp);
// bmp OK,Redraw it!
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	CBitmap* pOldBmp = memDC.SelectObject(&bmp);
// 
	pDC->BitBlt(300,10,16,16,&memDC,0,0,SRCCOPY);
	memDC.SelectObject(pOldBmp);
//
	n++;
	if(n>=4) n=0;
//
	ReleaseDC(pDC);
}
schlafenhamster 2017-10-27
  • 打赏
  • 举报
回复
用下面代码 查查 m_imList

BOOL Cxxxx::GetBitmapFromImageList(CDC* pDC,CImageList *imglist,int nIndex,CBitmap &bmp)
{
	HICON hIcon = imglist->ExtractIcon(nIndex);
	CDC dc;
	dc.CreateCompatibleDC(pDC);
	bmp.CreateCompatibleBitmap(pDC,m_iconX,m_iconY);
	CBitmap* pOldBmp = dc.SelectObject(&bmp);
	CBrush brush ;
	brush.CreateSolidBrush(GetSysColor(COLOR_MENU));
	::DrawIconEx(
		dc.GetSafeHdc(),
		0,
		0,
		hIcon,
		m_iconX,
		m_iconY,
		0,
		(HBRUSH)brush,
		DI_NORMAL
		);
	dc.SelectObject( pOldBmp );
	dc.DeleteDC();
	// the icon is not longer needed
	DestroyIcon(hIcon);
	return(TRUE);
}
qq_26868981 2017-10-27
  • 打赏
  • 举报
回复
引用 4 楼 qq_26868981 的回复:
你能给我一个完整的小例子么
qq_26868981 2017-10-27
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
如果是 // GridCtrl.h : header file // // MFC Grid Control - main header // // Written by Chris Maunder <chris@codeproject.com> // Copyright (c) 1998-2005. All Rights Reserved. 那么 初始化时 ///////////////////////////////////////////////////////////////////////// // initialise grid properties ///////////////////////////////////////////////////////////////////////// m_ImageList.Create(MAKEINTRESOURCE(IDB_IMAGES), 16, 1, RGB(255,255,255)); m_Grid.SetImageList(&m_ImageList); m_Grid.EnableDragAndDrop(TRUE); m_Grid.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0));
你的意思是建立一个bitmap的链表,再和grid关联,然后加上你那两句话,直接调用SetItemImage(int nRow, int nCol, int iImage)就可以了是吗?虽然我加入bitmap的方法和你说的不一样,但是这样做没有图片显示出来。我加载图片是下面这样的。 m_imList.Create(28,28,ILC_COLOR,0,28); //创建bitmaplist ////加入bitmap CBitmap *pBmp; pBmp=new CBitmap(); pBmp->LoadBitmap(IDB_BITMAP1); m_imList.Add(pBmp,RGB(0,0,0)); delete pBmp;
schlafenhamster 2017-10-27
  • 打赏
  • 举报
回复
对cell 还要SetItemImage(int nRow, int nCol, int iImage), int iImage 就是 m_Grid.SetImageList(&m_ImageList); 中的 index
qq_26868981 2017-10-27
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
如果是 // GridCtrl.h : header file // // MFC Grid Control - main header // // Written by Chris Maunder <chris@codeproject.com> // Copyright (c) 1998-2005. All Rights Reserved. 那么 初始化时 ///////////////////////////////////////////////////////////////////////// // initialise grid properties ///////////////////////////////////////////////////////////////////////// m_ImageList.Create(MAKEINTRESOURCE(IDB_IMAGES), 16, 1, RGB(255,255,255)); m_Grid.SetImageList(&m_ImageList); m_Grid.EnableDragAndDrop(TRUE); m_Grid.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0));
不行啊
schlafenhamster 2017-10-24
  • 打赏
  • 举报
回复
如果是 // GridCtrl.h : header file // // MFC Grid Control - main header // // Written by Chris Maunder <chris@codeproject.com> // Copyright (c) 1998-2005. All Rights Reserved. 那么 初始化时 ///////////////////////////////////////////////////////////////////////// // initialise grid properties ///////////////////////////////////////////////////////////////////////// m_ImageList.Create(MAKEINTRESOURCE(IDB_IMAGES), 16, 1, RGB(255,255,255)); m_Grid.SetImageList(&m_ImageList); m_Grid.EnableDragAndDrop(TRUE); m_Grid.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0));

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧