============================================================================= DirList_PropertyDlg() Shows standard Win95 Property Dlg for selected Item
| 814 | // Shows standard Win95 Property Dlg for selected Item |
| 815 | // |
| 816 | BOOL DirList_PropertyDlg(HWND hwnd,int iItem) |
| 817 | { |
| 818 | |
| 819 | LV_ITEM lvi; |
| 820 | LPLV_ITEMDATA lplvid; |
| 821 | LPCONTEXTMENU lpcm; |
| 822 | CMINVOKECOMMANDINFO cmi; |
| 823 | BOOL bSuccess = TRUE; |
| 824 | |
| 825 | static const char *lpVerb = "properties"; |
| 826 | |
| 827 | if (iItem == -1) |
| 828 | { |
| 829 | if (ListView_GetSelectedCount(hwnd)) |
| 830 | iItem = ListView_GetNextItem(hwnd,-1,LVNI_ALL | LVNI_SELECTED); |
| 831 | |
| 832 | else |
| 833 | return FALSE; |
| 834 | } |
| 835 | |
| 836 | lvi.mask = LVIF_PARAM; |
| 837 | lvi.iItem = iItem; |
| 838 | lvi.iSubItem = 0; |
| 839 | |
| 840 | if (!ListView_GetItem(hwnd,&lvi)) |
| 841 | return FALSE; |
| 842 | |
| 843 | lplvid = (LPLV_ITEMDATA)lvi.lParam; |
| 844 | |
| 845 | if (NOERROR == lplvid->lpsf->lpVtbl->GetUIObjectOf( |
| 846 | lplvid->lpsf, |
| 847 | GetParent(hwnd), // Owner |
| 848 | 1, // Number of objects |
| 849 | &lplvid->pidl, // pidl |
| 850 | &IID_IContextMenu, |
| 851 | NULL, |
| 852 | &lpcm)) |
| 853 | { |
| 854 | |
| 855 | cmi.cbSize = sizeof(CMINVOKECOMMANDINFO); |
| 856 | cmi.fMask = 0; |
| 857 | cmi.hwnd = GetParent(hwnd); |
| 858 | cmi.lpVerb = lpVerb; |
| 859 | cmi.lpParameters = NULL; |
| 860 | cmi.lpDirectory = NULL; |
| 861 | cmi.nShow = SW_SHOWNORMAL; |
| 862 | cmi.dwHotKey = 0; |
| 863 | cmi.hIcon = NULL; |
| 864 | |
| 865 | if (NOERROR != lpcm->lpVtbl->InvokeCommand(lpcm,&cmi)) |
| 866 | bSuccess = FALSE; |
| 867 | |
| 868 | lpcm->lpVtbl->Release(lpcm); |
| 869 | |
| 870 | } |
| 871 | |
| 872 | else |
| 873 | bSuccess = FALSE; |