下午发的帖子没发成功。
mfc 6.0开发的程序,但是在系统以图标,平铺,列表模式显示的时候,程序资源里的图标显示很难看,能不能实现当系统以不同模式显示时,可以显示程序资源里16 32或 48位的图标。
问题太菜,请各位指点啊,分不多,一定结。mfc

解决方案 »

  1.   

    1.SetImageList可以设置不同情况下使用的图标,试试看这样有效果么?
    LVSIL_NORMAL   Image list with large icons.LVSIL_SMALL   Image list with small icons.LVSIL_STATE   Image list with state images.2.切换视图的时候,重新调用一下SetImageList,换一套图标试试看呢?
      

  2.   

    谢谢斑竹的答复,我查了下,SetImageList可以调整控件图标,但是我想实现的是程序还未运行,只是系统打开程序所在目录时,看到的程序图标。当系统设置为不同显示模式时,可自动识别程序资源内不同图标。
    再次感谢斑竹的帮助。
      

  3.   

    我误会你的意思了,你说的这个图标是程序的icon图标
    icon图标是可以包含多个大小的,系统会根据需要自动显示
    所以,如果你的显示效果不好,那是因为你的icon图标有问题
    如果有美工,就找美工多做几个格式的,如果没有美工,就再去网上找找图标
      

  4.   

    是程序的ICON图标,我的程序里包含了16*16 和32*32的,但是发现当系统使用列表模式显示时,程序显示的不是16*16,而是把32*32缩小显示,因此非常丑.
    我除了在程序中包含多个大小的ICON图标外,还需要在程序里修改哪些代码吗?
    再次感谢版主哈!
      

  5.   

    我在程序资源中加入了16 32 48大小的icon,但是依然只是把32*32的图标压缩或放大,好像系统并没有像其他程序一样,自动选择对应大小的图标,我需要在程序的哪里注册这些图标吗?MFC框架自动生成的代码:ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX);  wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = (WNDPROC)WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_WTEMPLET);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName = (LPCSTR)IDC_WTEMPLET;
    wcex.lpszClassName = szWindowClass;
    wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); return RegisterClassEx(&wcex);
    }
    其中IDI_WTEMPLET 和IDI_SMALL为32和16的图标。
    问题太简单,各位帮帮忙啦!谢谢哈!
      

  6.   

    你的“16 32 48大小的icon”是一个还是多个?
      

  7.   

    一个icon文件是支持多个大小的,要放在一个文件里面
      

  8.   

    我的ico是利用PE explorer从别人的程序导出的。