如何在ListCtrlEx(Not ListCtrl)项目中绘制图像? [英] How to draw images inside ListCtrlEx (Not ListCtrl) items?

查看:102
本文介绍了如何在ListCtrlEx(Not ListCtrl)项目中绘制图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近我使用的是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆