作为一名星级菜鸟,问这个问题是有点掉架,可几天来一直没找到简单有效的实现方法,问题如下:
前几天问过一次,无奈没人能解!今天加分重新提问之,第一个解者当即得100分!
要求实现不能过于复杂,20行代码以内吧。如何将CImageList中指定位置的图像显示到一个CStatic中?
要求有实现的代码。
比如将每二张图片显示到CStatic控件m_stc中。

解决方案 »

  1.   

    晕菜,你为什么不用CPictureHolder?
      

  2.   

    如下可以:void CMyAppEDlg::OnBnClickedButton2()
    {
    // TODO: 在此添加控件通知处理程序代码
    //AfxGetMainWnd()->SendMessage(WM_CLOSE);
    CImageList * myImageList=new CImageList();
    ASSERT(myImageList!=NULL);
    myImageList->Create(32,32,ILC_COLOR32,4,4);
    myImageList->SetBkColor(RGB(255,255,255));
    myImageList->Add(::ExtractIcon(theApp.m_hInstance,"EXPLORER.EXE",0));
    myImageList->Add(::ExtractIcon(theApp.m_hInstance,"shell32.dll",17)); CDC *p = GetDlgItem(IDC_STATIC)->GetDC();
    GetDlgItem(IDC_STATIC)->SetWindowText(NULL);
    HICON hIcon = myImageList->ExtractIcon(0);
    p->DrawIcon(0, 0, hIcon);
    }
      

  3.   

    改一下, 程序里theApp.LoadIcon(ID)也是可以的,修改后如下:void CMyAppEDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    CImageList * myImageList=new CImageList();
    ASSERT(myImageList!=NULL);
    myImageList->Create(32,32,ILC_COLOR32,4,4);
    myImageList->SetBkColor(RGB(255,255,255));

    myImageList->Add(::ExtractIcon(theApp.m_hInstance,"EXPLORER.EXE",1));
    myImageList->Add(::ExtractIcon(theApp.m_hInstance,"shell32.dll",17));
    myImageList->Add(theApp.LoadIcon(IDI_ICON1)); GetDlgItem(IDC_STATIC)->SetWindowText(NULL); CDC *p = GetDlgItem(IDC_STATIC)->GetDC(); HICON hIcon = myImageList->ExtractIcon(2);
    p->DrawIcon(0, 0, hIcon);
    }
      

  4.   

    CImageList 不是有
    BOOL Draw( CDC* pdc, int nImage, POINT pt, UINT nStyle );吗?
      

  5.   

    多谢 hbxtlhx(下着春雨的天) !!
    一个ExtractIcon函数就搞定了。
    唉,自叹不如啊