获取给定路径的图标,演示SHGetFileInfo用法
2012-03-14 15:41
197 查看
基于上次那个SHBrowseForFolder用法的演示代码 建立的仍然是Win32 命令行的工程,所以入口点为main(),需要手动获取HINSTANCE结构。程序在WINXP+VS2005测试通过 /******************************************************************** created: 2008/05/02 created: 2:5:2008 3:40 main.cpp author: Gohan purpose: 演示SHBrowseForFolder用法 演示SHGetFileInfo获取路径图标 演示Picture Box在SDK里的使用方法 *********************************************************************/ #include <Windows.h> #include <ShlObj.h> #include “resource.h” HICON g_icon; RECT g_rect; TCHAR g_path[MAX_PATH]; void OnInitDlg(HWND hwnd) { GetWindowRect(GetDlgItem(hwnd, IDC_ICON1), &g_rect); MapWindowPoints(NULL, hwnd, (LPPOINT) &g_rect, 2); DestroyWindow(GetDlgItem(hwnd, IDC_ICON1)); SetDlgItemText(hwnd,IDC_PATH,g_path); } void OnPaint(HWND hwnd) { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); DrawIcon(hdc,g_rect.left,g_rect.left,g_icon); EndPaint(hwnd,&ps); } BOOL CALLBACK DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG : OnInitDlg(hDlg); &nb sp; return TRUE ; case WM_PAINT: OnPaint(hDlg); return TRUE; case WM_COMMAND : switch (LOWORD (wParam)) { case IDOK : case IDCANCEL : EndDialog (hDlg, 0) ; return TRUE ; } break ; } return FALSE ; } int main() { HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL); BROWSEINFO bi; ZeroMemory(&bi,sizeof(BROWSEINFO)); LPMALLOC pMalloc; LPITEMIDLIST pidl = SHBrowseForFolder(&bi); if(pidl != NULL) { SHGetPathFromIDList(pidl,g_path); SHFILEINFO sfi; ZeroMemory(&sfi,sizeof(SHFILEINFO)); SHGetFileInfo(g_path,0,&sfi,sizeof(SHFILEINFO),SHGFI_ICON); g_icon = sfi.hIcon; DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DlgProc) ; //MessageBox(NULL,path,TEXT(“Choose”),MB_OK); if(SUCCEEDED(SHGetMalloc(&pMalloc))) { pMalloc->Free(pidl); pMalloc->Release(); } } else { >MessageBox(NULL,TEXT(“),TEXT(“Choose”),MB_OK); } } /************************************************************************/ /* resource.h */ /************************************************************************/ #define IDD_DIALOG1 101 #define IDC_PATH 1001 #define IDC_ICON1 1002 /************************************************************************/ /* demo.rc Microsoft Visual C++ generated resource script. */ /************************************************************************/ #include “resource.h” #include “afxres.h” ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_DIALOG1 DIALOGEX 0, 0, 126, 83 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP FONT 8, “MS Shell Dlg”, 400, 0, 0×1 BEGIN DEFPUSHBUTTON “确定”,IDOK,69,7,50,14 PUSHBUTTON “取消”,IDCANCEL,69,24,50,14 CONTROL “”,IDC_ICON1,“Static”,SS_WHITEFRAME | SS_REALSIZEIMAGE,13,10,20,20,WS_EX_TRANSPARENT LTEXT “静态”,IDC_PATH,14,44,89,21,0,WS_EX_CLIENTEDGE END /////////////////////////////////////////////////////////////////////////////
相关文章推荐
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- 获取文件图标,类型名称,属性 SHGetFileInfo
- SHGetFileInfo获取图标说明
- C#获取文件(磁盘驱动器)的关联图标(使用API SHGetFileInfo)
- 使用SHGetFileInfo函数获取任何文件大图标
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- 收藏——在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- SHGetFileInfo获取系统图标注意事项
- 【MoreWindows工作笔记4】 获取文件图标,类型名称,属性 SHGetFileInfo
- Windows API——SHGetFileInfo——获取文件信息
- SHGetFileInfo 函数用法
- SHGetFileInfo 获得文件类型图标
- Windows API——SHGetFileInfo——获取文件信息
- 获取文件属性SHGetFileInfo
- SHGetFileInfo的用法
- ShGetFileInfo 来分别取得程序的大小图标
- SHGetFileInfo 显示文件类型图标
- Windows API——SHGetFileInfo——获取文件信息
- PHP __FILE__获取文件绝对路径用法
- SHGetFileInfo 获得文件类型图标