在对话框中添加了一个CListCtrl,在OnInitialDlg()中往该列表框中添加Icon,
用VC制作的,不知为什么执行时打开对话框后显示的是黑色的方块。如果用工程的Icon
IDR_MAINFRAM则能够显示出图像。

解决方案 »

  1.   


    CImageList m_ImageList 是 CDlgColor的成员
    IDI_RED  ... IDR_PURPLE 都是 32X32 256colors 的BOOL CDlgColor::OnInitDialog() 
    {
    CDialog::OnInitDialog();

    // TODO: Add extra initialization here
        m_Colors[0] = CColor("red", RGB(255, 0, 0));    // 设置颜色列表
        m_Colors[1] = CColor("blue", RGB(0, 0, 255));
        m_Colors[2] = CColor("green", RGB(0, 255, 0));
        m_Colors[3] = CColor("pink", RGB(240, 200, 200));
        m_Colors[4] = CColor("gray", RGB(230, 230, 230));
        m_Colors[5] = CColor("black", RGB(0, 0, 0));
        m_Colors[6] = CColor("yellow", RGB(200, 200, 0));
        m_Colors[7] = CColor("purple", RGB(200, 0, 200)); HICON hIcon[8];                                    // 装入颜色图标到图像列表
    hIcon[0] = AfxGetApp()->LoadIcon(IDI_RED);
    hIcon[1] = AfxGetApp()->LoadIcon(IDI_BLUE);
    hIcon[2] = AfxGetApp()->LoadIcon(IDI_GREEN);
    hIcon[3] = AfxGetApp()->LoadIcon(IDI_PINK);
    hIcon[4] = AfxGetApp()->LoadIcon(IDI_GRAY);
    hIcon[5] = AfxGetApp()->LoadIcon(IDI_BLACK);
        hIcon[6] = AfxGetApp()->LoadIcon(IDI_YELLOW);
    hIcon[7] = AfxGetApp()->LoadIcon(IDI_PURPLE); m_ImageList.Create(16, 16, 0, 8, 8);
    for (int i=0; i<8; i++)
    {
            m_ImageList.Add(hIcon[i]);
    } static char* namelist[8]=
    {"red", "blue", "green", "pink", "gray", "black", "yellow", "purple"};                              // 颜色名称列表 CListCtrl* pList = (CListCtrl*) GetDlgItem(IDC_SQUARECOLOR);
        pList->SetImageList(&m_ImageList, LVSIL_SMALL);
    for (i=0; i<8; i++)
    {
    pList->InsertItem(i, namelist[i], i);
    } return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
    }
      

  2.   

    又将icon改为 standard(32X32),English(U.S.)的,也是不行,
    palette改为white的也是不行,无奈!
      

  3.   

    m_ImageList.Create(16,16,ILC_COLOR,0,3);
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); m_CtrlList.InsertColumn(0,"",LVCFMT_LEFT,100);
    m_CtrlList.SetImageList(&m_ImageList,LVSIL_SMALL);
    m_CtrlList.InsertItem(0,"1",0);
    m_CtrlList.InsertItem(1,"2",1);
    m_CtrlList.InsertItem(2,"3",2);刚试过,可以。