一个文件(如a.ico)中可存储16X16,32X32,48X48及64X64大小的图标,但在显示时怎么样才能显示指定大小的图标,如:显示a.ico中的48X48大小的那个图标。谢谢。

解决方案 »

  1.   

    GZ
    只知道WM_SETICON的wParam可以指定图标的分辨率
      

  2.   

    不是的,你可以用Microangelo打开一个图标文件时,就可以创建一个48X48的。
      

  3.   

    好象没有直接的方法,有函数ExtractIconEx和ExtractIcon可以从ICO文件中取出想要的图标,也可以检索包含的图标个数,但其都是从独立的文件中取的,不适合取VC资源中的图标。
        若要取VC资源中的IDI_*的48*48图标,这是我么做的:
    CImageList m_DispImageList ;
    #define MAX_ITEM_INDEX 10 ;
    UINT nImages[] =
    {
    IDI_1,IDI_2,..., IDI_10
    };
    HICON m_hIcon[MAX_ITEM_INDEX] ;
    m_DispImageList.Create(48, 48, ILC_COLOR8 | ILC_MASK, 0, MAX_ITEM_INDEX) ;
    for (int i = 0; i < MAX_ITEM_INDEX; i++)
    {
    m_hIcon[i] = LoadIcon(nImages[i]) ;
    m_DispImageList.Add(m_hIcon[i]) ;
    }//显示,x,y是坐标,
    HICON hIcon = m_DispImageList.ExtractIcon(0) ;
    ::DrawIconEx(pDC->GetSafeHdc(), x, y, hIcon, 48, 48, 0, NULL, DI_NORMAL) ;
    ::DestroyIcon(hIcon) ;