2851|2

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

列表控件如何拉伸图标? [复制链接]

在列表控件上显示设置里的图标,有的大有的小,如何才能拉伸致一样大?还有个问题,如何知道设置里的图标是在个人还是在系统还是在连接里?谢谢

void GetFileIcon(DWORD fpid,SHFILEINFO *info)
{
        ZeroMemory(info,sizeof SHFILEINFO);
        TCHAR name[MAX_PATH];
        HANDLE hhe=::OpenProcess(NULL,NULL,fpid);
        ::GetModuleFileName((HMODULE)hhe,name,MAX_PATH);
        CloseHandle(hhe);
        SHGetFileInfo(name,0,info,sizeof SHFILEINFO,SHGFI_ICON|isBigIcon);
}

void SetImageIcon(int ls)
{
        if(ls==0)
                ls=2;
        ListView_DeleteAllItems(hList);
        HIMAGELIST il=ListView_GetImageList(hList,LVSIL_SMALL);
        if(il==hil)
        {
                ListView_SetImageList(hList,ohil,LVSIL_SMALL);
                ImageList_Destroy(hil);
        }
        hil=ImageList_Create(iconsize*ls,iconsize*ls,ILC_COLORDDB | ILC_MASK,1,0);
        ohil=ListView_SetImageList(hList,hil,LVSIL_SMALL);
}
union {
        NEWCPLINFOA NewCplInfoA;
        NEWCPLINFOW NewCplInfoW;
    } Newcpl;
void GetControls()
{
        SetCursor(LoadCursor(NULL, IDC_WAIT));
       
        SendMessage(hList,WM_SETREDRAW,FALSE,NULL);

        SetImageIcon(isBigIcon);
        LVITEM li;
        ZeroMemory(&li,sizeof li);
        li.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
        li.iItem=0;
        li.cchTextMax=MAX_PATH;
//        ImageList_SetIconSize(hil,32,32);
    HANDLE hFind;  // file handle
    WIN32_FIND_DATA FindFileData;
    TCHAR DirPath[]=L"\\windows\\*.cpl";
    hFind = FindFirstFile(DirPath,&FindFileData); // find the first file
    if(hFind != INVALID_HANDLE_VALUE)
        {
                bool bSearch = true;
                while(bSearch)
                {

                        HINSTANCE m_hInst=::LoadLibrary(FindFileData.cFileName);
                        LPCPlAppletType pfnCPlApplet =(LPCPlAppletType)GetProcAddress(m_hInst,L"CPlApplet");
                        pfnCPlApplet(NULL,CPL_INIT,0,0);
                        for (int i=0;i                         {
                                Newcpl.NewCplInfoA.dwSize = 0;
                                Newcpl.NewCplInfoA.dwFlags = 0;
                                pfnCPlApplet(NULL,CPL_NEWINQUIRE,i,(DWORD)&Newcpl);
                                {
                                        if (Newcpl.NewCplInfoA.dwSize != sizeof(NEWCPLINFOW))
                                        {
                /*                               
                                                CPLINFO CInfo;
                                                pfnCPlApplet(NULL,CPL_INQUIRE,i,(long)&CInfo);
                                                LoadString(m_hInst,CInfo.idName,WinName,MAX_PATH);
                                                li.pszText=WinName;
                                                li.iImage=ImageList_AddIcon(hil,LoadIcon(m_hInst,MAKEINTRESOURCE(CInfo.idIcon)));
                                                ListView_InsertItem(hList,&li);
                */
                                        }
                                        else
                                        {
                                //                li.lParam=pe.th32ProcessID;
                                                li.pszText=Newcpl.NewCplInfoW.szName;
                                                li.iImage=ImageList_AddIcon(hil,Newcpl.NewCplInfoW.hIcon);
                                                ListView_InsertItem(hList,&li);
                                        }
                                }

                        }
                        pfnCPlApplet(NULL,CPL_EXIT,0,0);
                        FreeLibrary(m_hInst);

                        if(FindNextFile(hFind,&FindFileData))
                        {
                        }
                        else
                        {
                                if(GetLastError() == ERROR_NO_MORE_FILES) // no more files there
                                        bSearch = false;
                                else
                                {
                                        FindClose(hFind);
                                        break;
                                }
                        }
                }
        }
        FindClose(hFind);
        SendMessage(hList,WM_SETREDRAW,TRUE,NULL);
        SetListRect();
        SetCursor(NULL);
}

最新回复

就是有的有32*32但有的是16*16,如何拉伸成32*32  详情 回复 发表于 2009-6-28 11:37
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
为什么图标有的大有的小?

真是不太看得懂LZ的问题。
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
就是有的有32*32但有的是16*16,如何拉伸成32*32
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表