Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
view.cpp
Package: shell.rar [view]
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 7k
Category:
Windows Kernel
Development Platform:
Visual C++
- #include "folder.h"
- #include "item.h"
- #include "utils.h"
- #include <mluisupp.h>
- ///////////////////////////////////////////////////////////////////////////////
- // View functions
- const struct {
- short int iCol;
- short int ids;
- short int cchCol;
- short int iFmt;
- } s_ControlFolder_cols[] = {
- {SI_CONTROL, IDS_COL_CONTROL, 20, LVCFMT_LEFT},
- {SI_STATUS, IDS_COL_STATUS, 20, LVCFMT_LEFT},
- {SI_TOTALSIZE, IDS_COL_TOTALSIZE, 18, LVCFMT_LEFT},
- {SI_CREATION, IDS_COL_CREATION, 18, LVCFMT_LEFT},
- {SI_LASTACCESS, IDS_COL_LASTACCESS, 18, LVCFMT_LEFT},
- {SI_VERSION, IDS_COL_VERSION, 18, LVCFMT_LEFT}
- };
- HRESULT ControlFolderView_Command(HWND hwnd, UINT uID)
- {
- switch (uID)
- {
- case IDM_SORTBYNAME:
- case IDM_SORTBYSTATUS:
- case IDM_SORTBYTOTALSIZE:
- case IDM_SORTBYCREATION:
- case IDM_SORTBYLASTACCESS:
- case IDM_SORTBYVERSION:
- ShellFolderView_ReArrange(hwnd, uID - IDM_SORTBYNAME);
- break;
- default:
- return E_FAIL;
- }
- return NOERROR;
- }
- HMENU GetMenuFromID(HMENU hmenu, UINT idm)
- {
- MENUITEMINFO mii = {sizeof(mii), MIIM_SUBMENU, 0, 0, 0, NULL, NULL, NULL, 0, NULL, 0};
- GetMenuItemInfo(hmenu, idm, FALSE, &mii);
- return mii.hSubMenu;
- }
- UINT MergeMenuHierarchy(
- HMENU hmenuDst,
- HMENU hmenuSrc,
- UINT idcMin,
- UINT idcMax)
- {
- UINT idcMaxUsed = idcMin;
- int imi = GetMenuItemCount(hmenuSrc);
- while (--imi >= 0)
- {
- MENUITEMINFO mii = {sizeof(mii), MIIM_ID | MIIM_SUBMENU, 0, 0, 0, NULL, NULL, NULL, 0, NULL, 0};
- if (GetMenuItemInfo(hmenuSrc, imi, TRUE, &mii))
- {
- UINT idcT = Shell_MergeMenus(
- GetMenuFromID(hmenuDst, mii.wID),
- mii.hSubMenu,
- 0, idcMin, idcMax,
- MM_ADDSEPARATOR|MM_SUBMENUSHAVEIDS);
- idcMaxUsed = max(idcMaxUsed, idcT);
- }
- }
- return idcMaxUsed;
- }
- HRESULT ControlFolderView_MergeMenu(LPQCMINFO pqcm)
- {
- HMENU hmenu = LoadMenu(MLGetHinst(), MAKEINTRESOURCE(IDR_CONTROLFOLDER));
- Assert(hmenu != NULL);
- if (hmenu)
- {
- MENUITEMINFO mii;
- mii.cbSize = sizeof(mii);
- mii.fMask = MIIM_ID;
- mii.wID = SFVIDM_MENU_ARRANGE;
- SetMenuItemInfo(hmenu, 0, TRUE, &mii);
- MergeMenuHierarchy(pqcm->hmenu, hmenu, pqcm->idCmdFirst, pqcm->idCmdLast);
- DestroyMenu(hmenu);
- }
- return NOERROR;
- }
- HRESULT ControlFolderView_InitMenuPopup(
- HWND hwnd,
- UINT idCmdFirst,
- int nIndex,
- HMENU hmenu)
- {
- return NOERROR;
- }
- HRESULT ControlFolderView_OnGetDetailsOf(
- HWND hwnd,
- UINT iColumn,
- PDETAILSINFO pdi)
- {
- BOOL bResult = TRUE;
- LPCONTROLPIDL pcpidl = (LPCONTROLPIDL)pdi->pidl;
- if (iColumn >= NUM_COLUMNS)
- return E_NOTIMPL;
- pdi->str.uType = STRRET_CSTR;
- pdi->str.cStr[0] = '';
- // if NULL, asking for column info
- if (pcpidl == NULL)
- {
- MLLoadString(
- s_ControlFolder_cols[iColumn].ids,
- pdi->str.cStr,
- ARRAYSIZE(pdi->str.cStr));
- pdi->fmt = s_ControlFolder_cols[iColumn].iFmt;
- pdi->cxChar = s_ControlFolder_cols[iColumn].cchCol;
- return NOERROR;
- }
- switch (iColumn)
- {
- case SI_CONTROL:
- lstrcpy(pdi->str.cStr, GetStringInfo(pcpidl, SI_CONTROL));
- break;
- case SI_VERSION:
- lstrcpy(pdi->str.cStr, GetStringInfo(pcpidl, SI_VERSION));
- break;
- case SI_CREATION:
- lstrcpy(pdi->str.cStr, GetStringInfo(pcpidl, SI_CREATION));
- break;
- case SI_LASTACCESS:
- lstrcpy(pdi->str.cStr, GetStringInfo(pcpidl, SI_LASTACCESS));
- break;
- case SI_TOTALSIZE:
- GetSizeSaved(pcpidl, pdi->str.cStr);
- break;
- case SI_STATUS:
- GetStatus(pcpidl, pdi->str.cStr, sizeof(pdi->str.cStr));
- break;
- default:
- bResult = FALSE;
- }
- return (bResult ? NOERROR : E_FAIL);
- }
- HRESULT ControlFolderView_OnColumnClick(HWND hwnd, UINT iColumn)
- {
- ShellFolderView_ReArrange(hwnd, iColumn);
- return NOERROR;
- }
- HRESULT ControlFolderView_DidDragDrop(HWND hwnd, IDataObject *pdo, DWORD dwEffect)
- {
- HRESULT hr = E_FAIL;
- if (dwEffect & DROPEFFECT_MOVE)
- {
- CControlItem *pCItem;
- if (SUCCEEDED(pdo->QueryInterface(CLSID_ControlFolder, (void **)&pCItem)))
- {
- hr = pCItem->Remove(hwnd);
- pCItem->Release();
- }
- }
- return hr;
- }
- HRESULT CALLBACK ControlFolderView_ViewCallback(
- IShellView *psvOuter,
- IShellFolder *psf,
- HWND hwnd,
- UINT uMsg,
- WPARAM wParam,
- LPARAM lParam)
- {
- HRESULT hres = NOERROR;
- switch (uMsg)
- {
- case DVM_GETHELPTEXT:
- {
- UINT id = LOWORD(wParam);
- UINT cchBuf = HIWORD(wParam);
- LPTSTR pszBuf = (LPTSTR)lParam;
- MLLoadString(id + IDS_HELP_SORTBYNAME ,pszBuf, cchBuf);
- }
- break;
- case DVM_DIDDRAGDROP:
- hres = ControlFolderView_DidDragDrop(
- hwnd,
- (IDataObject*)lParam,
- (DWORD)wParam);
- break;
- case DVM_INITMENUPOPUP:
- hres = ControlFolderView_InitMenuPopup(
- hwnd,
- LOWORD(wParam),
- HIWORD(wParam),
- (HMENU)lParam);
- break;
- case DVM_INVOKECOMMAND:
- ControlFolderView_Command(hwnd, (UINT)wParam);
- break;
- case DVM_COLUMNCLICK:
- hres = ControlFolderView_OnColumnClick(hwnd, (UINT)wParam);
- break;
- case DVM_GETDETAILSOF:
- hres = ControlFolderView_OnGetDetailsOf(hwnd, (UINT)wParam, (PDETAILSINFO)lParam);
- break;
- case DVM_MERGEMENU:
- hres = ControlFolderView_MergeMenu((LPQCMINFO)lParam);
- break;
- case DVM_DEFVIEWMODE:
- *(FOLDERVIEWMODE *)lParam = FVM_DETAILS;
- break;
- default:
- hres = E_FAIL;
- }
- return hres;
- }
- HRESULT ControlFolderView_CreateInstance(
- CControlFolder *pCFolder,
- LPCITEMIDLIST pidl,
- void **ppvOut)
- {
- CSFV csfv;
- csfv.cbSize = sizeof(csfv);
- csfv.pshf = (IShellFolder*)pCFolder;
- csfv.psvOuter = NULL;
- csfv.pidl = pidl;
- csfv.lEvents = SHCNE_DELETE | SHCNE_UPDATEITEM; // SHCNE_DISKEVENTS | SHCNE_ASSOCCHANGED | SHCNE_GLOBALEVENTS;
- csfv.pfnCallback = ControlFolderView_ViewCallback;
- csfv.fvm = (FOLDERVIEWMODE)0; // Have defview restore the folder view mode
- return SHCreateShellFolderViewEx(&csfv, (IShellView**)ppvOut); // &this->psv);
- }