如何在ListCtrlEx(Not ListCtrl)项目中绘制图像? [英] How to draw images inside ListCtrlEx (Not ListCtrl) items?
问题描述
最近我使用的是ListCtrlEx (不是ListCtrl)。我从
获得示例演示 某些网站(此处不允许发布链接)。为了在列表框中的项目中绘制图像,我在ListCtrlExDemoDlg.cpp的OnInitialDialog中进行了一些更改,
添加了一些用InsertPic和AddImages命名的函数。但我看不到列表框中的任何图片,谁可以帮助我呢?我的编译环境是vs 2010. 或者
可以给我一些完整的演示?谢谢。
全局变量:
ListCtrlEx :: CListCtrlEx m_list;
CImageList m_imList;
BOOL CListCtrlExDemoDlg :: OnInitDialog()
{
CDialog :: OnInitDialog();
//添加"关于......"菜单项到系统菜单。
// IDM_ABOUTBOX必须在系统命令范围内。
< span lang ="EN-US"style ="font-size:9.5pt; font-family:新宋体"> ASSERT((IDM_ABOUTBOX& 0xFFF0)== IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX< 0xF000);
CMenu * pSysMenu = GetSystemMenu(FALSE);
&NBSP;&NBSP;&NBSP;
if (pSysMenu!= NULL)
{
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; CString strAboutMenu;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; strAboutMenu.LoadString(IDS_ABOUTBOX);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;
if (!strAboutMenu.IsEmpty())
{
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; pSysMenu-> AppendMenu(MF_SEPARATOR);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; pSysMenu-> AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
&NBSP;&NBSP; }
&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP;
//设置此对话框的图标。 框架自动执行此操作
&NBSP;&NBSP;&NBSP;
// 当应用程序的主窗口不是对话框时
SetIcon(m_hIcon,TRUE);
//设置大图标
SetIcon(m_hIcon,FALSE);
//设置小图标
m_list.ModifyStyle(0,LVS_SINGLESEL | LVS_REPORT | LVS_SHOWSELALWAYS);
m_list.SetExtendedStyle(m_list.GetExtendedStyle()| LVS_EX_FULLROWSELECT);
&NBSP;&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP; InsertPicAndWord();
返回 TRUE; //返回TRUE 除非您将焦点设置为控件
}
void CListCtrlExDemoDlg :: InsertPic()
{
m_list.ModifyStyle(0,LVS_SINGLESEL | LVS_REPORT | LVS_SHOWSELALWAYS);
m_list.SetExtendedStyle(m_list.GetExtendedStyle());
DWORD dwStyle;
&NBSP;&NBSP;&NBSP; dwStyle = m_list.GetExtendedStyle();
&NBSP;&NBSP;&NBSP; dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_SUBITEMIMAGES;
&NBSP;&NBSP;&NBSP; m_list.SetExtendedStyle(dwStyle);&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP; AddImages();
&NBSP;&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP; CRect mRect;
&NBSP;&NBSP;&NBSP; m_list.GetWindowRect(安培; mRect);
&NBSP;&NBSP;&NBSP;
int length = mRect.Width();
m_list.InsertColumn(0,L " name1" ,length / 4,ListCtrlEx :: Normal,LVCFMT_CENTER,ListCtrlEx :: SortByString,-1);
m_list.InsertColumn(1,L " name2" ,length / 8,ListCtrlEx :: Normal,LVCFMT_CENTER,ListCtrlEx :: SortByString,-1);
m_list.InsertColumn(2,L " name3" ,length / 8,ListCtrlEx :: Normal,LVCFMT_CENTER,ListCtrlEx :: SortByString,-1);
&NBSP;&NBSP;&NBSP;
int nRow;
for ( int lsn = 0; lsn< 20; lsn ++)
{
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; CString csn = _T("" );
csn.Format(_T("%d" ),lsn + 1);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; LVITEM lvItem = {0};
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; lvItem.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_STATE;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; lvItem.iItem = lsn;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; lvItem.iImage = 2;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; lvItem.iSubItem = 0;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; nRow = m_list.InsertItem(& lvItem);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; m_list.SetItemText(nRow,1,CSN);&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; m_list.SetItemText(nRow,2,_T(" Eastmount 制?作 Á ¡ " ));
}
&NBSP;&NBSP;
return ;
}
void
CListCtrlExDemoDlg :: AddImages()
{
m_imList.Create(14,14,ILC_COLOR24,10,20);
CBitmap * pBmp = NULL;
&NBSP;&NBSP;&NBSP; pBmp =
new CBitmap();
;&NBSP; pBmp-> LoadBitmap(IDB_BITMAP1);
&NBSP;&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP; m_imList.Add(pBmp,RGB(0,0,0));&NBSP;
&NBSP;&NBSP;&NBSP;
delete pBmp;
;&NBSP;
//
pBmp =
new CBitmap();
;&NBSP; pBmp-> LoadBitmap(IDB_BITMAP2);
&NBSP;&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP; m_imList.Add(pBmp,RGB(0,0,0));&NBSP;
&NBSP;&NBSP;&NBSP;
删除 pBmp;
//
pBmp =
new CBitmap();
;&NBSP; pBmp-> LoadBitmap(IDB_BITMAP3);
&NBSP;&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP; m_imList.Add(pBmp,RGB(0,0,0));&NBSP;
&NBSP;&NBSP;&NBSP;
delete pBmp;
< p align ="left"> m_list.SetImageList(& m_imList,LVSIL_SMALL);
&NBSP;&NBSP;&NBSP;
}
嗨tpjk,
此论坛正在讨论Visual Studio WPF / SL Designer,Visual Studio Guidance Automation Toolkit,开发人员文档和帮助系统以及Visual Studio编辑器。
您的问题与C ++开发有关我会将此主题移至相应的论坛以获得专业答案。
此致
奥斯卡跨度> 跨度>
Recently I am using ListCtrlEx (NOT ListCtrl). And I got the example demo from
some website (It is not allowed to publish link here). To draw images in the item in the List Box I made some change in OnInitialDialog of ListCtrlExDemoDlg.cpp, add some function named with InsertPic and AddImages. But I can not see any pictures in the List Box, who can help me with it? My compile environment is vs 2010. or who can give me some complete demo? Thank you.
Global variable:
ListCtrlEx::CListCtrlEx m_list;
CImageList m_imList;
BOOL CListCtrlExDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_list.ModifyStyle(0, LVS_SINGLESEL|LVS_REPORT|LVS_SHOWSELALWAYS);
m_list.SetExtendedStyle(m_list.GetExtendedStyle() |LVS_EX_FULLROWSELECT );
InsertPicAndWord();
return TRUE; // return TRUE unless you set the focus to a control
}
void CListCtrlExDemoDlg::InsertPic()
{
m_list.ModifyStyle(0, LVS_SINGLESEL|LVS_REPORT|LVS_SHOWSELALWAYS);
m_list.SetExtendedStyle(m_list.GetExtendedStyle() );
DWORD dwStyle;
dwStyle = m_list.GetExtendedStyle();
dwStyle = dwStyle|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES ;
m_list.SetExtendedStyle(dwStyle);
AddImages();
CRect mRect;
m_list.GetWindowRect(&mRect);
int length = mRect.Width();
m_list.InsertColumn(0,L"name1",length / 4,ListCtrlEx::Normal,LVCFMT_CENTER,ListCtrlEx::SortByString,-1);
m_list.InsertColumn(1,L"name2",length / 8,ListCtrlEx::Normal,LVCFMT_CENTER,ListCtrlEx::SortByString,-1);
m_list.InsertColumn(2,L"name3",length / 8,ListCtrlEx::Normal,LVCFMT_CENTER,ListCtrlEx::SortByString,-1);
int nRow;
for(int lsn=0;lsn<20;lsn++)
{
CString csn=_T("");
csn.Format(_T("%d"),lsn+1);
LVITEM lvItem={0};
lvItem.mask = LVIF_IMAGE|LVIF_TEXT|LVIF_STATE;
lvItem.iItem = lsn;
lvItem.iImage = 2;
lvItem.iSubItem = 0;
nRow = m_list.InsertItem(&lvItem);
m_list.SetItemText(nRow,1,csn);
m_list.SetItemText(nRow,2,_T("Eastmount制?作Á¡Â"));
}
return;
}
void
CListCtrlExDemoDlg::AddImages()
{
m_imList.Create(14,14,ILC_COLOR24,10,20);
CBitmap * pBmp = NULL;
pBmp = new CBitmap();
pBmp->LoadBitmap(IDB_BITMAP1);
m_imList.Add(pBmp,RGB(0,0,0));
delete pBmp;
//
pBmp = new CBitmap();
pBmp->LoadBitmap(IDB_BITMAP2);
m_imList.Add(pBmp,RGB(0,0,0));
delete pBmp;
//
pBmp = new CBitmap();
pBmp->LoadBitmap(IDB_BITMAP3);
m_imList.Add(pBmp,RGB(0,0,0));
delete pBmp;
m_list.SetImageList(&m_imList,LVSIL_SMALL);
}
Hi tpjk,
This forum is discussing Visual Studio WPF/SL Designer, Visual Studio Guidance Automation Toolkit, Developer Documentation and Help System, and Visual Studio Editor.
Your issue is related to C++ development I will move this thread to corresponding forum for a professional answer.
Sincerely,
Oscar
这篇关于如何在ListCtrlEx(Not ListCtrl)项目中绘制图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!