ReactOS 0.4.15-dev-8434-g155a7c7
CDefView Class Reference
Inheritance diagram for CDefView:
Collaboration diagram for CDefView:

Public Member Functions

 CDefView ()
 
 ~CDefView ()
 
HRESULT WINAPI Initialize (IShellFolder *shellFolder)
 
HRESULT IncludeObject (PCUITEMID_CHILD pidl)
 
HRESULT OnDefaultCommand ()
 
HRESULT OnStateChange (UINT uFlags)
 
void UpdateStatusbar ()
 
void CheckToolbar ()
 
BOOL CreateList ()
 
void UpdateListColors ()
 
BOOL InitList ()
 
HRESULT MapFolderColumnToListColumn (UINT FoldCol)
 
HRESULT MapListColumnToFolderColumn (UINT ListCol)
 
HRESULT GetDetailsByFolderColumn (PCUITEMID_CHILD pidl, UINT FoldCol, SHELLDETAILS &sd)
 
HRESULT GetDetailsByListColumn (PCUITEMID_CHILD pidl, UINT ListCol, SHELLDETAILS &sd)
 
HRESULT LoadColumn (UINT FoldCol, UINT ListCol, BOOL Insert, UINT ForceWidth=0)
 
HRESULT LoadColumns (SIZE_T *pColList=NULL, UINT ColListCount=0)
 
void ColumnListChanged ()
 
PCUITEMID_CHILD _PidlByItem (int i)
 
PCUITEMID_CHILD _PidlByItem (LVITEM &lvItem)
 
int LV_FindItemByPidl (PCUITEMID_CHILD pidl)
 
int LV_AddItem (PCUITEMID_CHILD pidl)
 
BOOLEAN LV_DeleteItem (PCUITEMID_CHILD pidl)
 
BOOLEAN LV_RenameItem (PCUITEMID_CHILD pidlOld, PCUITEMID_CHILD pidlNew)
 
BOOLEAN LV_UpdateItem (PCUITEMID_CHILD pidl)
 
void LV_RefreshIcon (INT iItem)
 
void LV_RefreshIcons ()
 
HRESULT FillList (BOOL IsRefreshCommand=TRUE)
 
HRESULT FillFileMenu ()
 
HRESULT FillEditMenu ()
 
HRESULT FillViewMenu ()
 
HRESULT FillArrangeAsMenu (HMENU hmenuArrange)
 
HRESULT CheckViewMode (HMENU hmenuView)
 
LRESULT DoColumnContextMenu (LRESULT lParam)
 
UINT GetSelections ()
 
HRESULT OpenSelectedItems ()
 
void OnDeactivate ()
 
void DoActivate (UINT uState)
 
HRESULT drag_notify_subitem (DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
 
HRESULT InvokeContextMenuCommand (CComPtr< IContextMenu > &pCM, LPCSTR lpVerb, POINT *pt=NULL)
 
LRESULT OnExplorerCommand (UINT uCommand, BOOL bUseSelection)
 
FOLDERVIEWMODE GetDefaultViewMode ()
 
HRESULT GetDefaultViewStream (DWORD Stgm, IStream **ppStream)
 
HRESULT LoadViewState ()
 
HRESULT SaveViewState (IStream *pStream)
 
void UpdateFolderViewFlags ()
 
STDMETHOD() GetWindow (HWND *lphwnd) override
 
STDMETHOD() ContextSensitiveHelp (BOOL fEnterMode) override
 
STDMETHOD() TranslateAccelerator (MSG *pmsg) override
 
STDMETHOD() EnableModeless (BOOL fEnable) override
 
STDMETHOD() UIActivate (UINT uState) override
 
STDMETHOD() Refresh () override
 
STDMETHOD() CreateViewWindow (IShellView *psvPrevious, LPCFOLDERSETTINGS pfs, IShellBrowser *psb, RECT *prcView, HWND *phWnd) override
 
STDMETHOD() DestroyViewWindow () override
 
STDMETHOD() GetCurrentInfo (LPFOLDERSETTINGS pfs) override
 
STDMETHOD() AddPropertySheetPages (DWORD dwReserved, LPFNSVADDPROPSHEETPAGE pfn, LPARAM lparam) override
 
STDMETHOD() SaveViewState () override
 
STDMETHOD() SelectItem (PCUITEMID_CHILD pidlItem, SVSIF uFlags) override
 
STDMETHOD() GetItemObject (UINT uItem, REFIID riid, void **ppv) override
 
STDMETHOD() GetView (SHELLVIEWID *view_guid, ULONG view_type) override
 
STDMETHOD() CreateViewWindow2 (LPSV2CVW2_PARAMS view_params) override
 
STDMETHOD() HandleRename (LPCITEMIDLIST new_pidl) override
 
STDMETHOD() SelectAndPositionItem (LPCITEMIDLIST item, UINT flags, POINT *point) override
 
STDMETHOD() CreateViewWindow3 (IShellBrowser *psb, IShellView *psvPrevious, SV3CVW3_FLAGS view_flags, FOLDERFLAGS mask, FOLDERFLAGS flags, FOLDERVIEWMODE mode, const SHELLVIEWID *view_id, const RECT *prcView, HWND *hwnd) override
 
STDMETHOD() GetCurrentViewMode (UINT *pViewMode) override
 
STDMETHOD() SetCurrentViewMode (UINT ViewMode) override
 
STDMETHOD() GetFolder (REFIID riid, void **ppv) override
 
STDMETHOD() Item (int iItemIndex, PITEMID_CHILD *ppidl) override
 
STDMETHOD() ItemCount (UINT uFlags, int *pcItems) override
 
STDMETHOD() Items (UINT uFlags, REFIID riid, void **ppv) override
 
STDMETHOD() GetSelectionMarkedItem (int *piItem) override
 
STDMETHOD() GetFocusedItem (int *piItem) override
 
STDMETHOD() GetItemPosition (PCUITEMID_CHILD pidl, POINT *ppt) override
 
STDMETHOD() GetSpacing (POINT *ppt) override
 
STDMETHOD() GetDefaultSpacing (POINT *ppt) override
 
STDMETHOD() GetAutoArrange () override
 
STDMETHOD() SelectItem (int iItem, DWORD dwFlags) override
 
STDMETHOD() SelectAndPositionItems (UINT cidl, PCUITEMID_CHILD_ARRAY apidl, POINT *apt, DWORD dwFlags) override
 
STDMETHOD() Rearrange (LPARAM sort) override
 
STDMETHOD() GetArrangeParam (LPARAM *sort) override
 
STDMETHOD() ArrangeGrid () override
 
STDMETHOD() AutoArrange () override
 
STDMETHOD() AddObject (PITEMID_CHILD pidl, UINT *item) override
 
STDMETHOD() GetObject (PITEMID_CHILD *pidl, UINT item) override
 
STDMETHOD() RemoveObject (PITEMID_CHILD pidl, UINT *item) override
 
STDMETHOD() GetObjectCount (UINT *count) override
 
STDMETHOD() SetObjectCount (UINT count, UINT flags) override
 
STDMETHOD() UpdateObject (PITEMID_CHILD pidl_old, PITEMID_CHILD pidl_new, UINT *item) override
 
STDMETHOD() RefreshObject (PITEMID_CHILD pidl, UINT *item) override
 
STDMETHOD() SetRedraw (BOOL redraw) override
 
STDMETHOD() GetSelectedCount (UINT *count) override
 
STDMETHOD() GetSelectedObjects (PCUITEMID_CHILD **pidl, UINT *items) override
 
STDMETHOD() IsDropOnSource (IDropTarget *drop_target) override
 
STDMETHOD() GetDragPoint (POINT *pt) override
 
STDMETHOD() GetDropPoint (POINT *pt) override
 
STDMETHOD() MoveIcons (IDataObject *obj) override
 
STDMETHOD() SetItemPos (PCUITEMID_CHILD pidl, POINT *pt) override
 
STDMETHOD() IsBkDropTarget (IDropTarget *drop_target) override
 
STDMETHOD() SetClipboard (BOOL move) override
 
STDMETHOD() SetPoints (IDataObject *obj) override
 
STDMETHOD() GetItemSpacing (ITEMSPACING *spacing) override
 
STDMETHOD() SetCallback (IShellFolderViewCB *new_cb, IShellFolderViewCB **old_cb) override
 
STDMETHOD() Select (UINT flags) override
 
STDMETHOD() QuerySupport (UINT *support) override
 
STDMETHOD() SetAutomationObject (IDispatch *disp) override
 
STDMETHOD() QueryStatus (const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) override
 
STDMETHOD() Exec (const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override
 
STDMETHOD() DragEnter (IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHOD() DragOver (DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHOD() DragLeave () override
 
STDMETHOD() Drop (IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHOD() QueryContinueDrag (BOOL fEscapePressed, DWORD grfKeyState) override
 
STDMETHOD() GiveFeedback (DWORD dwEffect) override
 
STDMETHOD() Draw (DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL(STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) override
 
STDMETHOD() GetColorSet (DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet) override
 
STDMETHOD() Freeze (DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze) override
 
STDMETHOD() Unfreeze (DWORD dwFreeze) override
 
STDMETHOD() SetAdvise (DWORD aspects, DWORD advf, IAdviseSink *pAdvSink) override
 
STDMETHOD() GetAdvise (DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink) override
 
STDMETHOD() QueryService (REFGUID guidService, REFIID riid, void **ppvObject) override
 
LRESULT OnShowWindow (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnGetDlgCode (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnDestroy (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnEraseBackground (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnPrintClient (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSysColorChange (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnGetShellBrowser (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNCCreate (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnCreate (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnContextMenu (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSize (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnActivate (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSetFocus (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnKillFocus (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnCommand (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnNotify (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnChangeNotify (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnUpdateStatusbar (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnCustomItem (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSettingChange (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnInitMenuPopup (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
virtual VOID OnFinalMessage (HWND) override
 
virtual WNDPROC GetWindowProc ()
 
- Public Member Functions inherited from ATL::CWindowImpl< CDefView, CWindow, CControlWinTraits >
HWND Create (HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
 
- Public Member Functions inherited from ATL::CWindowImplBaseT< TBase, TWinTraits >
 CWindowImplBaseT ()
 
virtual void OnFinalMessage (HWND)
 
BOOL SubclassWindow (HWND hWnd)
 
HWND UnsubclassWindow (BOOL bForce=FALSE)
 
virtual WNDPROC GetWindowProc ()
 
LRESULT DefWindowProc (UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HWND Create (HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName, DWORD dwStyle, DWORD dwExStyle, _U_MENUorID MenuOrID, ATOM atom, LPVOID lpCreateParam)
 
- Public Member Functions inherited from ATL::CWindowImplRoot< TBase >
 CWindowImplRoot ()
 
virtual ~CWindowImplRoot ()
 
- Public Member Functions inherited from ATL::CWindow
 CWindow (HWND hWnd=NULL)
 
 operator HWND () const
 
UINT ArrangeIconicWindows ()
 
void Attach (HWND hWndNew)
 
HDC BeginPaint (LPPAINTSTRUCT lpPaint)
 
BOOL BringWindowToTop ()
 
BOOL CenterWindow (HWND hWndCenter=NULL)
 
BOOL ChangeClipboardChain (HWND hWndNewNext)
 
BOOL CheckDlgButton (int nIDButton, UINT nCheck)
 
BOOL CheckRadioButton (int nIDFirstButton, int nIDLastButton, int nIDCheckButton)
 
HWND ChildWindowFromPoint (POINT point) const
 
HWND ChildWindowFromPointEx (POINT point, UINT uFlags) const
 
BOOL ClientToScreen (LPPOINT lpPoint) const
 
BOOL ClientToScreen (LPRECT lpRect) const
 
HWND Create (LPCTSTR lpstrWndClass, HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
 
BOOL CreateCaret (HBITMAP pBitmap)
 
BOOL CreateGrayCaret (int nWidth, int nHeight)
 
BOOL CreateSolidCaret (int nWidth, int nHeight)
 
HDWP DeferWindowPos (HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
 
BOOL DestroyWindow ()
 
HWND Detach ()
 
int DlgDirList (LPTSTR lpPathSpec, int nIDListBox, int nIDStaticPath, UINT nFileType)
 
int DlgDirListComboBox (LPTSTR lpPathSpec, int nIDComboBox, int nIDStaticPath, UINT nFileType)
 
BOOL DlgDirSelect (LPTSTR lpString, int nCount, int nIDListBox)
 
BOOL DlgDirSelectComboBox (LPTSTR lpString, int nCount, int nIDComboBox)
 
void DragAcceptFiles (BOOL bAccept=TRUE)
 
BOOL DrawMenuBar ()
 
BOOL EnableScrollBar (UINT uSBFlags, UINT uArrowFlags=ESB_ENABLE_BOTH)
 
BOOL EnableWindow (BOOL bEnable=TRUE)
 
void EndPaint (LPPAINTSTRUCT lpPaint)
 
BOOL FlashWindow (BOOL bInvert)
 
BOOL GetClientRect (LPRECT lpRect) const
 
HDC GetDC ()
 
HDC GetDCEx (HRGN hRgnClip, DWORD flags)
 
HWND GetDescendantWindow (int nID) const
 
HRESULT GetDlgControl (int nID, REFIID iid, void **ppCtrl)
 
int GetDlgCtrlID () const
 
HRESULT GetDlgHost (int nID, REFIID iid, void **ppHost)
 
HWND GetDlgItem (_In_ int nID) const
 
UINT GetDlgItemInt (_In_ int nID, _Out_opt_ BOOL *lpTrans=NULL, _In_ BOOL bSigned=TRUE) const
 
UINT GetDlgItemText (_In_ int nID, _Out_writes_to_(nMaxCount, return+1) LPTSTR lpStr, _In_ int nMaxCount) const
 
BOOL GetDlgItemText (_In_ int nID, _Inout_ _Outref_result_maybenull_ _Post_z_ BSTR &bstrText) const
 
DWORD GetExStyle () const
 
HFONT GetFont () const
 
DWORD GetHotKey () const
 
HICON GetIcon (BOOL bBigIcon=TRUE) const
 
HWND GetLastActivePopup () const
 
HMENU GetMenu () const
 
HWND GetNextDlgGroupItem (HWND hWndCtl, BOOL bPrevious=FALSE) const
 
HWND GetNextDlgTabItem (HWND hWndCtl, BOOL bPrevious=FALSE) const
 
CWindow GetParent () const
 
BOOL GetScrollInfo (int nBar, LPSCROLLINFO lpScrollInfo)
 
BOOL GetScrollPos (int nBar)
 
BOOL GetScrollRange (int nBar, LPINT lpMinPos, LPINT lpMaxPos) const
 
DWORD GetStyle () const
 
HMENU GetSystemMenu (BOOL bRevert)
 
HWND GetTopLevelParent () const
 
HWND GetTopLevelWindow () const
 
HWND GetTopWindow () const
 
BOOL GetUpdateRect (LPRECT lpRect, BOOL bErase=FALSE)
 
int GetUpdateRgn (HRGN hRgn, BOOL bErase=FALSE)
 
HWND GetWindow (UINT nCmd) const
 
DWORD GetWindowContextHelpId () const
 
HDC GetWindowDC ()
 
LONG GetWindowLong (int nIndex) const
 
LONG_PTR GetWindowLongPtr (int nIndex) const
 
BOOL GetWindowPlacement (WINDOWPLACEMENT *lpwndpl) const
 
DWORD GetWindowProcessID ()
 
BOOL GetWindowRect (LPRECT lpRect) const
 
int GetWindowRgn (HRGN hRgn)
 
int GetWindowText (_Out_writes_to_(nMaxCount, return+1) LPTSTR lpszStringBuf, _In_ int nMaxCount) const
 
BOOL GetWindowText (_Inout_ _Outref_result_maybenull_ _Post_z_ BSTR &bstrText) const
 
int GetWindowTextLength () const
 
DWORD GetWindowThreadID ()
 
WORD GetWindowWord (int nIndex) const
 
void GotoDlgCtrl (HWND hWndCtrl) const
 
BOOL HideCaret ()
 
BOOL HiliteMenuItem (HMENU hMenu, UINT uHiliteItem, UINT uHilite)
 
BOOL Invalidate (BOOL bErase=TRUE)
 
BOOL InvalidateRect (LPCRECT lpRect, BOOL bErase=TRUE)
 
void InvalidateRgn (HRGN hRgn, BOOL bErase=TRUE)
 
BOOL IsChild (const HWND hWnd) const
 
BOOL IsDialogMessage (LPMSG lpMsg)
 
UINT IsDlgButtonChecked (int nIDButton) const
 
BOOL IsIconic () const
 
BOOL IsParentDialog ()
 
BOOL IsWindow () const
 
BOOL IsWindowEnabled () const
 
BOOL IsWindowVisible () const
 
BOOL IsWindowUnicode ()
 
BOOL IsZoomed () const
 
BOOL KillTimer (UINT_PTR nIDEvent)
 
BOOL LockWindowUpdate (BOOL bLock=TRUE)
 
int MapWindowPoints (HWND hWndTo, LPPOINT lpPoint, UINT nCount) const
 
int MapWindowPoints (HWND hWndTo, LPRECT lpRect) const
 
int MessageBox (LPCTSTR lpszText, LPCTSTR lpszCaption=NULL, UINT nType=MB_OK)
 
BOOL ModifyStyle (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 
BOOL ModifyStyleEx (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 
BOOL MoveWindow (int x, int y, int nWidth, int nHeight, BOOL bRepaint=TRUE)
 
void NextDlgCtrl () const
 
BOOL OpenClipboard ()
 
BOOL PostMessage (UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
void PrevDlgCtrl () const
 
void Print (HDC hDC, DWORD dwFlags) const
 
void PrintClient (HDC hDC, DWORD dwFlags) const
 
BOOL RedrawWindow (LPCRECT lpRectUpdate=NULL, HRGN hRgnUpdate=NULL, UINT flags=RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE)
 
int ReleaseDC (HDC hDC)
 
BOOL ResizeClient (int nWidth, int nHeight, BOOL bRedraw=FALSE)
 
BOOL ScreenToClient (LPPOINT lpPoint) const
 
BOOL ScrollWindow (int xAmount, int yAmount, LPCRECT lpRect=NULL, LPCRECT lpClipRect=NULL)
 
int ScrollWindowEx (int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, HRGN hRgnUpdate, LPRECT lpRectUpdate, UINT flags)
 
LRESULT SendDlgItemMessage (int nID, UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
LRESULT SendMessage (UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
void SendMessageToDescendants (UINT message, WPARAM wParam=0, LPARAM lParam=0, BOOL bDeep=TRUE)
 
BOOL SendNotifyMessage (UINT message, WPARAM wParam=0, LPARAM lParam=0)
 
HWND SetActiveWindow ()
 
HWND SetCapture ()
 
HWND SetClipboardViewer ()
 
int SetDlgCtrlID (int nID)
 
BOOL SetDlgItemInt (int nID, UINT nValue, BOOL bSigned=TRUE)
 
BOOL SetDlgItemText (int nID, LPCTSTR lpszString)
 
HWND SetFocus ()
 
void SetFont (HFONT hFont, BOOL bRedraw=TRUE)
 
int SetHotKey (WORD wVirtualKeyCode, WORD wModifiers)
 
HICON SetIcon (HICON hIcon, BOOL bBigIcon=TRUE)
 
BOOL SetMenu (HMENU hMenu)
 
HWND SetParent (HWND hWndNewParent)
 
void SetRedraw (BOOL bRedraw=TRUE)
 
int SetScrollInfo (int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw=TRUE)
 
int SetScrollPos (int nBar, int nPos, BOOL bRedraw=TRUE)
 
BOOL SetScrollRange (int nBar, int nMinPos, int nMaxPos, BOOL bRedraw=TRUE)
 
UINT_PTR SetTimer (UINT_PTR nIDEvent, UINT nElapse, void(CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)=NULL)
 
BOOL SetWindowContextHelpId (DWORD dwContextHelpId)
 
LONG SetWindowLong (int nIndex, LONG dwNewLong)
 
LONG_PTR SetWindowLongPtr (int nIndex, LONG_PTR dwNewLong)
 
BOOL SetWindowPlacement (const WINDOWPLACEMENT *lpwndpl)
 
BOOL SetWindowPos (HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
 
int SetWindowRgn (HRGN hRgn, BOOL bRedraw=FALSE)
 
BOOL SetWindowText (LPCTSTR lpszString)
 
WORD SetWindowWord (int nIndex, WORD wNewWord)
 
BOOL ShowCaret ()
 
BOOL ShowOwnedPopups (BOOL bShow=TRUE)
 
BOOL ShowScrollBar (UINT nBar, BOOL bShow=TRUE)
 
BOOL ShowWindow (int nCmdShow)
 
BOOL ShowWindowAsync (int nCmdShow)
 
BOOL UpdateWindow ()
 
BOOL ValidateRect (LPCRECT lpRect)
 
BOOL ValidateRgn (HRGN hRgn)
 
BOOL WinHelp (LPCTSTR lpszHelp, UINT nCmd=HELP_CONTEXT, DWORD dwData=0)
 
- Public Member Functions inherited from ATL::CMessageMap
virtual BOOL ProcessWindowMessage (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult, DWORD dwMsgMapID)=0
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
HRESULT CreateViewWindow3 ([in] IShellBrowser *owner, [in, unique] IShellView *prev_view, [in] SV3CVW3_FLAGS view_flags, [in] FOLDERFLAGS mask, [in] FOLDERFLAGS flags, [in] FOLDERVIEWMODE mode, [in, unique] const SHELLVIEWID *view_id, [in] const RECT *rect, [out] HWND *hwnd)
 
- Public Member Functions inherited from IShellView2
HRESULT GetView ([in, out] SHELLVIEWID *view_guid, [in] ULONG view_type)
 
HRESULT CreateViewWindow2 ([in] LPSV2CVW2_PARAMS view_params)
 
HRESULT HandleRename ([in] PCUITEMID_CHILD new_pidl)
 
HRESULT SelectAndPositionItem ([in] PCUITEMID_CHILD item, [in] UINT flags, [in] POINT *point)
 
HRESULT TranslateAccelerator ([in] MSG *pmsg)
 
HRESULT EnableModeless ([in] BOOL fEnable)
 
HRESULT UIActivate ([in] UINT uState)
 
HRESULT Refresh ()
 
HRESULT CreateViewWindow ([in] IShellView *psvPrevious, [in] LPCFOLDERSETTINGS lpfs, [in] IShellBrowser *psb, [out] RECT *prcView, [out] HWND *phWnd)
 
HRESULT DestroyViewWindow ()
 
HRESULT GetCurrentInfo ([out] LPFOLDERSETTINGS lpfs)
 
HRESULT AddPropertySheetPages ([in] DWORD dwReserved, [in] LPFNSVADDPROPSHEETPAGE pfn, [in] LPARAM lparam)
 
HRESULT SaveViewState ()
 
HRESULT SelectItem ([in] PCUITEMID_CHILD pidlItem, [in] SVSIF uFlags)
 
HRESULT GetItemObject ([in] UINT uItem, [in] REFIID riid, [out, iid_is(riid)] void **ppv)
 
HRESULT GetWindow ([out] HWND *phwnd)
 
HRESULT ContextSensitiveHelp ([in] BOOL fEnterMode)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
HRESULT GetCurrentViewMode ([out] UINT *mode)
 
HRESULT SetCurrentViewMode ([in] UINT mode)
 
HRESULT GetFolder ([in] REFIID riid, [out, iid_is(riid)] void **ppv)
 
HRESULT Item ([in] int index, [out] PITEMID_CHILD *ppidl)
 
HRESULT ItemCount ([in] UINT flags, [out] int *items)
 
HRESULT Items ([in] UINT flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv)
 
HRESULT GetSelectionMarkedItem ([out] int *item)
 
HRESULT GetFocusedItem ([out] int *item)
 
HRESULT GetItemPosition ([in] PCUITEMID_CHILD pidl, [out] POINT *ppt)
 
HRESULT GetSpacing ([in, out, unique] POINT *pt)
 
HRESULT GetDefaultSpacing ([out] POINT *pt)
 
HRESULT GetAutoArrange ()
 
HRESULT SelectItem ([in] int item, [in] DWORD flags)
 
HRESULT SelectAndPositionItems ([in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, unique, size_is(cidl)] POINT *apt, [in] DWORD flags)
 
HRESULT QueryStatus ([in, unique] const GUID *pguidCmdGroup, [in] ULONG cCmds, [in, out, size_is(cCmds)] OLECMD prgCmds[], [in, out, unique] OLECMDTEXT *pCmdText)
 
HRESULT Exec ([in, unique] const GUID *pguidCmdGroup, [in] DWORD nCmdID, [in] DWORD nCmdexecopt, [in, unique] VARIANT *pvaIn, [in, out, unique] VARIANT *pvaOut)
 
HRESULT DragEnter ([in, unique] IDataObject *pDataObj, [in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
HRESULT DragOver ([in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
HRESULT DragLeave ()
 
HRESULT Drop ([in, unique] IDataObject *pDataObj, [in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
HRESULT QueryContinueDrag ([in] BOOL fEscapePressed, [in] DWORD grfKeyState)
 
HRESULT GiveFeedback ([in] DWORD dwEffect)
 
- Public Member Functions inherited from IViewObject
HRESULT Draw ([in] DWORD dwDrawAspect, [in] LONG lindex, [in, unique] void *pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] HDC hdcTargetDev, [in] HDC hdcDraw, [in] LPCRECTL lprcBounds, [in, unique] LPCRECTL lprcWBounds, [in] BOOL(*pfnContinue)(ULONG_PTR dwContinue), [in] ULONG_PTR dwContinue)
 
HRESULT RemoteDraw ([in] DWORD dwDrawAspect, [in] LONG lindex, [in] ULONG_PTR pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] ULONG_PTR hdcTargetDev, [in] ULONG_PTR hdcDraw, [in] LPCRECTL lprcBounds, [in, unique] LPCRECTL lprcWBounds, [in] IContinue *pContinue)
 
HRESULT GetColorSet ([in] DWORD dwDrawAspect, [in] LONG lindex, [in, unique] void *pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] HDC hicTargetDev, [out] LOGPALETTE **ppColorSet)
 
HRESULT RemoteGetColorSet ([in] DWORD dwDrawAspect, [in] LONG lindex, [in] ULONG_PTR pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] ULONG_PTR hicTargetDev, [out] LOGPALETTE **ppColorSet)
 
HRESULT Freeze ([in] DWORD dwDrawAspect, [in] LONG lindex, [in, unique] void *pvAspect, [out] DWORD *pdwFreeze)
 
HRESULT RemoteFreeze ([in] DWORD dwDrawAspect, [in] LONG lindex, [in] ULONG_PTR pvAspect, [out] DWORD *pdwFreeze)
 
HRESULT Unfreeze ([in] DWORD dwFreeze)
 
HRESULT SetAdvise ([in] DWORD aspects, [in] DWORD advf, [in, unique] IAdviseSink *pAdvSink)
 
HRESULT GetAdvise ([out, unique] DWORD *pAspects, [out, unique] DWORD *pAdvf, [out] IAdviseSink **ppAdvSink)
 
HRESULT RemoteGetAdvise ([out] DWORD *pAspects, [out] DWORD *pAdvf, [out] IAdviseSink **ppAdvSink)
 
- Public Member Functions inherited from IServiceProvider
HRESULT QueryService ([in] REFGUID guidService, [in] REFIID riid, [out] void **ppvObject)
 
HRESULT RemoteQueryService ([in] REFGUID guidService, [in] REFIID riid, [out, iid_is(riid)] IUnknown **ppvObject)
 

Static Public Member Functions

static INT CALLBACK ListViewCompareItems (LPARAM lParam1, LPARAM lParam2, LPARAM lpData)
 
static INT CALLBACK fill_list (LPVOID ptr, LPVOID arg)
 
static ATL::CWndClassInfoGetWndClassInfo ()
 
static LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
- Static Public Member Functions inherited from ATL::CWindowImpl< CDefView, CWindow, CControlWinTraits >
static LPCTSTR GetWndCaption ()
 
- Static Public Member Functions inherited from ATL::CWindowImplBaseT< TBase, TWinTraits >
static DWORD GetWndStyle (DWORD dwStyle)
 
static DWORD GetWndExStyle (DWORD dwExStyle)
 
static LRESULT CALLBACK StartWindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
- Static Public Member Functions inherited from ATL::CWindow
static LPCTSTR GetWndClassName ()
 
static LRESULT SendMessage (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 

Private Member Functions

HRESULT _MergeToolbar ()
 
BOOL _Sort (int Col=-1)
 
HRESULT _DoFolderViewCB (UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HRESULT _GetSnapToGrid ()
 
void _MoveSelectionOnAutoArrange (POINT pt)
 
INT _FindInsertableIndexFromPoint (POINT pt)
 
void _HandleStatusBarResize (int width)
 
void _ForceStatusBarResize ()
 
void _DoCopyToMoveToFolder (BOOL bCopy)
 
BOOL IsDesktop () const
 

Private Attributes

CComPtr< IShellFolderm_pSFParent
 
CComPtr< IShellFolder2m_pSF2Parent
 
CComPtr< IShellDetails > m_pSDParent
 
CComPtr< IShellFolderViewCB > m_pShellFolderViewCB
 
CComPtr< IShellBrowserm_pShellBrowser
 
CComPtr< ICommDlgBrowserm_pCommDlgBrowser
 
CComPtr< IShellFolderViewDual > m_pShellFolderViewDual
 
CListView m_ListView
 
HWND m_hWndParent
 
FOLDERSETTINGS m_FolderSettings
 
HMENU m_hMenu
 
HMENU m_hMenuArrangeModes
 
HMENU m_hMenuViewModes
 
HMENU m_hContextMenu
 
BOOL m_bmenuBarInitialized
 
UINT m_uState
 
UINT m_cidl
 
PCUITEMID_CHILDm_apidl
 
PIDLIST_ABSOLUTE m_pidlParent
 
HDPA m_LoadColumnsList
 
HDPA m_ListToFolderColMap
 
LISTVIEW_SORT_INFO m_sortInfo
 
ULONG m_hNotify
 
HACCEL m_hAccel
 
DWORD m_dwAspects
 
DWORD m_dwAdvf
 
CComPtr< IAdviseSinkm_pAdvSink
 
CComPtr< IDataObjectm_pSourceDataObject
 
CComPtr< IDropTargetm_pCurDropTarget
 
CComPtr< IDataObjectm_pCurDataObject
 
LONG m_iDragOverItem
 
UINT m_cScrollDelay
 
POINT m_ptLastMousePos
 
POINT m_ptFirstMousePos
 
DWORD m_grfKeyState
 
CComPtr< IContextMenum_pCM
 
CComPtr< IContextMenum_pFileMenu
 
BOOL m_isEditing
 
BOOL m_isParentFolderSpecial
 
bool m_ScheduledStatusbarUpdate
 
CLSID m_Category
 
BOOL m_Destroyed
 
SFVM_CUSTOMVIEWINFO_DATA m_viewinfo_data
 
HICON m_hMyComputerIcon
 

Additional Inherited Members

- Public Types inherited from ATL::CWindowImplRoot< TBase >
enum  { WINSTATE_DESTROYED = 0x00000001 }
 
- Public Types inherited from IShellView3
enum  _SV3CVW3_FLAGS { SV3CVW3_DEFAULT = 0x00000000 , SV3CVW3_NONINTERACTIVE = 0x00000001 , SV3CVW3_FORCEVIEWMODE = 0x00000002 , SV3CVW3_FORCEFOLDERFLAGS = 0x00000004 }
 
typedef DWORD SV3CVW3_FLAGS
 
- Public Types inherited from IShellView2
typedef GUID SHELLVIEWID
 
typedef struct IShellView2::_SV2CVW2_PARAMS SV2CVW2_PARAMS
 
typedef struct IShellView2::_SV2CVW2_PARAMSLPSV2CVW2_PARAMS
 
- Public Types inherited from IShellView
enum  SVGIO {
  SVGIO_BACKGROUND = 0x00000000 , SVGIO_SELECTION = 0x00000001 , SVGIO_ALLVIEW = 0x00000002 , SVGIO_CHECKED = 0x00000003 ,
  SVGIO_TYPE_MASK = 0x0000000f , SVGIO_FLAG_VIEWORDER = 0x80000000
}
 
enum  SVUIA_STATUS { SVUIA_DEACTIVATE = 0 , SVUIA_ACTIVATE_NOFOCUS = 1 , SVUIA_ACTIVATE_FOCUS = 2 , SVUIA_INPLACEACTIVATE = 3 }
 
typedef IShellViewLPSHELLVIEW
 
typedef UINT SVSIF
 
- Public Types inherited from IOleWindow
typedef IOleWindowLPOLEWINDOW
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IOleCommandTarget
enum  OLECMDF {
  OLECMDF_SUPPORTED = 0x1 , OLECMDF_ENABLED = 0x2 , OLECMDF_LATCHED = 0x4 , OLECMDF_NINCHED = 0x8 ,
  OLECMDF_INVISIBLE = 0x10 , OLECMDF_DEFHIDEONCTXTMENU = 0x20
}
 
enum  OLECMDTEXTF { OLECMDTEXTF_NONE = 0 , OLECMDTEXTF_NAME = 1 , OLECMDTEXTF_STATUS = 2 }
 
enum  OLECMDEXECOPT { OLECMDEXECOPT_DODEFAULT = 0 , OLECMDEXECOPT_PROMPTUSER = 1 , OLECMDEXECOPT_DONTPROMPTUSER = 2 , OLECMDEXECOPT_SHOWHELP = 3 }
 
enum  OLECMDID {
  OLECMDID_OPEN = 1 , OLECMDID_NEW = 2 , OLECMDID_SAVE = 3 , OLECMDID_SAVEAS = 4 ,
  OLECMDID_SAVECOPYAS = 5 , OLECMDID_PRINT = 6 , OLECMDID_PRINTPREVIEW = 7 , OLECMDID_PAGESETUP = 8 ,
  OLECMDID_SPELL = 9 , OLECMDID_PROPERTIES = 10 , OLECMDID_CUT = 11 , OLECMDID_COPY = 12 ,
  OLECMDID_PASTE = 13 , OLECMDID_PASTESPECIAL = 14 , OLECMDID_UNDO = 15 , OLECMDID_REDO = 16 ,
  OLECMDID_SELECTALL = 17 , OLECMDID_CLEARSELECTION = 18 , OLECMDID_ZOOM = 19 , OLECMDID_GETZOOMRANGE = 20 ,
  OLECMDID_UPDATECOMMANDS = 21 , OLECMDID_REFRESH = 22 , OLECMDID_STOP = 23 , OLECMDID_HIDETOOLBARS = 24 ,
  OLECMDID_SETPROGRESSMAX = 25 , OLECMDID_SETPROGRESSPOS = 26 , OLECMDID_SETPROGRESSTEXT = 27 , OLECMDID_SETTITLE = 28 ,
  OLECMDID_SETDOWNLOADSTATE = 29 , OLECMDID_STOPDOWNLOAD = 30 , OLECMDID_ONTOOLBARACTIVATED = 31 , OLECMDID_FIND = 32 ,
  OLECMDID_DELETE = 33 , OLECMDID_HTTPEQUIV = 34 , OLECMDID_HTTPEQUIV_DONE = 35 , OLECMDID_ENABLE_INTERACTION = 36 ,
  OLECMDID_ONUNLOAD = 37 , OLECMDID_PROPERTYBAG2 = 38 , OLECMDID_PREREFRESH = 39 , OLECMDID_SHOWSCRIPTERROR = 40 ,
  OLECMDID_SHOWMESSAGE = 41 , OLECMDID_SHOWFIND = 42 , OLECMDID_SHOWPAGESETUP = 43 , OLECMDID_SHOWPRINT = 44 ,
  OLECMDID_CLOSE = 45 , OLECMDID_ALLOWUILESSSAVEAS = 46 , OLECMDID_DONTDOWNLOADCSS = 47 , OLECMDID_UPDATEPAGESTATUS = 48 ,
  OLECMDID_PRINT2 = 49 , OLECMDID_PRINTPREVIEW2 = 50 , OLECMDID_SETPRINTTEMPLATE = 51 , OLECMDID_GETPRINTTEMPLATE = 52 ,
  OLECMDID_PAGEACTIONBLOCKED = 55 , OLECMDID_PAGEACTIONUIQUERY = 56 , OLECMDID_FOCUSVIEWCONTROLS = 57 , OLECMDID_FOCUSVIEWCONTROLSQUERY = 58 ,
  OLECMDID_SHOWPAGEACTIONMENU = 59 , OLECMDID_ADDTRAVELENTRY = 60 , OLECMDID_UPDATETRAVELENTRY = 61 , OLECMDID_UPDATEBACKFORWARDSTATE = 62 ,
  OLECMDID_OPTICAL_ZOOM = 63 , OLECMDID_OPTICAL_GETZOOMRANGE = 64 , OLECMDID_WINDOWSTATECHANGED = 65 , OLECMDID_ACTIVEXINSTALLSCOPE = 66 ,
  OLECMDID_UPDATETRAVELENTRY_DATARECOVERY = 67 , OLECMDID_SHOWTASKDLG = 68 , OLECMDID_POPSTATEEVENT = 69 , OLECMDID_VIEWPORT_MODE = 70 ,
  OLECMDID_LAYOUT_VIEWPORT_WIDTH = 71 , OLECMDID_VISUAL_VIEWPORT_EXCLUDE_BOTTOM = 72 , OLECMDID_USER_OPTICAL_ZOOM = 73 , OLECMDID_PAGEAVAILABLE = 74 ,
  OLECMDID_GETUSERSCALABLE = 75 , OLECMDID_UPDATE_CARET = 76 , OLECMDID_ENABLE_VISIBILITY = 77 , OLECMDID_MEDIA_PLAYBACK = 78
}
 
typedef IOleCommandTargetLPOLECOMMANDTARGET
 
typedef enum IOleCommandTarget::OLECMDF OLECMDF
 
typedef struct IOleCommandTarget::_tagOLECMD OLECMD
 
typedef struct IOleCommandTarget::_tagOLECMDTEXT OLECMDTEXT
 
typedef enum IOleCommandTarget::OLECMDTEXTF OLECMDTEXTF
 
typedef enum IOleCommandTarget::OLECMDEXECOPT OLECMDEXECOPT
 
typedef enum IOleCommandTarget::OLECMDID OLECMDID
 
- Public Types inherited from IDropTarget
typedef IDropTargetLPDROPTARGET
 
- Public Types inherited from IDropSource
typedef IDropSourceLPDROPSOURCE
 
- Public Types inherited from IViewObject
typedef IViewObjectLPVIEWOBJECT
 
- Public Types inherited from IServiceProvider
typedef IServiceProviderLPSERVICEPROVIDER
 
- Public Attributes inherited from ATL::CWindowImplBaseT< TBase, TWinTraits >
WNDPROC m_pfnSuperWindowProc
 
- Public Attributes inherited from ATL::CWindowImplRoot< TBase >
CWndProcThunk m_thunk
 
const _ATL_MSGm_pCurrentMsg
 
DWORD m_dwState
 
- Public Attributes inherited from ATL::CWindow
HWND m_hWnd
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 
- Public Attributes inherited from IDropTarget
const DWORD MK_ALT = 0x20
 
const DWORD DROPEFFECT_NONE = 0
 
const DWORD DROPEFFECT_COPY = 1
 
const DWORD DROPEFFECT_MOVE = 2
 
const DWORD DROPEFFECT_LINK = 4
 
const DWORD DROPEFFECT_SCROLL = 0x80000000
 
const DWORD DD_DEFSCROLLINSET = 11
 
const DWORD DD_DEFSCROLLDELAY = 50
 
const DWORD DD_DEFSCROLLINTERVAL = 50
 
const DWORD DD_DEFDRAGDELAY = 200
 
const DWORD DD_DEFDRAGMINDIST = 2
 
- Static Public Attributes inherited from ATL::CWindow
static RECT rcDefault
 

Detailed Description

Definition at line 214 of file CDefView.cpp.

Constructor & Destructor Documentation

◆ CDefView()

CDefView::CDefView ( )

Definition at line 554 of file CDefView.cpp.

554 :
555 m_ListView(),
557 m_hMenu(NULL),
562 m_uState(0),
563 m_cidl(0),
564 m_apidl(NULL),
567 m_hNotify(0),
568 m_hAccel(NULL),
569 m_dwAspects(0),
570 m_dwAdvf(0),
577{
584
588}
#define shell32_hInstance
HMENU m_hMenu
Definition: CDefView.cpp:237
HDPA m_LoadColumnsList
Definition: CDefView.cpp:246
bool m_ScheduledStatusbarUpdate
Definition: CDefView.cpp:269
HMENU m_hMenuArrangeModes
Definition: CDefView.cpp:238
HWND m_hWndParent
Definition: CDefView.cpp:235
DWORD m_dwAdvf
Definition: CDefView.cpp:252
DWORD m_dwAspects
Definition: CDefView.cpp:251
BOOL m_isParentFolderSpecial
Definition: CDefView.cpp:268
UINT m_cScrollDelay
Definition: CDefView.cpp:259
LISTVIEW_SORT_INFO m_sortInfo
Definition: CDefView.cpp:248
PIDLIST_ABSOLUTE m_pidlParent
Definition: CDefView.cpp:245
HMENU m_hContextMenu
Definition: CDefView.cpp:240
BOOL m_Destroyed
Definition: CDefView.cpp:272
PCUITEMID_CHILD * m_apidl
Definition: CDefView.cpp:244
HDPA m_ListToFolderColMap
Definition: CDefView.cpp:247
CLSID m_Category
Definition: CDefView.cpp:271
HICON m_hMyComputerIcon
Definition: CDefView.cpp:275
BOOL m_bmenuBarInitialized
Definition: CDefView.cpp:241
UINT m_cidl
Definition: CDefView.cpp:243
UINT m_uState
Definition: CDefView.cpp:242
BOOL m_isEditing
Definition: CDefView.cpp:267
POINT m_ptLastMousePos
Definition: CDefView.cpp:260
ULONG m_hNotify
Definition: CDefView.cpp:249
LONG m_iDragOverItem
Definition: CDefView.cpp:258
HMENU m_hMenuViewModes
Definition: CDefView.cpp:239
HACCEL m_hAccel
Definition: CDefView.cpp:250
FOLDERSETTINGS m_FolderSettings
Definition: CDefView.cpp:236
CListView m_ListView
Definition: CDefView.cpp:234
SFVM_CUSTOMVIEWINFO_DATA m_viewinfo_data
Definition: CDefView.cpp:273
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
HDPA WINAPI DPA_Create(INT nGrow)
Definition: dpa.c:950
#define IDI_SHELL_COMPUTER_DESKTOP
Definition: shresdef.h:650
#define ZeroMemory
Definition: winbase.h:1712
DWORD WINAPI GetSysColor(_In_ int)
#define COLOR_WINDOW
Definition: winuser.h:918
#define COLOR_WINDOWTEXT
Definition: winuser.h:921
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2119

◆ ~CDefView()

CDefView::~CDefView ( )

Definition at line 590 of file CDefView.cpp.

591{
592 TRACE(" destroying IShellView(%p)\n", this);
593
595
597 {
600 }
601
602 if (m_hWnd)
603 {
605 }
606
610}
#define SFVM_VIEWRELEASE
HWND m_hWnd
Definition: atlwin.h:273
STDMETHOD() DestroyViewWindow() override
Definition: CDefView.cpp:3058
HRESULT _DoFolderViewCB(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CDefView.cpp:4599
BOOL WINAPI DPA_Destroy(HDPA hdpa)
Definition: dpa.c:396
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
pKey DeleteObject()
#define TRACE(s)
Definition: solgame.cpp:4

Member Function Documentation

◆ _DoCopyToMoveToFolder()

void CDefView::_DoCopyToMoveToFolder ( BOOL  bCopy)
private

Definition at line 2342 of file CDefView.cpp.

2343{
2344 if (!GetSelections())
2345 return;
2346
2347 SFGAOF rfg = SFGAO_CANCOPY | SFGAO_CANMOVE | SFGAO_FILESYSTEM;
2348 HRESULT hr = m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &rfg);
2350 return;
2351
2352 if (!bCopy && !(rfg & SFGAO_CANMOVE))
2353 return;
2354 if (bCopy && !(rfg & SFGAO_CANCOPY))
2355 return;
2356
2358 hr = m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, IID_IContextMenu, 0, (void **)&pCM);
2360 return;
2361
2362 InvokeContextMenuCommand(pCM, (bCopy ? "copyto" : "moveto"), NULL);
2363}
CComPtr< IShellFolder > m_pSFParent
Definition: CDefView.cpp:227
HRESULT InvokeContextMenuCommand(CComPtr< IContextMenu > &pCM, LPCSTR lpVerb, POINT *pt=NULL)
Definition: CDefView.cpp:2034
UINT GetSelections()
Definition: CDefView.cpp:2001
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
Definition: ebrowser.c:83
HRESULT hr
Definition: shlfolder.c:183

Referenced by OnCommand().

◆ _DoFolderViewCB()

HRESULT CDefView::_DoFolderViewCB ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
private

Definition at line 4599 of file CDefView.cpp.

4600{
4602
4604 {
4605 hr = m_pShellFolderViewCB->MessageSFVCB(uMsg, wParam, lParam);
4606 }
4607
4608 return hr;
4609}
CComPtr< IShellFolderViewCB > m_pShellFolderViewCB
Definition: CDefView.cpp:230
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define E_NOTIMPL
Definition: ddrawi.h:99

Referenced by AddPropertySheetPages(), CreateList(), CreateViewWindow3(), DestroyViewWindow(), FillList(), GetDefaultViewMode(), InvokeContextMenuCommand(), LV_AddItem(), LV_DeleteItem(), LV_UpdateItem(), OnChangeNotify(), OnCommand(), OnCreate(), OnNotify(), OnSize(), Refresh(), and ~CDefView().

◆ _FindInsertableIndexFromPoint()

INT CDefView::_FindInsertableIndexFromPoint ( POINT  pt)
private

Definition at line 4252 of file CDefView.cpp.

4253{
4254 RECT rcBound;
4255 INT i, nCount = m_ListView.GetItemCount();
4256 DWORD dwSpacing;
4257 INT dx, dy;
4258 BOOL bSmall = ((m_ListView.GetStyle() & LVS_TYPEMASK) != LVS_ICON);
4259
4260 // FIXME: LVM_GETORIGIN is broken. See CORE-17266
4261 pt.x += m_ListView.GetScrollPos(SB_HORZ);
4262 pt.y += m_ListView.GetScrollPos(SB_VERT);
4263
4264 if (m_ListView.GetStyle() & LVS_ALIGNLEFT)
4265 {
4266 // vertically
4267 for (i = 0; i < nCount; ++i)
4268 {
4269 dwSpacing = ListView_GetItemSpacing(m_ListView, bSmall);
4270 dx = LOWORD(dwSpacing);
4271 dy = HIWORD(dwSpacing);
4273 rcBound.right = rcBound.left + dx;
4274 rcBound.bottom = rcBound.top + dy;
4275 if (pt.x < rcBound.right && pt.y < (rcBound.top + rcBound.bottom) / 2)
4276 {
4277 return i;
4278 }
4279 }
4280 for (i = nCount - 1; i >= 0; --i)
4281 {
4283 if (rcBound.left < pt.x && rcBound.top < pt.y)
4284 {
4285 return i + 1;
4286 }
4287 }
4288 }
4289 else
4290 {
4291 // horizontally
4292 for (i = 0; i < nCount; ++i)
4293 {
4294 dwSpacing = ListView_GetItemSpacing(m_ListView, bSmall);
4295 dx = LOWORD(dwSpacing);
4296 dy = HIWORD(dwSpacing);
4298 rcBound.right = rcBound.left + dx;
4299 rcBound.bottom = rcBound.top + dy;
4300 if (pt.y < rcBound.bottom && pt.x < rcBound.left)
4301 {
4302 return i;
4303 }
4304 if (pt.y < rcBound.bottom && pt.x < rcBound.right)
4305 {
4306 return i + 1;
4307 }
4308 }
4309 for (i = nCount - 1; i >= 0; --i)
4310 {
4312 if (rcBound.left < pt.x && rcBound.top < pt.y)
4313 {
4314 return i + 1;
4315 }
4316 }
4317 }
4318
4319 return nCount;
4320}
int GetItemCount()
Definition: rosctrls.h:121
#define pt(x, y)
Definition: drawing.c:79
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLint dy
Definition: linetemp.h:97
GLint dx
Definition: linetemp.h:97
#define LOWORD(l)
Definition: pedump.c:82
#define ListView_GetItemRect(hwnd, i, prc, code)
Definition: commctrl.h:2478
#define LVS_ICON
Definition: commctrl.h:2261
#define LVS_TYPEMASK
Definition: commctrl.h:2265
#define LVIR_SELECTBOUNDS
Definition: commctrl.h:2475
#define LVS_ALIGNLEFT
Definition: commctrl.h:2280
#define ListView_GetItemSpacing(hwndLV, fSmall)
Definition: commctrl.h:2712
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
#define SB_VERT
Definition: winuser.h:553
#define SB_HORZ
Definition: winuser.h:552

Referenced by _MoveSelectionOnAutoArrange().

◆ _ForceStatusBarResize()

void CDefView::_ForceStatusBarResize ( )
private

Definition at line 4348 of file CDefView.cpp.

4349{
4350 // Get the handle for the status bar
4351 HWND fStatusBar;
4352 m_pShellBrowser->GetControlWindow(FCW_STATUS, &fStatusBar);
4353
4354 // Get the size of our status bar
4355 RECT statusBarSize;
4356 ::GetWindowRect(fStatusBar, &statusBarSize);
4357
4358 // Resize the status bar
4359 _HandleStatusBarResize(statusBarSize.right - statusBarSize.left);
4360}
CComPtr< IShellBrowser > m_pShellBrowser
Definition: CDefView.cpp:231
void _HandleStatusBarResize(int width)
Definition: CDefView.cpp:4322
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)

Referenced by OnCreate(), OnSize(), and UIActivate().

◆ _GetSnapToGrid()

HRESULT CDefView::_GetSnapToGrid ( )
private

Definition at line 3589 of file CDefView.cpp.

3590{
3591 DWORD dwExStyle = (DWORD)m_ListView.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
3592 return ((dwExStyle & LVS_EX_SNAPTOGRID) ? S_OK : S_FALSE);
3593}
#define S_OK
Definition: intsafe.h:52
#define DWORD
Definition: nt_native.h:44
#define LVS_EX_SNAPTOGRID
Definition: commctrl.h:2748
#define LVM_GETEXTENDEDLISTVIEWSTYLE
Definition: commctrl.h:2727
#define S_FALSE
Definition: winerror.h:2357

Referenced by FillArrangeAsMenu(), OnCommand(), and UpdateFolderViewFlags().

◆ _HandleStatusBarResize()

void CDefView::_HandleStatusBarResize ( int  width)
private

Definition at line 4322 of file CDefView.cpp.

4323{
4324 LRESULT lResult;
4325
4327 {
4328 int nPartArray[] = {-1};
4329 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETPARTS, _countof(nPartArray), (LPARAM)nPartArray, &lResult);
4330 return;
4331 }
4332
4333 int nFileSizePartLength = 125;
4334 const int nLocationPartLength = 150;
4335 const int nRightPartsLength = nFileSizePartLength + nLocationPartLength;
4336 int nObjectsPartLength = nWidth - nRightPartsLength;
4337
4338 // If the window is small enough just divide each part into thirds
4339 // to match the behavior of Windows Server 2003
4340 if (nObjectsPartLength <= nLocationPartLength)
4341 nObjectsPartLength = nFileSizePartLength = nWidth / 3;
4342
4343 int nPartArray[] = {nObjectsPartLength, nObjectsPartLength + nFileSizePartLength, -1};
4344
4345 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETPARTS, _countof(nPartArray), (LPARAM)nPartArray, &lResult);
4346}
#define SB_SETPARTS
Definition: commctrl.h:1954
#define _countof(array)
Definition: sndvol32.h:70
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209

Referenced by _ForceStatusBarResize().

◆ _MergeToolbar()

HRESULT CDefView::_MergeToolbar ( )
private

Definition at line 4572 of file CDefView.cpp.

4573{
4575 HRESULT hr = S_OK;
4576
4577 hr = IUnknown_QueryService(m_pShellBrowser, IID_IExplorerToolbar, IID_PPV_ARG(IExplorerToolbar, &ptb));
4578 if (FAILED(hr))
4579 return hr;
4580
4581 m_Category = CGID_DefViewFrame;
4582
4583 hr = ptb->SetCommandTarget(static_cast<IOleCommandTarget*>(this), &m_Category, 0);
4584 if (FAILED(hr))
4585 return hr;
4586
4587 if (hr == S_FALSE)
4588 return S_OK;
4589
4590#if 0
4591 hr = ptb->AddButtons(&m_Category, buttonsCount, buttons);
4592 if (FAILED(hr))
4593 return hr;
4594#endif
4595
4596 return S_OK;
4597}
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
Definition: ordinal.c:1497
#define FAILED(hr)
Definition: intsafe.h:51
HWND buttons[5]
Definition: sndrec32.cpp:40
#define IID_PPV_ARG(Itype, ppType)

Referenced by CreateViewWindow3().

◆ _MoveSelectionOnAutoArrange()

void CDefView::_MoveSelectionOnAutoArrange ( POINT  pt)
private

Definition at line 4376 of file CDefView.cpp.

4377{
4378 // get insertable index from position
4380
4381 // create identity mapping of indexes
4383 INT nCount = m_ListView.GetItemCount();
4384 for (INT i = 0; i < nCount; ++i)
4385 {
4386 array.Add(i);
4387 }
4388
4389 // re-ordering mapping
4390 INT iItem = -1;
4391 while ((iItem = m_ListView.GetNextItem(iItem, LVNI_SELECTED)) >= 0)
4392 {
4393 INT iFrom = iItem, iTo = iPosition;
4394 if (iFrom < iTo)
4395 --iTo;
4396 if (iFrom >= nCount)
4397 iFrom = nCount - 1;
4398 if (iTo >= nCount)
4399 iTo = nCount - 1;
4400
4401 // shift indexes by swapping (like a bucket relay)
4402 if (iFrom < iTo)
4403 {
4404 for (INT i = iFrom; i < iTo; ++i)
4405 {
4406 // swap array[i] and array[i + 1]
4407 INT tmp = array[i];
4408 array[i] = array[i + 1];
4409 array[i + 1] = tmp;
4410 }
4411 }
4412 else
4413 {
4414 for (INT i = iFrom; i > iTo; --i)
4415 {
4416 // swap array[i] and array[i - 1]
4417 INT tmp = array[i];
4418 array[i] = array[i - 1];
4419 array[i - 1] = tmp;
4420 }
4421 }
4422 }
4423
4424 // create mapping (ListView's lParam to index) from array
4426 for (INT i = 0; i < nCount; ++i)
4427 {
4429 map.Add(lParam, i);
4430 }
4431
4432 // finally sort
4434}
static INT CALLBACK SelectionMoveCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
Definition: CDefView.cpp:4365
INT _FindInsertableIndexFromPoint(POINT pt)
Definition: CDefView.cpp:4252
int GetNextItem(int i, WORD flags)
Definition: rosctrls.h:161
BOOL SortItems(PFNLVCOMPARE pfnCompare, PVOID lParam)
Definition: rosctrls.h:141
DWORD_PTR GetItemData(int i)
Definition: rosctrls.h:204
Definition: _map.h:48
#define LVNI_SELECTED
Definition: commctrl.h:2424

Referenced by Drop().

◆ _PidlByItem() [1/2]

PCUITEMID_CHILD CDefView::_PidlByItem ( int  i)

Definition at line 1277 of file CDefView.cpp.

1278{
1279 if (!m_ListView)
1280 return nullptr;
1281 return reinterpret_cast<PCUITEMID_CHILD>(m_ListView.GetItemData(i));
1282}
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
Definition: shtypes.idl:70

Referenced by drag_notify_subitem(), GetSelections(), Item(), LV_FindItemByPidl(), OnNotify(), and UpdateStatusbar().

◆ _PidlByItem() [2/2]

PCUITEMID_CHILD CDefView::_PidlByItem ( LVITEM lvItem)

Definition at line 1284 of file CDefView.cpp.

1285{
1286 if (!m_ListView)
1287 return nullptr;
1288 return reinterpret_cast<PCUITEMID_CHILD>(lvItem.lParam);
1289}

◆ _Sort()

BOOL CDefView::_Sort ( int  Col = -1)
private

Definition at line 1225 of file CDefView.cpp.

1226{
1227 HWND hHeader;
1228 HDITEM hColumn;
1229 int prevCol = m_sortInfo.ListColumn;
1231
1232 // FIXME: Is this correct? Who sets this style?
1233 // And if it is set, should it also block sorting using the menu?
1234 // Any why should it block sorting when the view is loaded initially?
1235 if (m_ListView.GetWindowLongPtr(GWL_STYLE) & LVS_NOSORTHEADER)
1236 return TRUE;
1237
1238 hHeader = ListView_GetHeader(m_ListView.m_hWnd);
1239 if (Col != -1)
1240 {
1241 if (Col >= Header_GetItemCount(hHeader))
1242 {
1243 ERR("Sort column out of range\n");
1244 return FALSE;
1245 }
1246
1247 if (prevCol == Col)
1248 m_sortInfo.Direction *= -1;
1249 else
1251 m_sortInfo.ListColumn = Col;
1252 }
1253 if (!m_sortInfo.Direction)
1254 m_sortInfo.Direction += 1;
1255
1256 /* If the sorting column changed, remove the sorting style from the old column */
1257 if (prevCol != -1 && prevCol != m_sortInfo.ListColumn)
1258 {
1259 hColumn.mask = HDI_FORMAT;
1260 Header_GetItem(hHeader, prevCol, &hColumn);
1261 hColumn.fmt &= ~(HDF_SORTUP | HDF_SORTDOWN);
1262 Header_SetItem(hHeader, prevCol, &hColumn);
1263 }
1264
1265 /* Set the sorting style on the new column */
1266 hColumn.mask = HDI_FORMAT;
1267 Header_GetItem(hHeader, m_sortInfo.ListColumn, &hColumn);
1268 hColumn.fmt &= ~(HDF_SORTDOWN | HDF_SORTUP);
1269 hColumn.fmt |= (m_sortInfo.Direction > 0 ? HDF_SORTUP : HDF_SORTDOWN);
1270 Header_SetItem(hHeader, m_sortInfo.ListColumn, &hColumn);
1271
1272 /* Sort the list, using the current values of ListColumn and bIsAscending */
1275}
#define ERR(fmt,...)
Definition: precomp.h:57
static INT CALLBACK ListViewCompareItems(LPARAM lParam1, LPARAM lParam2, LPARAM lpData)
Definition: CDefView.cpp:1211
#define TRUE
Definition: types.h:120
#define ASSERT(a)
Definition: mode.c:44
#define Header_GetItem(hwndHD, i, phdi)
Definition: commctrl.h:751
#define Header_SetItem(hwndHD, i, phdi)
Definition: commctrl.h:758
#define ListView_GetHeader(hwnd)
Definition: commctrl.h:2651
#define HDF_SORTUP
Definition: commctrl.h:724
#define HDI_FORMAT
Definition: commctrl.h:705
#define LVS_NOSORTHEADER
Definition: commctrl.h:2285
#define Header_GetItemCount(hwndHD)
Definition: commctrl.h:734
#define HDITEM
Definition: commctrl.h:697
#define HDF_SORTDOWN
Definition: commctrl.h:725
bool bLoadedFromViewState
Definition: CDefView.cpp:63
#define GWL_STYLE
Definition: winuser.h:852

Referenced by FillList(), OnCommand(), and OnNotify().

◆ AddObject()

HRESULT STDMETHODCALLTYPE CDefView::AddObject ( PITEMID_CHILD  pidl,
UINT item 
)
override

Definition at line 3795 of file CDefView.cpp.

3796{
3797 TRACE("(%p)->(%p %p)\n", this, pidl, item);
3798 if (!m_ListView)
3799 {
3800 ERR("!m_ListView\n");
3801 return E_FAIL;
3802 }
3803 *item = LV_AddItem(pidl);
3804 return (int)*item >= 0 ? S_OK : E_OUTOFMEMORY;
3805}
int LV_AddItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:1306
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
static ATOM item
Definition: dde.c:856

◆ AddPropertySheetPages()

HRESULT WINAPI CDefView::AddPropertySheetPages ( DWORD  dwReserved,
LPFNSVADDPROPSHEETPAGE  pfn,
LPARAM  lparam 
)
override

Implements IShellView.

Definition at line 3118 of file CDefView.cpp.

3119{
3120 TRACE("(%p)->(0x%lX, %p, %p)\n", this, dwReserved, lpfn, lparam);
3121
3124 return S_OK;
3125}
@ lparam
Definition: SystemMenu.c:31
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
#define SFVM_ADDPROPERTYPAGES
Definition: shlobj.h:1334

◆ ArrangeGrid()

HRESULT STDMETHODCALLTYPE CDefView::ArrangeGrid ( )
override

Definition at line 3782 of file CDefView.cpp.

3783{
3785 return S_OK;
3786}
DWORD SetExtendedListViewStyle(DWORD dw, DWORD dwMask=0)
Definition: rosctrls.h:47

Referenced by OnCommand().

◆ AutoArrange()

HRESULT STDMETHODCALLTYPE CDefView::AutoArrange ( )
override

Definition at line 3788 of file CDefView.cpp.

3789{
3790 m_ListView.ModifyStyle(0, LVS_AUTOARRANGE);
3792 return S_OK;
3793}
BOOL Arrange(UINT nCode)
Definition: rosctrls.h:241
#define LVA_DEFAULT
Definition: commctrl.h:2527
#define LVS_AUTOARRANGE
Definition: commctrl.h:2272

Referenced by OnCommand().

◆ CheckToolbar()

void CDefView::CheckToolbar ( )

Definition at line 670 of file CDefView.cpp.

671{
673
674 TRACE("\n");
675
676 if (m_pCommDlgBrowser != NULL)
677 {
678 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_CHECKBUTTON,
680 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_CHECKBUTTON,
682 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON,
684 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON,
686 }
687}
CComPtr< ICommDlgBrowser > m_pCommDlgBrowser
Definition: CDefView.cpp:232
GLuint64EXT * result
Definition: glext.h:11304
#define TB_CHECKBUTTON
Definition: commctrl.h:1043
#define TB_ENABLEBUTTON
Definition: commctrl.h:1042
@ FVM_LIST
Definition: shobjidl.idl:681
@ FVM_DETAILS
Definition: shobjidl.idl:682
#define FCIDM_TB_SMALLICON
Definition: shresdef.h:862
#define FCIDM_TB_REPORTVIEW
Definition: shresdef.h:863

Referenced by CreateViewWindow3(), and OnCommand().

◆ CheckViewMode()

HRESULT CDefView::CheckViewMode ( HMENU  hmenuView)

Definition at line 1881 of file CDefView.cpp.

1882{
1884 {
1885 UINT iItemFirst = FCIDM_SHVIEW_BIGICON;
1886 UINT iItemLast = iItemFirst + FVM_LAST - FVM_FIRST;
1887 UINT iItem = iItemFirst + m_FolderSettings.ViewMode - FVM_FIRST;
1888 CheckMenuRadioItem(hmenuView, iItemFirst, iItemLast, iItem, MF_BYCOMMAND);
1889 }
1890
1891 return S_OK;
1892}
unsigned int UINT
Definition: ndis.h:50
@ FVM_LAST
Definition: shobjidl.idl:687
@ FVM_FIRST
Definition: shobjidl.idl:679
#define FCIDM_SHVIEW_BIGICON
Definition: shresdef.h:841
#define MF_BYCOMMAND
Definition: winuser.h:202
BOOL WINAPI CheckMenuRadioItem(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT, _In_ UINT)

Referenced by Exec(), and OnInitMenuPopup().

◆ ColumnListChanged()

void CDefView::ColumnListChanged ( )

Definition at line 1146 of file CDefView.cpp.

1147{
1149 m_ListToFolderColMap = NULL; // No cache while we are building the cache
1151 for (UINT i = 0;; ++i)
1152 {
1154 if (FAILED(hr))
1155 break; // No more columns
1156 if (!DPA_SetPtr(cache, i, (void*)(INT_PTR) hr))
1157 break; // Cannot allow holes in the cache, must stop now.
1158 }
1160
1161 for (;;)
1162 {
1164 break;
1165 }
1167 if (hMenu)
1168 {
1169 hMenu = GetSubmenuByID(hMenu, FCIDM_SHVIEW_ARRANGE);
1170 for (UINT i = DVIDM_ARRANGESORT_FIRST; i <= DVIDM_ARRANGESORT_LAST && hMenu; ++i)
1171 {
1172 RemoveMenu(hMenu, i, MF_BYCOMMAND);
1173 }
1174 if ((int) GetMenuItemID(hMenu, 0) <= 0)
1175 RemoveMenu(hMenu, 0, MF_BYPOSITION); // Separator
1176 }
1178 LVCOLUMN lvc;
1179 lvc.mask = LVCF_TEXT;
1180 lvc.pszText = buf;
1181 lvc.cchTextMax = _countof(buf);
1182 for (UINT listCol = 0; listCol < DEFVIEW_ARRANGESORT_MAXENUM; ++listCol)
1183 {
1184 if (!ListView_GetColumn(m_ListView.m_hWnd, listCol, &lvc))
1185 break;
1186 HRESULT foldCol = MapListColumnToFolderColumn(listCol);
1187 assert(SUCCEEDED(foldCol));
1189 DVIDM_ARRANGESORT_FIRST + listCol, lvc.pszText, listCol);
1190 }
1191
1192 ListView_RedrawItems(m_ListView.m_hWnd, 0, 0x7fffffff);
1193 m_ListView.InvalidateRect(NULL, TRUE);
1194}
static BOOL AppendMenuItem(HMENU hMenu, UINT MF, UINT Id, LPCWSTR String, SIZE_T Data=0)
Definition: CDefView.cpp:156
@ DVIDM_ARRANGESORT_FIRST
Definition: CDefView.cpp:50
@ DEFVIEW_ARRANGESORT_MAXENUM
Definition: CDefView.cpp:47
@ DVIDM_ARRANGESORT_LAST
Definition: CDefView.cpp:49
static HMENU GetSubmenuByID(HMENU hmenu, UINT id)
Definition: CDefView.cpp:180
HRESULT MapListColumnToFolderColumn(UINT ListCol)
Definition: CDefView.cpp:992
BOOL WINAPI DPA_SetPtr(HDPA hdpa, INT i, LPVOID p)
Definition: dpa.c:626
BOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa)
Definition: dpa.c:730
#define MAX_PATH
Definition: compat.h:34
#define assert(x)
Definition: debug.h:53
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#define ListView_GetColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2622
#define ListView_RedrawItems(hwndLV, iFirst, iLast)
Definition: commctrl.h:2525
#define LVCF_TEXT
Definition: commctrl.h:2588
#define LVCOLUMN
Definition: commctrl.h:2581
#define FCIDM_MENU_VIEW
Definition: shlobj.h:632
#define FCIDM_SHVIEW_ARRANGE
Definition: shresdef.h:827
Definition: dpa.c:49
Definition: cache.c:49
int32_t INT_PTR
Definition: typedefs.h:64
#define MF_STRING
Definition: winuser.h:138
UINT WINAPI GetMenuItemID(_In_ HMENU, _In_ int)
#define MF_BYPOSITION
Definition: winuser.h:203
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by DoColumnContextMenu(), and LoadColumns().

◆ ContextSensitiveHelp()

HRESULT WINAPI CDefView::ContextSensitiveHelp ( BOOL  fEnterMode)
override

Implements IOleWindow.

Definition at line 2987 of file CDefView.cpp.

2988{
2989 FIXME("(%p) stub\n", this);
2990
2991 return E_NOTIMPL;
2992}
#define FIXME(fmt,...)
Definition: precomp.h:53

◆ CreateList()

BOOL CDefView::CreateList ( )

Definition at line 787 of file CDefView.cpp.

788{
789 HRESULT hr;
790 DWORD dwStyle, dwExStyle, ListExStyle;
791 UINT ViewMode;
792
793 TRACE("%p\n", this);
794
796 LVS_SHAREIMAGELISTS | LVS_EDITLABELS | LVS_AUTOARRANGE; // FIXME: Remove LVS_AUTOARRANGE when the view is able to save ItemPos
798 ListExStyle = LVS_EX_INFOTIP | LVS_EX_LABELTIP;
799
801 {
803 dwStyle |= LVS_ALIGNLEFT;
804 // LVS_EX_REGIONAL?
805 }
806 else
807 {
808 dwStyle |= LVS_SHOWSELALWAYS; // MSDN says FWF_SHOWSELALWAYS is deprecated, always turn on for folders
810 ListExStyle |= LVS_EX_DOUBLEBUFFER;
811 }
812
813 ViewMode = m_FolderSettings.ViewMode;
814 hr = _DoFolderViewCB(SFVM_DEFVIEWMODE, 0, (LPARAM)&ViewMode);
815 if (SUCCEEDED(hr))
816 {
817 if (ViewMode >= FVM_FIRST && ViewMode <= FVM_LAST)
818 m_FolderSettings.ViewMode = ViewMode;
819 else
820 ERR("Ignoring invalid ViewMode from SFVM_DEFVIEWMODE: %u (was: %u)\n", ViewMode, m_FolderSettings.ViewMode);
821 }
822
824 {
825 case FVM_ICON:
826 dwStyle |= LVS_ICON;
827 break;
828 case FVM_DETAILS:
829 dwStyle |= LVS_REPORT;
830 break;
831 case FVM_SMALLICON:
832 dwStyle |= LVS_SMALLICON;
833 break;
834 case FVM_LIST:
835 dwStyle |= LVS_LIST;
836 break;
837 default:
838 dwStyle |= LVS_LIST;
839 break;
840 }
841
843 dwStyle |= LVS_AUTOARRANGE;
844
846 ListExStyle |= LVS_EX_SNAPTOGRID;
847
849 dwStyle |= LVS_SINGLESEL;
850
852 ListExStyle |= LVS_EX_FULLROWSELECT;
853
855 (!SHELL_GetSetting(SSF_DOUBLECLICKINWEBVIEW, fDoubleClickInWebView) && !SHELL_GetSetting(SSF_WIN95CLASSIC, fWin95Classic)))
857
859 dwStyle |= LVS_NOCOLUMNHEADER;
860
861#if 0
862 // FIXME: Because this is a negative, everyone gets the new flag by default unless they
863 // opt out. This code should be enabled when shell looks like Vista instead of 2003
865 ListExStyle |= LVS_EX_HEADERINALLVIEWS;
866#endif
867
869 dwExStyle &= ~WS_EX_CLIENTEDGE;
870
871 RECT rcListView = {0,0,0,0};
872 m_ListView.Create(m_hWnd, rcListView, L"FolderView", dwStyle, dwExStyle, ID_LISTVIEW);
873
874 if (!m_ListView)
875 return FALSE;
876
878
879 /* UpdateShellSettings(); */
880 return TRUE;
881}
#define ID_LISTVIEW
Definition: CDefView.cpp:545
HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: rosctrls.h:8
#define L(x)
Definition: ntvdm.h:50
#define WS_TABSTOP
Definition: pedump.c:634
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_CHILDWINDOW
Definition: pedump.c:639
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
#define LVS_EX_ONECLICKACTIVATE
Definition: commctrl.h:2735
#define LVS_SINGLESEL
Definition: commctrl.h:2266
#define LVS_SHAREIMAGELISTS
Definition: commctrl.h:2270
#define LVS_EX_LABELTIP
Definition: commctrl.h:2743
#define LVS_NOCOLUMNHEADER
Definition: commctrl.h:2284
#define LVS_SHOWSELALWAYS
Definition: commctrl.h:2267
#define LVS_REPORT
Definition: commctrl.h:2262
#define LVS_SMALLICON
Definition: commctrl.h:2263
#define LVS_ALIGNTOP
Definition: commctrl.h:2279
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2734
#define LVS_EX_TRACKSELECT
Definition: commctrl.h:2732
#define LVS_EDITLABELS
Definition: commctrl.h:2273
#define LVS_EX_DOUBLEBUFFER
Definition: commctrl.h:2745
#define LVS_LIST
Definition: commctrl.h:2264
#define LVS_EX_INFOTIP
Definition: commctrl.h:2739
#define SHELL_GetSetting(pss, ssf, field)
Definition: shellutils.h:798
#define SFVM_DEFVIEWMODE
Definition: shlobj.h:1318
#define SSF_DOUBLECLICKINWEBVIEW
Definition: shlobj.h:1609
#define SSF_WIN95CLASSIC
Definition: shlobj.h:1612
@ FWF_SNAPTOGRID
Definition: shobjidl.idl:643
@ FWF_AUTOARRANGE
Definition: shobjidl.idl:641
@ FWF_ALIGNLEFT
Definition: shobjidl.idl:652
@ FWF_NOSCROLL
Definition: shobjidl.idl:651
@ FWF_NOHEADERINALLVIEWS
Definition: shobjidl.idl:665
@ FWF_SINGLECLICKACTIVATE
Definition: shobjidl.idl:656
@ FWF_FULLROWSELECT
Definition: shobjidl.idl:662
@ FWF_NOCLIENTEDGE
Definition: shobjidl.idl:650
@ FWF_SINGLESEL
Definition: shobjidl.idl:647
@ FWF_NOCOLUMNHEADER
Definition: shobjidl.idl:664
@ FWF_DESKTOP
Definition: shobjidl.idl:646
@ FVM_SMALLICON
Definition: shobjidl.idl:680
@ FVM_ICON
Definition: shobjidl.idl:678
#define WS_EX_CLIENTEDGE
Definition: winuser.h:384

Referenced by OnCreate().

◆ CreateViewWindow()

HRESULT WINAPI CDefView::CreateViewWindow ( IShellView psvPrevious,
LPCFOLDERSETTINGS  pfs,
IShellBrowser psb,
RECT prcView,
HWND phWnd 
)
override

Implements IShellView.

Definition at line 3052 of file CDefView.cpp.

3053{
3054 return CreateViewWindow3(psb, lpPrevView, SV3CVW3_DEFAULT,
3055 (FOLDERFLAGS)lpfs->fFlags, (FOLDERFLAGS)lpfs->fFlags, (FOLDERVIEWMODE)lpfs->ViewMode, NULL, prcView, phWnd);
3056}
STDMETHOD() CreateViewWindow3(IShellBrowser *psb, IShellView *psvPrevious, SV3CVW3_FLAGS view_flags, FOLDERFLAGS mask, FOLDERFLAGS flags, FOLDERVIEWMODE mode, const SHELLVIEWID *view_id, const RECT *prcView, HWND *hwnd) override
Definition: CDefView.cpp:3663
FOLDERFLAGS
Definition: shobjidl.idl:640
FOLDERVIEWMODE
Definition: shobjidl.idl:676

◆ CreateViewWindow2()

HRESULT STDMETHODCALLTYPE CDefView::CreateViewWindow2 ( LPSV2CVW2_PARAMS  view_params)
override

Implements IShellView2.

Definition at line 3656 of file CDefView.cpp.

3657{
3658 return CreateViewWindow3(view_params->psbOwner, view_params->psvPrev,
3659 SV3CVW3_DEFAULT, (FOLDERFLAGS)view_params->pfs->fFlags, (FOLDERFLAGS)view_params->pfs->fFlags,
3660 (FOLDERVIEWMODE)view_params->pfs->ViewMode, view_params->pvid, view_params->prcView, &view_params->hwndView);
3661}

◆ CreateViewWindow3()

HRESULT STDMETHODCALLTYPE CDefView::CreateViewWindow3 ( IShellBrowser psb,
IShellView psvPrevious,
SV3CVW3_FLAGS  view_flags,
FOLDERFLAGS  mask,
FOLDERFLAGS  flags,
FOLDERVIEWMODE  mode,
const SHELLVIEWID view_id,
const RECT prcView,
HWND hwnd 
)
override

Implements IShellView3.

Definition at line 3663 of file CDefView.cpp.

3664{
3665 OLEMENUGROUPWIDTHS omw = { { 0, 0, 0, 0, 0, 0 } };
3666 const UINT SUPPORTED_SV3CVW3 = SV3CVW3_FORCEVIEWMODE | SV3CVW3_FORCEFOLDERFLAGS;
3667 const UINT IGNORE_FWF = FWF_OWNERDATA; // FIXME: Support this
3668
3669 *hwnd = NULL;
3670
3671 TRACE("(%p)->(shlview=%p shlbrs=%p rec=%p hwnd=%p vmode=%x flags=%x)\n", this, psvPrevious, psb, prcView, hwnd, mode, flags);
3672 if (prcView != NULL)
3673 TRACE("-- left=%i top=%i right=%i bottom=%i\n", prcView->left, prcView->top, prcView->right, prcView->bottom);
3674
3675 /* Validate the Shell Browser */
3676 if (psb == NULL || m_hWnd)
3677 return E_UNEXPECTED;
3678
3679 if (view_flags & ~SUPPORTED_SV3CVW3)
3680 FIXME("unsupported view flags 0x%08x\n", view_flags & ~SUPPORTED_SV3CVW3);
3681
3682 if (mode == FVM_AUTO)
3684
3685 /* Set up the member variables */
3686 m_pShellBrowser = psb;
3688 m_FolderSettings.fFlags = (mask & flags) & ~IGNORE_FWF;
3689
3690 if (view_id)
3691 {
3692 if (IsEqualIID(*view_id, VID_LargeIcons))
3694 else if (IsEqualIID(*view_id, VID_SmallIcons))
3696 else if (IsEqualIID(*view_id, VID_List))
3698 else if (IsEqualIID(*view_id, VID_Details))
3700 else if (IsEqualIID(*view_id, VID_Thumbnails))
3702 else if (IsEqualIID(*view_id, VID_Tile))
3704 else if (IsEqualIID(*view_id, VID_ThumbStrip))
3706 else
3707 FIXME("Ignoring unrecognized VID %s\n", debugstr_guid(view_id));
3708 }
3709 const UINT requestedViewMode = m_FolderSettings.ViewMode;
3710
3711 /* Get our parent window */
3712 m_pShellBrowser->GetWindow(&m_hWndParent);
3713
3714 /* Try to get the ICommDlgBrowserInterface, adds a reference !!! */
3717 {
3718 TRACE("-- CommDlgBrowser\n");
3719 }
3720
3721 LoadViewState();
3722 if (view_flags & SV3CVW3_FORCEVIEWMODE)
3723 m_FolderSettings.ViewMode = requestedViewMode;
3724 if (view_flags & SV3CVW3_FORCEFOLDERFLAGS)
3725 m_FolderSettings.fFlags = (mask & flags) & ~IGNORE_FWF;
3726
3727 RECT rcView = *prcView;
3729 if (m_hWnd == NULL)
3730 return E_FAIL;
3731
3732 *hwnd = m_hWnd;
3733
3734 CheckToolbar();
3735
3736 if (!*hwnd)
3737 return E_FAIL;
3738
3740
3742 UpdateWindow();
3743
3744 if (!m_hMenu)
3745 {
3746 m_hMenu = CreateMenu();
3747 m_pShellBrowser->InsertMenusSB(m_hMenu, &omw);
3748 TRACE("-- after fnInsertMenusSB\n");
3749 }
3750
3751 _MergeToolbar();
3752
3753 return S_OK;
3754}
#define U(x)
Definition: wordpad.c:45
@ Create
Definition: registry.c:563
BOOL UpdateWindow()
Definition: atlwin.h:1345
HRESULT _MergeToolbar()
Definition: CDefView.cpp:4572
void CheckToolbar()
Definition: CDefView.cpp:670
FOLDERVIEWMODE GetDefaultViewMode()
Definition: CDefView.cpp:3421
HRESULT LoadViewState()
Definition: CDefView.cpp:3166
GLenum GLint GLuint mask
Definition: glext.h:6028
GLenum mode
Definition: glext.h:6217
GLbitfield flags
Definition: glext.h:7161
@ SV3CVW3_FORCEVIEWMODE
Definition: shobjidl.idl:836
@ SV3CVW3_FORCEFOLDERFLAGS
Definition: shobjidl.idl:837
#define debugstr_guid
Definition: kernel32.h:35
if(dx< 0)
Definition: linetemp.h:194
#define WS_CHILD
Definition: pedump.c:617
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define SFVM_WINDOWCREATED
Definition: shlobj.h:1308
@ FWF_OWNERDATA
Definition: shobjidl.idl:644
@ FVM_AUTO
Definition: shobjidl.idl:677
@ FVM_TILE
Definition: shobjidl.idl:684
@ FVM_THUMBNAIL
Definition: shobjidl.idl:683
@ FVM_THUMBSTRIP
Definition: shobjidl.idl:685
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
UINT_PTR WPARAM
Definition: windef.h:207
#define E_UNEXPECTED
Definition: winerror.h:2456
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HMENU WINAPI CreateMenu(void)
Definition: menu.c:829
#define SWP_NOMOVE
Definition: winuser.h:1244
#define SWP_NOSIZE
Definition: winuser.h:1245
#define HWND_TOP
Definition: winuser.h:1207
#define SWP_SHOWWINDOW
Definition: winuser.h:1248

Referenced by CreateViewWindow(), and CreateViewWindow2().

◆ DestroyViewWindow()

HRESULT WINAPI CDefView::DestroyViewWindow ( )
override

Implements IShellView.

Definition at line 3058 of file CDefView.cpp.

3059{
3060 TRACE("(%p)\n", this);
3061
3062 /* Make absolutely sure all our UI is cleaned up */
3064
3065 if (m_hAccel)
3066 {
3067 // MSDN: Accelerator tables loaded from resources are freed automatically when application terminates
3068 m_hAccel = NULL;
3069 }
3070
3072 {
3075 }
3076
3077 if (m_hMenuViewModes)
3078 {
3081 }
3082
3083 if (m_hMenu)
3084 {
3086 m_hMenu = NULL;
3087 }
3088
3089 if (m_ListView)
3090 {
3091 m_ListView.DestroyWindow();
3092 }
3093
3094 if (m_hWnd)
3095 {
3097 DestroyWindow();
3098 }
3099
3102
3103 return S_OK;
3104}
#define SFVM_WINDOWCLOSING
void Release()
Definition: atlcomcli.h:170
BOOL DestroyWindow()
Definition: atlwin.h:462
STDMETHOD() UIActivate(UINT uState) override
Definition: CDefView.cpp:3017
@ SVUIA_DEACTIVATE
Definition: shobjidl.idl:752
BOOL WINAPI DestroyMenu(_In_ HMENU)

Referenced by ~CDefView().

◆ DoActivate()

void CDefView::DoActivate ( UINT  uState)

Definition at line 2308 of file CDefView.cpp.

2309{
2310 TRACE("%p uState=%x\n", this, uState);
2311
2312 // don't do anything if the state isn't really changing
2313 if (m_uState == uState)
2314 {
2315 return;
2316 }
2317
2318 if (uState == SVUIA_DEACTIVATE)
2319 {
2320 OnDeactivate();
2321 }
2322 else
2323 {
2325 {
2326 FillEditMenu();
2327 FillViewMenu();
2328 m_pShellBrowser->SetMenuSB(m_hMenu, 0, m_hWnd);
2330 }
2331
2332 if (SVUIA_ACTIVATE_FOCUS == uState)
2333 {
2334 m_ListView.SetFocus();
2335 }
2336 }
2337
2338 m_uState = uState;
2339 TRACE("--\n");
2340}
HRESULT FillEditMenu()
Definition: CDefView.cpp:1792
void OnDeactivate()
Definition: CDefView.cpp:2297
HRESULT FillViewMenu()
Definition: CDefView.cpp:1809
@ SVUIA_ACTIVATE_FOCUS
Definition: shobjidl.idl:754

Referenced by OnActivate(), OnKillFocus(), OnSetFocus(), and UIActivate().

◆ DoColumnContextMenu()

LRESULT CDefView::DoColumnContextMenu ( LRESULT  lParam)

Definition at line 1894 of file CDefView.cpp.

1895{
1896 const UINT maxItems = 15; // Feels about right
1897 const UINT idMore = 0x1337;
1898 UINT idFirst = idMore + 1, idLast = idFirst;
1899 UINT lastValidListCol = 0; // Keep track of where the new column should be inserted
1900 UINT showMore = GetKeyState(VK_SHIFT) < 0;
1902 HWND hWndHdr = ListView_GetHeader(m_ListView.m_hWnd);
1903
1904 if (lParam == ~0)
1905 {
1906 RECT r;
1907 ::GetWindowRect(hWndHdr, &r);
1908 pt.x = r.left + ((r.right - r.left) / 2);
1909 pt.y = r.top + ((r.bottom - r.top) / 2);
1910 }
1911
1912 HMENU hMenu = CreatePopupMenu();
1913 if (!hMenu)
1914 return 0;
1915
1916 for (UINT foldCol = 0;; ++foldCol)
1917 {
1920 sd.str.uType = !STRRET_WSTR;
1921 if (FAILED(GetDetailsByFolderColumn(NULL, foldCol, sd)))
1922 break;
1923 if (FAILED(StrRetToStrNW(buf, _countof(buf), &sd.str, NULL)))
1924 break;
1925
1926 SHCOLSTATEF state = 0;
1927 if (!m_pSF2Parent || FAILED(m_pSF2Parent->GetDefaultColumnState(foldCol, &state)))
1928 state = 0;
1929 showMore |= (state & (SHCOLSTATE_SECONDARYUI));
1930
1931 UINT mf = MF_STRING;
1932 HRESULT listCol = MapFolderColumnToListColumn(foldCol);
1933
1934 if (foldCol == 0)
1935 mf |= MF_CHECKED | MF_GRAYED | MF_DISABLED; // Force column 0
1937 continue;
1938 else if (SUCCEEDED(listCol))
1939 mf |= MF_CHECKED;
1940
1941 if (AppendMenuItem(hMenu, mf, idLast, buf, lastValidListCol + 1))
1942 {
1943 idLast++;
1944 if (SUCCEEDED(listCol))
1945 lastValidListCol = listCol;
1946 }
1947
1948 if (idLast - idFirst == maxItems)
1949 {
1950 showMore++;
1951 break;
1952 }
1953 }
1954
1955 if (showMore)
1956 {
1957#if 0 // TODO
1958 InsertMenuW(hMenu, -1, MF_SEPARATOR, 0, NULL);
1959 InsertMenuW(hMenu, -1, MF_STRING, idMore, L"More...");
1960#endif
1961 }
1962
1963 // A cludge to force the cursor to update so we are not stuck with "size left/right" if
1964 // the right-click was on a column divider.
1966
1967 // Note: Uses the header as the owner so CDefView::OnInitMenuPopup does not mess us up.
1969 pt.x, pt.y, 0, hWndHdr, NULL);
1970 if (idCmd == idMore)
1971 {
1972 FIXME("Open More dialog\n");
1973 }
1974 else if (idCmd)
1975 {
1976 UINT foldCol = idCmd - idFirst;
1977 HRESULT listCol = MapFolderColumnToListColumn(foldCol);
1978 if (SUCCEEDED(listCol))
1979 {
1980 ListView_DeleteColumn(m_ListView.m_hWnd, listCol);
1981 }
1982 else
1983 {
1984 listCol = (UINT) GetMenuItemDataById(hMenu, idCmd);
1985 LoadColumn(foldCol, listCol, TRUE);
1986 }
1988 }
1989 DestroyMenu(hMenu);
1990 return 0;
1991}
static SIZE_T GetMenuItemDataById(HMENU hMenu, UINT Id)
Definition: CDefView.cpp:169
static int state
Definition: maze.c:121
HRESULT LoadColumn(UINT FoldCol, UINT ListCol, BOOL Insert, UINT ForceWidth=0)
Definition: CDefView.cpp:1044
CComPtr< IShellFolder2 > m_pSF2Parent
Definition: CDefView.cpp:228
HRESULT MapFolderColumnToListColumn(UINT FoldCol)
Definition: CDefView.cpp:979
void ColumnListChanged()
Definition: CDefView.cpp:1146
HRESULT GetDetailsByFolderColumn(PCUITEMID_CHILD pidl, UINT FoldCol, SHELLDETAILS &sd)
Definition: CDefView.cpp:1013
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static const WCHAR sd[]
Definition: suminfo.c:286
#define ListView_DeleteColumn(hwnd, iCol)
Definition: commctrl.h:2639
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
Definition: shellstring.c:85
@ STRRET_WSTR
Definition: shtypes.idl:85
@ SHCOLSTATE_HIDDEN
Definition: shtypes.idl:129
@ SHCOLSTATE_SECONDARYUI
Definition: shtypes.idl:128
DWORD SHCOLSTATEF
Definition: shtypes.idl:142
#define GET_Y_LPARAM(lp)
Definition: windowsx.h:300
#define GET_X_LPARAM(lp)
Definition: windowsx.h:299
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
#define TPM_RIGHTBUTTON
Definition: winuser.h:2380
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define MF_CHECKED
Definition: winuser.h:132
#define MF_SEPARATOR
Definition: winuser.h:137
#define HTCLIENT
Definition: winuser.h:2475
#define TPM_LEFTBUTTON
Definition: winuser.h:2379
#define PostMessage
Definition: winuser.h:5841
#define WM_SETCURSOR
Definition: winuser.h:1636
#define VK_SHIFT
Definition: winuser.h:2202
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
#define TPM_RETURNCMD
Definition: winuser.h:2387
SHORT WINAPI GetKeyState(_In_ int)
#define MF_GRAYED
Definition: winuser.h:129
#define MF_DISABLED
Definition: winuser.h:130

Referenced by OnContextMenu().

◆ drag_notify_subitem()

HRESULT CDefView::drag_notify_subitem ( DWORD  grfKeyState,
POINTL  pt,
DWORD pdwEffect 
)

Definition at line 4090 of file CDefView.cpp.

4091{
4092 LONG lResult;
4093 HRESULT hr;
4094 RECT clientRect;
4095
4096 /* The key state on drop doesn't have MK_LBUTTON or MK_RBUTTON because it
4097 reflects the key state after the user released the button, so we need
4098 to remember the last key state when the button was pressed */
4099 m_grfKeyState = grfKeyState;
4100
4101 // Map from global to client coordinates and query the index of the
4102 // listview-item, which is currently under the mouse cursor.
4103 LVHITTESTINFO htinfo = {{pt.x, pt.y}, LVHT_ONITEM};
4104 ScreenToClient(&htinfo.pt);
4105 lResult = m_ListView.HitTest(&htinfo);
4106
4107 /* Send WM_*SCROLL messages every 250 ms during drag-scrolling */
4108 ::GetClientRect(m_ListView, &clientRect);
4109 if (htinfo.pt.x == m_ptLastMousePos.x && htinfo.pt.y == m_ptLastMousePos.y &&
4110 (htinfo.pt.x < SCROLLAREAWIDTH || htinfo.pt.x > clientRect.right - SCROLLAREAWIDTH ||
4111 htinfo.pt.y < SCROLLAREAWIDTH || htinfo.pt.y > clientRect.bottom - SCROLLAREAWIDTH))
4112 {
4113 m_cScrollDelay = (m_cScrollDelay + 1) % 5; // DragOver is called every 50 ms
4114 if (m_cScrollDelay == 0)
4115 {
4116 /* Mouse did hover another 250 ms over the scroll-area */
4117 if (htinfo.pt.x < SCROLLAREAWIDTH)
4118 m_ListView.SendMessageW(WM_HSCROLL, SB_LINEUP, 0);
4119
4120 if (htinfo.pt.x > clientRect.right - SCROLLAREAWIDTH)
4121 m_ListView.SendMessageW(WM_HSCROLL, SB_LINEDOWN, 0);
4122
4123 if (htinfo.pt.y < SCROLLAREAWIDTH)
4124 m_ListView.SendMessageW(WM_VSCROLL, SB_LINEUP, 0);
4125
4126 if (htinfo.pt.y > clientRect.bottom - SCROLLAREAWIDTH)
4127 m_ListView.SendMessageW(WM_VSCROLL, SB_LINEDOWN, 0);
4128 }
4129 }
4130 else
4131 {
4132 m_cScrollDelay = 0; // Reset, if cursor is not over the listview's scroll-area
4133 }
4134
4135 m_ptLastMousePos = htinfo.pt;
4137
4138 /* We need to check if we drag the selection over itself */
4139 if (lResult != -1 && m_pSourceDataObject.p != NULL)
4140 {
4141 PCUITEMID_CHILD pidl = _PidlByItem(lResult);
4142
4143 for (UINT i = 0; i < m_cidl; i++)
4144 {
4145 if (pidl == m_apidl[i])
4146 {
4147 /* The item that is being draged is hovering itself. */
4148 lResult = -1;
4149 break;
4150 }
4151 }
4152 }
4153
4154 // If we are still over the previous sub-item, notify it via DragOver and return
4155 if (m_pCurDropTarget && lResult == m_iDragOverItem)
4156 return m_pCurDropTarget->DragOver(grfKeyState, pt, pdwEffect);
4157
4158 // We've left the previous sub-item, notify it via DragLeave and release it
4159 if (m_pCurDropTarget)
4160 {
4162 if (pidl)
4163 SelectItem(pidl, 0);
4164
4165 m_pCurDropTarget->DragLeave();
4167 }
4168
4169 m_iDragOverItem = lResult;
4170
4171 if (lResult == -1)
4172 {
4173 // We are not above one of the listview's subitems. Bind to the
4174 // parent folder's DropTarget interface.
4176 }
4177 else
4178 {
4179 // Query the relative PIDL of the shellfolder object represented
4180 // by the currently dragged over listview-item ...
4181 PCUITEMID_CHILD pidl = _PidlByItem(lResult);
4182
4183 // ... and bind m_pCurDropTarget to the IDropTarget interface of an UIObject of this object
4184 hr = m_pSFParent->GetUIObjectOf(m_ListView, 1, &pidl, IID_NULL_PPV_ARG(IDropTarget, &m_pCurDropTarget));
4185 }
4186
4188
4189 // If anything failed, m_pCurDropTarget should be NULL now, which ought to be a save state
4190 if (FAILED(hr))
4191 {
4192 *pdwEffect = DROPEFFECT_NONE;
4193 return hr;
4194 }
4195
4196 if (m_iDragOverItem != -1)
4197 {
4198 SelectItem(m_iDragOverItem, SVSI_SELECT);
4199 }
4200
4201 // Notify the item just entered via DragEnter
4202 return m_pCurDropTarget->DragEnter(m_pCurDataObject, grfKeyState, pt, pdwEffect);
4203}
#define SCROLLAREAWIDTH
Definition: CDefView.cpp:4088
static void ClientToListView(HWND hwndLV, POINT *ppt)
Definition: CDefView.cpp:118
CComPtr< IDataObject > m_pCurDataObject
Definition: CDefView.cpp:257
STDMETHOD() SelectItem(PCUITEMID_CHILD pidlItem, SVSIF uFlags) override
Definition: CDefView.cpp:3315
CComPtr< IDataObject > m_pSourceDataObject
Definition: CDefView.cpp:255
CComPtr< IDropTarget > m_pCurDropTarget
Definition: CDefView.cpp:256
PCUITEMID_CHILD _PidlByItem(int i)
Definition: CDefView.cpp:1277
DWORD m_grfKeyState
Definition: CDefView.cpp:262
int HitTest(LV_HITTESTINFO *phtInfo)
Definition: rosctrls.h:199
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: ordinal.c:1407
const DWORD DROPEFFECT_NONE
Definition: oleidl.idl:929
long LONG
Definition: pedump.c:60
#define LVHT_ONITEM
Definition: commctrl.h:2497
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define SB_LINEUP
Definition: winuser.h:564
#define WM_HSCROLL
Definition: winuser.h:1743
#define WM_VSCROLL
Definition: winuser.h:1744
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define SB_LINEDOWN
Definition: winuser.h:565
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
#define IID_NULL_PPV_ARG(Itype, ppType)

Referenced by DragEnter(), and DragOver().

◆ DragEnter()

HRESULT WINAPI CDefView::DragEnter ( IDataObject pDataObj,
DWORD  grfKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 4205 of file CDefView.cpp.

4206{
4207 if (*pdwEffect == DROPEFFECT_NONE)
4208 return S_OK;
4209
4210 /* Get a hold on the data object for later calls to DragEnter on the sub-folders */
4211 m_pCurDataObject = pDataObject;
4212
4213 HRESULT hr = drag_notify_subitem(grfKeyState, pt, pdwEffect);
4214 if (SUCCEEDED(hr))
4215 {
4216 POINT ptClient = {pt.x, pt.y};
4217 ScreenToClient(&ptClient);
4218 ImageList_DragEnter(m_hWnd, ptClient.x, ptClient.y);
4219 }
4220
4221 return hr;
4222}
HRESULT drag_notify_subitem(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
Definition: CDefView.cpp:4090
BOOL WINAPI ImageList_DragEnter(HWND hwndLock, INT x, INT y)
Definition: imagelist.c:958

◆ DragLeave()

HRESULT WINAPI CDefView::DragLeave ( void  )
override

Implements IDropTarget.

Definition at line 4232 of file CDefView.cpp.

4233{
4235
4236 if (m_pCurDropTarget)
4237 {
4238 m_pCurDropTarget->DragLeave();
4240 }
4241
4242 if (m_pCurDataObject != NULL)
4243 {
4245 }
4246
4247 m_iDragOverItem = 0;
4248
4249 return S_OK;
4250}
BOOL WINAPI ImageList_DragLeave(HWND hwndLock)
Definition: imagelist.c:992

◆ DragOver()

HRESULT WINAPI CDefView::DragOver ( DWORD  grfKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 4224 of file CDefView.cpp.

4225{
4226 POINT ptClient = {pt.x, pt.y};
4227 ScreenToClient(&ptClient);
4228 ImageList_DragMove(ptClient.x, ptClient.y);
4229 return drag_notify_subitem(grfKeyState, pt, pdwEffect);
4230}
BOOL WINAPI ImageList_DragMove(INT x, INT y)
Definition: imagelist.c:1070

◆ Draw()

HRESULT WINAPI CDefView::Draw ( DWORD  dwDrawAspect,
LONG  lindex,
void pvAspect,
DVTARGETDEVICE *  ptd,
HDC  hdcTargetDev,
HDC  hdcDraw,
LPCRECTL  lprcBounds,
LPCRECTL  lprcWBounds,
BOOL(STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue)  ,
ULONG_PTR  dwContinue 
)
override

Definition at line 4507 of file CDefView.cpp.

4508{
4509 FIXME("Stub: this=%p\n", this);
4510 return E_NOTIMPL;
4511}

◆ Drop()

HRESULT WINAPI CDefView::Drop ( IDataObject pDataObj,
DWORD  grfKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 4436 of file CDefView.cpp.

4437{
4440
4441 if ((IsDropOnSource(NULL) == S_OK) &&
4442 (*pdwEffect & DROPEFFECT_MOVE) &&
4444 {
4445 if (m_pCurDropTarget)
4446 {
4447 m_pCurDropTarget->DragLeave();
4449 }
4450
4451 POINT ptDrop = { pt.x, pt.y };
4452 ::ScreenToClient(m_ListView, &ptDrop);
4454 m_ptLastMousePos = ptDrop;
4455
4457 if (m_ListView.GetStyle() & LVS_AUTOARRANGE)
4458 {
4460 }
4461 else
4462 {
4463 POINT ptItem;
4464 INT iItem = -1;
4465 while ((iItem = m_ListView.GetNextItem(iItem, LVNI_SELECTED)) >= 0)
4466 {
4467 if (m_ListView.GetItemPosition(iItem, &ptItem))
4468 {
4471 m_ListView.SetItemPosition(iItem, &ptItem);
4472 }
4473 }
4474 }
4476 }
4477 else if (m_pCurDropTarget)
4478 {
4479 m_pCurDropTarget->Drop(pDataObject, grfKeyState, pt, pdwEffect);
4481 }
4482
4484 m_iDragOverItem = 0;
4485 return S_OK;
4486}
POINT m_ptFirstMousePos
Definition: CDefView.cpp:261
STDMETHOD() IsDropOnSource(IDropTarget *drop_target) override
Definition: CDefView.cpp:3897
void _MoveSelectionOnAutoArrange(POINT pt)
Definition: CDefView.cpp:4376
void SetRedraw(BOOL redraw)
Definition: rosctrls.h:27
BOOL SetItemPosition(int nItem, POINT *pPoint)
Definition: rosctrls.h:236
BOOL GetItemPosition(int nItem, POINT *pPoint)
Definition: rosctrls.h:231
VOID WINAPI ImageList_EndDrag(void)
Definition: imagelist.c:1847
const DWORD DROPEFFECT_MOVE
Definition: oleidl.idl:931
#define MK_LBUTTON
Definition: winuser.h:2367

◆ EnableModeless()

HRESULT WINAPI CDefView::EnableModeless ( BOOL  fEnable)
override

Implements IShellView.

Definition at line 3011 of file CDefView.cpp.

3012{
3013 FIXME("(%p)\n", this);
3014 return E_NOTIMPL;
3015}

◆ Exec()

HRESULT WINAPI CDefView::Exec ( const GUID pguidCmdGroup,
DWORD  nCmdID,
DWORD  nCmdexecopt,
VARIANT pvaIn,
VARIANT pvaOut 
)
override

Implements IOleCommandTarget.

Definition at line 4007 of file CDefView.cpp.

4008{
4009 FIXME("(%p)->(\n\tTarget GUID:%s Command:0x%08x Opt:0x%08x %p %p)\n",
4010 this, debugstr_guid(pguidCmdGroup), nCmdID, nCmdexecopt, pvaIn, pvaOut);
4011
4012 if (!pguidCmdGroup)
4013 return OLECMDERR_E_UNKNOWNGROUP;
4014
4015 if (IsEqualCLSID(*pguidCmdGroup, m_Category))
4016 {
4017 if (nCmdID == FCIDM_SHVIEW_AUTOARRANGE)
4018 {
4019 if (V_VT(pvaIn) != VT_INT_PTR)
4020 return OLECMDERR_E_NOTSUPPORTED;
4021
4023 params.cbSize = sizeof(params);
4024 params.rcExclude = *(RECT*) V_INTREF(pvaIn);
4025
4026 if (m_hMenuViewModes)
4027 {
4028 // Duplicate all but the last two items of the view modes menu
4029 HMENU hmenuViewPopup = CreatePopupMenu();
4030 Shell_MergeMenus(hmenuViewPopup, m_hMenuViewModes, 0, 0, 0xFFFF, 0);
4031 DeleteMenu(hmenuViewPopup, GetMenuItemCount(hmenuViewPopup) - 1, MF_BYPOSITION);
4032 DeleteMenu(hmenuViewPopup, GetMenuItemCount(hmenuViewPopup) - 1, MF_BYPOSITION);
4033 CheckViewMode(hmenuViewPopup);
4034 TrackPopupMenuEx(hmenuViewPopup, TPM_LEFTALIGN | TPM_TOPALIGN, params.rcExclude.left, params.rcExclude.bottom, m_hWndParent, &params);
4035 ::DestroyMenu(hmenuViewPopup);
4036 }
4037
4038 // pvaOut is VT_I4 with value 0x403 (cmd id of the new mode maybe?)
4039 V_VT(pvaOut) = VT_I4;
4040 V_I4(pvaOut) = 0x403;
4041 }
4042 }
4043
4044 if (IsEqualIID(*pguidCmdGroup, CGID_Explorer) &&
4045 (nCmdID == 0x29) &&
4046 (nCmdexecopt == 4) && pvaOut)
4047 return S_OK;
4048
4049 if (IsEqualIID(*pguidCmdGroup, CGID_ShellDocView) &&
4050 (nCmdID == 9) &&
4051 (nCmdexecopt == 0))
4052 return 1;
4053
4054 if (IsEqualIID(*pguidCmdGroup, CGID_DefView))
4055 {
4056 CComPtr<IStream> pStream;
4057 WCHAR SubKey[MAX_PATH];
4058 switch (nCmdID)
4059 {
4061 SHDeleteKey(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\ShellNoRoam\\Bags");
4063 SaveViewState(pStream);
4064 break;
4066 wsprintfW(SubKey, L"%s\\%s", REGSTR_PATH_EXPLORER, L"Streams\\Default");
4068 SHDeleteKey(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\ShellNoRoam\\Bags");
4069 m_FolderSettings.fFlags |= FWF_NOBROWSERVIEWSTATE; // Don't let this folder save itself
4070 break;
4071 }
4072 }
4073
4074 return OLECMDERR_E_UNKNOWNGROUP;
4075}
STDMETHOD() SaveViewState() override
Definition: CDefView.cpp:3300
HRESULT CheckViewMode(HMENU hmenuView)
Definition: CDefView.cpp:1881
HRESULT GetDefaultViewStream(DWORD Stgm, IStream **ppStream)
Definition: CDefView.cpp:3141
@ VT_I4
Definition: compat.h:2298
@ VT_INT_PTR
Definition: compat.h:2327
GLenum const GLfloat * params
Definition: glext.h:5645
#define STGM_WRITE
Definition: objbase.h:918
#define V_VT(A)
Definition: oleauto.h:211
#define V_I4(A)
Definition: oleauto.h:247
#define V_INTREF(A)
Definition: oleauto.h:252
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
#define REGSTR_PATH_EXPLORER
Definition: regstr.h:33
UINT WINAPI Shell_MergeMenus(HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags)
Definition: shlmenu.c:856
#define DVCMDID_SET_DEFAULTFOLDER_SETTINGS
Definition: shlobj_undoc.h:89
#define DVCMDID_RESET_DEFAULTFOLDER_SETTINGS
Definition: shlobj_undoc.h:90
#define SHDeleteKey
Definition: shlwapi.h:44
@ FWF_NOBROWSERVIEWSTATE
Definition: shobjidl.idl:669
#define FCIDM_SHVIEW_AUTOARRANGE
Definition: shresdef.h:846
#define HKEY_CURRENT_USER
Definition: winreg.h:11
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
#define TPM_TOPALIGN
Definition: winuser.h:2383
#define TPM_LEFTALIGN
Definition: winuser.h:2377

◆ fill_list()

INT CALLBACK CDefView::fill_list ( LPVOID  ptr,
LPVOID  arg 
)
static

Definition at line 1436 of file CDefView.cpp.

1437{
1438 PITEMID_CHILD pidl = static_cast<PITEMID_CHILD>(ptr);
1439 CDefView *pThis = static_cast<CDefView *>(arg);
1440
1441 // in a commdlg this works as a filemask
1442 if (pThis->IncludeObject(pidl) == S_OK && pThis->m_ListView)
1443 pThis->LV_AddItem(pidl);
1444
1445 SHFree(pidl);
1446 return TRUE;
1447}
HRESULT IncludeObject(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:623
static PVOID ptr
Definition: dispmode.c:27
void * arg
Definition: msvc.h:10

Referenced by FillList().

◆ FillArrangeAsMenu()

HRESULT CDefView::FillArrangeAsMenu ( HMENU  hmenuArrange)

Definition at line 1825 of file CDefView.cpp.

1826{
1827 bool forceMerge = false;
1829
1830 // Make sure the column we currently sort by is in the menu
1833 {
1837 LVCOLUMN lvc;
1838 lvc.mask = LVCF_TEXT;
1839 lvc.pszText = buf;
1840 lvc.cchTextMax = _countof(buf);
1841 currentSortId = DVIDM_ARRANGESORT_LAST;
1842 forceMerge = true;
1844 AppendMenuItem(m_hMenuArrangeModes, MF_STRING, currentSortId, lvc.pszText, m_sortInfo.ListColumn);
1845 }
1846
1847 // Prepend the sort-by items unless they are aleady there
1848 if (GetMenuItemID(hmenuArrange, 0) == FCIDM_SHVIEW_AUTOARRANGE || forceMerge)
1849 {
1850 Shell_MergeMenus(hmenuArrange, m_hMenuArrangeModes, 0, 0, 0xFFFF, MM_ADDSEPARATOR);
1851 }
1852
1853 CheckMenuRadioItem(hmenuArrange,
1855 currentSortId, MF_BYCOMMAND);
1856
1858 {
1861 }
1862 else
1863 {
1866
1867 if (GetAutoArrange() == S_OK)
1869 else
1871
1872 if (_GetSnapToGrid() == S_OK)
1874 else
1876 }
1877
1878 return S_OK;
1879}
@ DEFVIEW_ARRANGESORT_MAX
Definition: CDefView.cpp:48
STDMETHOD() GetAutoArrange() override
Definition: CDefView.cpp:3584
HRESULT _GetSnapToGrid()
Definition: CDefView.cpp:3589
#define C_ASSERT(e)
Definition: intsafe.h:73
#define MM_ADDSEPARATOR
Definition: shlobj.h:2527
#define FCIDM_SHVIEW_ALIGNTOGRID
Definition: shresdef.h:848
#define MF_UNCHECKED
Definition: winuser.h:204
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)

Referenced by OnInitMenuPopup().

◆ FillEditMenu()

HRESULT CDefView::FillEditMenu ( )

Definition at line 1792 of file CDefView.cpp.

1793{
1795 if (!hEditMenu)
1796 return E_FAIL;
1797
1798 HMENU hmenuContents = ::LoadMenuW(shell32_hInstance, L"MENU_003");
1799 if (!hmenuContents)
1800 return E_FAIL;
1801
1802 Shell_MergeMenus(hEditMenu, hmenuContents, 0, 0, 0xFFFF, 0);
1803
1804 ::DestroyMenu(hmenuContents);
1805
1806 return S_OK;
1807}
#define FCIDM_MENU_EDIT
Definition: shlobj.h:631
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)

Referenced by DoActivate().

◆ FillFileMenu()

HRESULT CDefView::FillFileMenu ( )

Definition at line 1750 of file CDefView.cpp.

1751{
1753 if (!hFileMenu)
1754 return E_FAIL;
1755
1756 /* Cleanup the items added previously */
1757 for (int i = GetMenuItemCount(hFileMenu) - 1; i >= 0; i--)
1758 {
1759 UINT id = GetMenuItemID(hFileMenu, i);
1760 if (id < FCIDM_BROWSERFIRST || id > FCIDM_BROWSERLAST)
1761 DeleteMenu(hFileMenu, i, MF_BYPOSITION);
1762 }
1763
1764 // In case we still have this left over, clean it up
1765 if (m_pFileMenu)
1766 {
1769 }
1770 UINT selcount = m_ListView.GetSelectedCount();
1771 // Store context menu in m_pFileMenu and keep it to invoke the selected command later on
1774 return hr;
1775
1777
1778 UINT cmf = GetContextMenuFlags(m_pShellBrowser, SFGAO_CANRENAME);
1779 hr = m_pFileMenu->QueryContextMenu(hmenu, 0, DVIDM_CONTEXTMENU_FIRST, DVIDM_CONTEXTMENU_LAST, cmf);
1781 return hr;
1782
1783 // TODO: filter or something
1784
1785 Shell_MergeMenus(hFileMenu, hmenu, 0, 0, 0xFFFF, MM_ADDSEPARATOR | MM_SUBMENUSHAVEIDS);
1786
1788
1789 return S_OK;
1790}
static UINT GetContextMenuFlags(IShellBrowser *pSB, SFGAOF sfgao)
Definition: CDefView.cpp:103
@ DVIDM_CONTEXTMENU_LAST
Definition: CDefView.cpp:52
@ DVIDM_CONTEXTMENU_FIRST
Definition: CDefView.cpp:56
STDMETHOD() GetItemObject(UINT uItem, REFIID riid, void **ppv) override
Definition: CDefView.cpp:3371
CComPtr< IContextMenu > m_pFileMenu
Definition: CDefView.cpp:265
UINT GetSelectedCount()
Definition: rosctrls.h:136
@ SVGIO_SELECTION
Definition: shobjidl.idl:743
@ SVGIO_BACKGROUND
Definition: shobjidl.idl:742
#define FCIDM_BROWSERLAST
Definition: shlobj.h:623
#define MM_SUBMENUSHAVEIDS
Definition: shlobj.h:2528
#define FCIDM_MENU_FILE
Definition: shlobj.h:630
static HMENU hmenu
Definition: win.c:66

Referenced by OnInitMenuPopup().

◆ FillList()

HRESULT CDefView::FillList ( BOOL  IsRefreshCommand = TRUE)

Definition at line 1453 of file CDefView.cpp.

1454{
1455 CComPtr<IEnumIDList> pEnumIDList;
1456 PITEMID_CHILD pidl;
1457 DWORD dwFetched;
1458 HRESULT hRes;
1459 HDPA hdpa;
1460 DWORD dFlags = SHCONTF_NONFOLDERS | SHCONTF_FOLDERS;
1461
1462 TRACE("%p\n", this);
1463
1464 SHELLSTATE shellstate;
1466 if (shellstate.fShowAllObjects)
1467 {
1468 dFlags |= SHCONTF_INCLUDEHIDDEN;
1469 m_ListView.SendMessageW(LVM_SETCALLBACKMASK, LVIS_CUT, 0);
1470 }
1471 if (shellstate.fShowSuperHidden)
1472 {
1473 dFlags |= SHCONTF_INCLUDESUPERHIDDEN;
1474 m_ListView.SendMessageW(LVM_SETCALLBACKMASK, LVIS_CUT, 0);
1475 }
1476
1477 // get the itemlist from the shfolder
1478 hRes = m_pSFParent->EnumObjects(m_hWnd, dFlags, &pEnumIDList);
1479 if (hRes != S_OK)
1480 {
1481 if (hRes == S_FALSE)
1482 return(NOERROR);
1483 return(hRes);
1484 }
1485
1486 // create a pointer array
1487 hdpa = DPA_Create(16);
1488 if (!hdpa)
1489 return(E_OUTOFMEMORY);
1490
1491 // copy the items into the array
1492 while((S_OK == pEnumIDList->Next(1, &pidl, &dwFetched)) && dwFetched)
1493 {
1494 if (DPA_InsertPtr(hdpa, 0x7fff, pidl) == -1)
1495 {
1496 SHFree(pidl);
1497 }
1498 }
1499
1500 // turn listview's redrawing off
1502
1503 DPA_DestroyCallback( hdpa, fill_list, this);
1504
1505 /* sort the array */
1506 int sortCol = -1;
1507 if (!IsRefreshCommand && !m_sortInfo.bLoadedFromViewState) // Are we loading for the first time?
1508 {
1510 sortCol = 0; // In case the folder does not know/care
1511 if (m_pSF2Parent)
1512 {
1513 ULONG folderSortCol = sortCol, dummy;
1514 HRESULT hr = m_pSF2Parent->GetDefaultColumn(NULL, &folderSortCol, &dummy);
1515 if (SUCCEEDED(hr))
1516 hr = MapFolderColumnToListColumn(folderSortCol);
1517 if (SUCCEEDED(hr))
1518 sortCol = (int) hr;
1519 }
1520 }
1521 _Sort(sortCol);
1522
1524 {
1527 }
1528
1529 // load custom background image and custom text color
1532
1533 // turn listview's redrawing back on and force it to draw
1535
1537
1539 {
1540 // redraw now
1541 m_ListView.InvalidateRect(NULL, TRUE);
1542 }
1543
1545
1546 return S_OK;
1547}
#define SFVM_GET_CUSTOMVIEWINFO
#define SFVM_LISTREFRESHED
static INT CALLBACK fill_list(LPVOID ptr, LPVOID arg)
Definition: CDefView.cpp:1436
void UpdateListColors()
Definition: CDefView.cpp:883
BOOL _Sort(int Col=-1)
Definition: CDefView.cpp:1225
void WINAPI DPA_DestroyCallback(HDPA hdpa, PFNDPAENUMCALLBACK enumProc, LPVOID lParam)
Definition: dpa.c:1003
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
Definition: dpa.c:591
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define LVM_SETCALLBACKMASK
Definition: commctrl.h:2419
#define LVIS_CUT
Definition: commctrl.h:2320
VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
Definition: shellord.c:225
#define SSF_SHOWSUPERHIDDEN
Definition: shlobj.h:1620
#define SSF_SHOWALLOBJECTS
Definition: shlobj.h:1604
BOOL fShowSuperHidden
Definition: shlobj.h:1556
BOOL fShowAllObjects
Definition: shlobj.h:1540
uint32_t ULONG
Definition: typedefs.h:59
#define NOERROR
Definition: winerror.h:2354

Referenced by OnCreate(), and Refresh().

◆ FillViewMenu()

HRESULT CDefView::FillViewMenu ( )

Definition at line 1809 of file CDefView.cpp.

1810{
1812 if (!hViewMenu)
1813 return E_FAIL;
1814
1816 if (!m_hMenuViewModes)
1817 return E_FAIL;
1818
1821
1822 return S_OK;
1823}
DWORD WINAPI SHMenuIndexFromID(HMENU hMenu, UINT uID)
Definition: ordinal.c:4504
#define FCIDM_MENU_VIEW_SEP_OPTIONS
Definition: shlobj.h:633
#define MM_DONTREMOVESEPS
Definition: shlobj.h:2529

Referenced by DoActivate().

◆ Freeze()

HRESULT WINAPI CDefView::Freeze ( DWORD  dwDrawAspect,
LONG  lindex,
void pvAspect,
DWORD pdwFreeze 
)
override

Implements IViewObject.

Definition at line 4519 of file CDefView.cpp.

4520{
4521 FIXME("Stub: this=%p\n", this);
4522 return E_NOTIMPL;
4523}

◆ GetAdvise()

HRESULT WINAPI CDefView::GetAdvise ( DWORD pAspects,
DWORD pAdvf,
IAdviseSink **  ppAdvSink 
)
override

Implements IViewObject.

Definition at line 4543 of file CDefView.cpp.

4544{
4545 TRACE("this=%p pAspects=%p pAdvf=%p ppAdvSink=%p\n", this, pAspects, pAdvf, ppAdvSink);
4546
4547 if (ppAdvSink)
4548 {
4549 *ppAdvSink = m_pAdvSink;
4550 m_pAdvSink.p->AddRef();
4551 }
4552
4553 if (pAspects)
4554 *pAspects = m_dwAspects;
4555
4556 if (pAdvf)
4557 *pAdvf = m_dwAdvf;
4558
4559 return S_OK;
4560}
CComPtr< IAdviseSink > m_pAdvSink
Definition: CDefView.cpp:253
ULONG AddRef()

◆ GetArrangeParam()

HRESULT STDMETHODCALLTYPE CDefView::GetArrangeParam ( LPARAM sort)
override

Definition at line 3776 of file CDefView.cpp.

3777{
3778 FIXME("(%p)->(%p) stub\n", this, sort);
3779 return E_NOTIMPL;
3780}
_STLP_MOVE_TO_STD_NAMESPACE void sort(_RandomAccessIter __first, _RandomAccessIter __last)
Definition: _algo.c:993

◆ GetAutoArrange()

HRESULT STDMETHODCALLTYPE CDefView::GetAutoArrange ( )
override

Implements IFolderView.

Definition at line 3584 of file CDefView.cpp.

3585{
3586 return ((m_ListView.GetStyle() & LVS_AUTOARRANGE) ? S_OK : S_FALSE);
3587}

Referenced by FillArrangeAsMenu(), OnCommand(), SaveViewState(), and UpdateFolderViewFlags().

◆ GetColorSet()

HRESULT WINAPI CDefView::GetColorSet ( DWORD  dwDrawAspect,
LONG  lindex,
void pvAspect,
DVTARGETDEVICE *  ptd,
HDC  hicTargetDev,
LOGPALETTE **  ppColorSet 
)
override

Implements IViewObject.

Definition at line 4513 of file CDefView.cpp.

4514{
4515 FIXME("Stub: this=%p\n", this);
4516 return E_NOTIMPL;
4517}

◆ GetCurrentInfo()

HRESULT WINAPI CDefView::GetCurrentInfo ( LPFOLDERSETTINGS  pfs)
override

Implements IShellView.

Definition at line 3106 of file CDefView.cpp.

3107{
3108 TRACE("(%p)->(%p) vmode=%x flags=%x\n", this, lpfs,
3110
3111 if (!lpfs)
3112 return E_INVALIDARG;
3113
3114 *lpfs = m_FolderSettings;
3115 return S_OK;
3116}
#define E_INVALIDARG
Definition: ddrawi.h:101

◆ GetCurrentViewMode()

HRESULT STDMETHODCALLTYPE CDefView::GetCurrentViewMode ( UINT pViewMode)
override

Implements IFolderView.

Definition at line 3430 of file CDefView.cpp.

3431{
3432 TRACE("(%p)->(%p), stub\n", this, pViewMode);
3433
3434 if (!pViewMode)
3435 return E_INVALIDARG;
3436
3437 *pViewMode = m_FolderSettings.ViewMode;
3438 return S_OK;
3439}

Referenced by SaveViewState().

◆ GetDefaultSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetDefaultSpacing ( POINT ppt)
override

Implements IFolderView.

Definition at line 3579 of file CDefView.cpp.

3580{
3581 return E_NOTIMPL;
3582}

◆ GetDefaultViewMode()

FOLDERVIEWMODE CDefView::GetDefaultViewMode ( )

Definition at line 3421 of file CDefView.cpp.

3422{
3426 mode = temp;
3427 return mode;
3428}
BOOL WINAPI IsOS(DWORD feature)
Definition: ordinal.c:4091
static calc_node_t temp
Definition: rpn_ieee.c:38
#define OS_SERVERADMINUI
Definition: shlwapi.h:2050

Referenced by CreateViewWindow3().

◆ GetDefaultViewStream()

HRESULT CDefView::GetDefaultViewStream ( DWORD  Stgm,
IStream **  ppStream 
)

Definition at line 3141 of file CDefView.cpp.

3142{
3143 CLSID clsid;
3145 if (SUCCEEDED(hr))
3146 {
3147 WCHAR path[MAX_PATH], name[39];
3148 wsprintfW(path, L"%s\\%s", REGSTR_PATH_EXPLORER, L"Streams\\Default");
3150 *ppStream = SHOpenRegStream2W(HKEY_CURRENT_USER, path, name, Stgm);
3151 hr = *ppStream ? S_OK : E_FAIL;
3152 }
3153 return hr;
3154}
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
Definition: compobj.c:2434
HRESULT WINAPI IUnknown_GetClassID(IUnknown *lpUnknown, CLSID *clsid)
Definition: ordinal.c:1453
REFCLSID clsid
Definition: msctf.c:82
IStream *WINAPI SHOpenRegStream2W(HKEY hKey, LPCWSTR pszSubkey, LPCWSTR pszValue, DWORD dwMode)
Definition: regstream.c:537
Definition: name.c:39

Referenced by Exec(), and LoadViewState().

◆ GetDetailsByFolderColumn()

HRESULT CDefView::GetDetailsByFolderColumn ( PCUITEMID_CHILD  pidl,
UINT  FoldCol,
SHELLDETAILS sd 
)

Definition at line 1013 of file CDefView.cpp.

1014{
1015 // According to learn.microsoft.com/en-us/windows/win32/shell/sfvm-getdetailsof
1016 // the query order is IShellFolder2, IShellDetails, SFVM_GETDETAILSOF.
1017 HRESULT hr;
1018 if (m_pSF2Parent)
1019 {
1020 hr = m_pSF2Parent->GetDetailsOf(pidl, FoldCol, &sd);
1021 }
1022 if (FAILED(hr) && m_pSDParent)
1023 {
1024 hr = m_pSDParent->GetDetailsOf(pidl, FoldCol, &sd);
1025 }
1026#if 0 // TODO
1027 if (FAILED(hr))
1028 {
1029 FIXME("Try SFVM_GETDETAILSOF\n");
1030 }
1031#endif
1032 return hr;
1033}
CComPtr< IShellDetails > m_pSDParent
Definition: CDefView.cpp:229

Referenced by DoColumnContextMenu(), GetDetailsByListColumn(), and LoadColumn().

◆ GetDetailsByListColumn()

HRESULT CDefView::GetDetailsByListColumn ( PCUITEMID_CHILD  pidl,
UINT  ListCol,
SHELLDETAILS sd 
)

Definition at line 1035 of file CDefView.cpp.

1036{
1038 if (SUCCEEDED(hr))
1039 return GetDetailsByFolderColumn(pidl, hr, sd);
1040 ERR("Unable to determine folder column from list column %d\n", (int) ListCol);
1041 return hr;
1042}

Referenced by OnNotify().

◆ GetDragPoint()

HRESULT STDMETHODCALLTYPE CDefView::GetDragPoint ( POINT pt)
override

Definition at line 3908 of file CDefView.cpp.

3909{
3910 if (!pt)
3911 return E_INVALIDARG;
3912
3914 return S_OK;
3915}

◆ GetDropPoint()

HRESULT STDMETHODCALLTYPE CDefView::GetDropPoint ( POINT pt)
override

Definition at line 3917 of file CDefView.cpp.

3918{
3919 FIXME("(%p)->(%p) stub\n", this, pt);
3920 return E_NOTIMPL;
3921}

◆ GetFocusedItem()

HRESULT STDMETHODCALLTYPE CDefView::GetFocusedItem ( int piItem)
override

Implements IFolderView.

Definition at line 3532 of file CDefView.cpp.

3533{
3534 TRACE("(%p)->(%p)\n", this, piItem);
3535
3536 *piItem = m_ListView.GetNextItem(-1, LVNI_FOCUSED);
3537
3538 return S_OK;
3539}
#define LVNI_FOCUSED
Definition: commctrl.h:2423

◆ GetFolder()

HRESULT STDMETHODCALLTYPE CDefView::GetFolder ( REFIID  riid,
void **  ppv 
)
override

Implements IFolderView.

Definition at line 3485 of file CDefView.cpp.

3486{
3487 if (m_pSFParent == NULL)
3488 return E_FAIL;
3489
3490 return m_pSFParent->QueryInterface(riid, ppv);
3491}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ GetItemObject()

HRESULT WINAPI CDefView::GetItemObject ( UINT  uItem,
REFIID  riid,
void **  ppv 
)
override

Implements IShellView.

Definition at line 3371 of file CDefView.cpp.

3372{
3374
3375 TRACE("(%p)->(uItem=0x%08x,\n\tIID=%s, ppv=%p)\n", this, uItem, debugstr_guid(&riid), ppvOut);
3376
3377 if (!ppvOut)
3378 return E_INVALIDARG;
3379
3380 *ppvOut = NULL;
3381
3382 switch (uItem)
3383 {
3384 case SVGIO_BACKGROUND:
3385 if (IsEqualIID(riid, IID_IContextMenu))
3386 {
3389 return hr;
3390
3391 IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
3392 }
3393 else if (IsEqualIID(riid, IID_IDispatch))
3394 {
3396 {
3399 return hr;
3400 }
3401 hr = m_pShellFolderViewDual->QueryInterface(riid, ppvOut);
3402 }
3403 break;
3404 case SVGIO_SELECTION:
3405 GetSelections();
3406 hr = m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, riid, 0, ppvOut);
3408 return hr;
3409
3410 if (IsEqualIID(riid, IID_IContextMenu))
3411 IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
3412
3413 break;
3414 }
3415
3416 TRACE("-- (%p)->(interface=%p)\n", this, *ppvOut);
3417
3418 return hr;
3419}
HRESULT CDefViewBckgrndMenu_CreateInstance(IShellFolder *psf, REFIID riid, void **ppv)
HRESULT WINAPI CDefViewDual_Constructor(REFIID riid, LPVOID *ppvOut)
CComPtr< IShellFolderViewDual > m_pShellFolderViewDual
Definition: CDefView.cpp:233
const GUID IID_IDispatch
#define E_NOINTERFACE
Definition: winerror.h:2364

Referenced by FillFileMenu(), OnContextMenu(), OnExplorerCommand(), and OpenSelectedItems().

◆ GetItemPosition()

HRESULT STDMETHODCALLTYPE CDefView::GetItemPosition ( PCUITEMID_CHILD  pidl,
POINT ppt 
)
override

Implements IFolderView.

Definition at line 3541 of file CDefView.cpp.

3542{
3543 if (!m_ListView)
3544 {
3545 ERR("!m_ListView\n");
3546 return E_FAIL;
3547 }
3548
3549 int lvIndex = LV_FindItemByPidl(pidl);
3550 if (lvIndex == -1 || ppt == NULL)
3551 return E_INVALIDARG;
3552
3553 m_ListView.GetItemPosition(lvIndex, ppt);
3554 return S_OK;
3555}
int LV_FindItemByPidl(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:1291

◆ GetItemSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetItemSpacing ( ITEMSPACING spacing)
override

Definition at line 3953 of file CDefView.cpp.

3954{
3955 FIXME("(%p)->(%p) stub\n", this, spacing);
3956 return E_NOTIMPL;
3957}

◆ GetObject()

HRESULT STDMETHODCALLTYPE CDefView::GetObject ( PITEMID_CHILD pidl,
UINT  item 
)
override

Definition at line 3807 of file CDefView.cpp.

3808{
3809 TRACE("(%p)->(%p %d)\n", this, pidl, item);
3810 return Item(item, pidl);
3811}
_In_ WDFCOLLECTION _In_ WDFOBJECT Item

◆ GetObjectCount()

HRESULT STDMETHODCALLTYPE CDefView::GetObjectCount ( UINT count)
override

Definition at line 3837 of file CDefView.cpp.

3838{
3839 TRACE("(%p)->(%p)\n", this, count);
3841 return S_OK;
3842}
GLuint GLuint GLsizei count
Definition: gl.h:1545

◆ GetSelectedCount()

HRESULT STDMETHODCALLTYPE CDefView::GetSelectedCount ( UINT count)
override

Definition at line 3870 of file CDefView.cpp.

3871{
3872 FIXME("(%p)->(%p) stub\n", this, count);
3873 return E_NOTIMPL;
3874}

◆ GetSelectedObjects()

HRESULT STDMETHODCALLTYPE CDefView::GetSelectedObjects ( PCUITEMID_CHILD **  pidl,
UINT items 
)
override

Definition at line 3876 of file CDefView.cpp.

3877{
3878 TRACE("(%p)->(%p %p)\n", this, pidl, items);
3879
3880 *items = GetSelections();
3881
3882 if (*items)
3883 {
3884 *pidl = static_cast<PCUITEMID_CHILD *>(LocalAlloc(0, *items * sizeof(PCUITEMID_CHILD)));
3885 if (!*pidl)
3886 {
3887 return E_OUTOFMEMORY;
3888 }
3889
3890 /* it's documented that caller shouldn't PIDLs, only array itself */
3891 memcpy(*pidl, m_apidl, *items * sizeof(PCUITEMID_CHILD));
3892 }
3893
3894 return S_OK;
3895}
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1390
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static TCHAR * items[]
Definition: page1.c:45

◆ GetSelectionMarkedItem()

HRESULT STDMETHODCALLTYPE CDefView::GetSelectionMarkedItem ( int piItem)
override

Implements IFolderView.

Definition at line 3523 of file CDefView.cpp.

3524{
3525 TRACE("(%p)->(%p)\n", this, piItem);
3526
3527 *piItem = m_ListView.GetSelectionMark();
3528
3529 return S_OK;
3530}
int GetSelectionMark()
Definition: rosctrls.h:156

◆ GetSelections()

UINT CDefView::GetSelections ( )

Definition at line 2001 of file CDefView.cpp.

2002{
2004 if (count > m_cidl || !count || !m_apidl) // !count to free possibly large cache, !m_apidl to make sure m_apidl is a valid pointer
2005 {
2006 SHFree(m_apidl);
2007 m_apidl = static_cast<PCUITEMID_CHILD*>(SHAlloc(count * sizeof(PCUITEMID_CHILD)));
2008 if (!m_apidl)
2009 {
2010 m_cidl = 0;
2011 return 0;
2012 }
2013 }
2014 m_cidl = count;
2015
2016 TRACE("-- Items selected =%u\n", m_cidl);
2017
2019
2020 UINT i = 0;
2021 int lvIndex = -1;
2022 while ((lvIndex = m_ListView.GetNextItem(lvIndex, LVNI_SELECTED)) > -1)
2023 {
2024 m_apidl[i] = _PidlByItem(lvIndex);
2025 i++;
2026 if (i == m_cidl)
2027 break;
2028 TRACE("-- selected Item found\n");
2029 }
2030
2031 return m_cidl;
2032}
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:304

Referenced by _DoCopyToMoveToFolder(), GetItemObject(), GetSelectedObjects(), OnInitMenuPopup(), OnNotify(), and UpdateStatusbar().

◆ GetSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetSpacing ( POINT ppt)
override

Implements IFolderView.

Definition at line 3557 of file CDefView.cpp.

3558{
3559 TRACE("(%p)->(%p)\n", this, ppt);
3560
3561 if (!m_ListView)
3562 {
3563 ERR("!m_ListView\n");
3564 return S_FALSE;
3565 }
3566
3567 if (ppt)
3568 {
3569 SIZE spacing;
3570 m_ListView.GetItemSpacing(spacing);
3571
3572 ppt->x = spacing.cx;
3573 ppt->y = spacing.cy;
3574 }
3575
3576 return S_OK;
3577}
void GetItemSpacing(SIZE &spacing, BOOL bSmallIconView=FALSE)
Definition: rosctrls.h:166
LONG cx
Definition: kdterminal.h:27
LONG cy
Definition: kdterminal.h:28

◆ GetView()

HRESULT STDMETHODCALLTYPE CDefView::GetView ( SHELLVIEWID view_guid,
ULONG  view_type 
)
override

Implements IShellView2.

Definition at line 3650 of file CDefView.cpp.

3651{
3652 FIXME("(%p)->(%p, %lu) stub\n", this, view_guid, view_type);
3653 return E_NOTIMPL;
3654}
view_type

◆ GetWindow()

HRESULT WINAPI CDefView::GetWindow ( HWND lphwnd)
override

Implements IOleWindow.

Definition at line 2978 of file CDefView.cpp.

2979{
2980 TRACE("(%p)\n", this);
2981
2982 *phWnd = m_hWnd;
2983
2984 return S_OK;
2985}

◆ GetWindowProc()

virtual WNDPROC CDefView::GetWindowProc ( )
inlinevirtual

Reimplemented from ATL::CWindowImplBaseT< TBase, TWinTraits >.

Definition at line 485 of file CDefView.cpp.

486 {
487 return WindowProc;
488 }
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CDefView.cpp:490

◆ GetWndClassInfo()

static ATL::CWndClassInfo & CDefView::GetWndClassInfo ( )
inlinestatic

Definition at line 472 of file CDefView.cpp.

473 {
474 static ATL::CWndClassInfo wc =
475 {
477 0, 0, NULL, NULL,
478 LoadCursor(NULL, IDC_ARROW), NULL, NULL, L"SHELLDLL_DefView", NULL
479 },
480 NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
481 };
482 return wc;
483 }
static LRESULT CALLBACK StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1619
#define _T(x)
Definition: vfdio.h:22
#define IDC_ARROW
Definition: winuser.h:687
#define LoadCursor
Definition: winuser.h:5821
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5728
#define CS_PARENTDC
Definition: winuser.h:656

◆ GiveFeedback()

HRESULT WINAPI CDefView::GiveFeedback ( DWORD  dwEffect)
override

Implements IDropSource.

Definition at line 4500 of file CDefView.cpp.

4501{
4502 TRACE("(%p)\n", this);
4503
4505}
#define DRAGDROP_S_USEDEFAULTCURSORS
Definition: winerror.h:2648

◆ HandleRename()

HRESULT STDMETHODCALLTYPE CDefView::HandleRename ( LPCITEMIDLIST  new_pidl)
override

Definition at line 3756 of file CDefView.cpp.

3757{
3758 FIXME("(%p)->(%p) stub\n", this, new_pidl);
3759 return E_NOTIMPL;
3760}

◆ IncludeObject()

HRESULT CDefView::IncludeObject ( PCUITEMID_CHILD  pidl)

Definition at line 623 of file CDefView.cpp.

624{
625 HRESULT ret = S_OK;
626
627 if (m_pCommDlgBrowser.p != NULL)
628 {
629 TRACE("ICommDlgBrowser::IncludeObject pidl=%p\n", pidl);
630 ret = m_pCommDlgBrowser->IncludeObject(this, pidl);
631 TRACE("-- returns 0x%08x\n", ret);
632 }
633
634 return ret;
635}
int ret

Referenced by fill_list().

◆ Initialize()

HRESULT WINAPI CDefView::Initialize ( IShellFolder shellFolder)

Definition at line 612 of file CDefView.cpp.

613{
614 m_pSFParent = shellFolder;
616 shellFolder->QueryInterface(IID_PPV_ARG(IShellDetails, &m_pSDParent));
617
618 return S_OK;
619}
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)

◆ InitList()

BOOL CDefView::InitList ( )

Definition at line 940 of file CDefView.cpp.

941{
942 HIMAGELIST big_icons, small_icons;
943
944 TRACE("%p\n", this);
945
947
948 Shell_GetImageLists(&big_icons, &small_icons);
950 m_ListView.SetImageList(small_icons, LVSIL_SMALL);
951
953
955 UINT ColumnCount = pColumns ? DPA_GetPtrCount(m_LoadColumnsList) : 0;
956 LoadColumns(pColumns, ColumnCount);
958 {
962 }
963 return TRUE;
964}
HRESULT LoadColumns(SIZE_T *pColList=NULL, UINT ColListCount=0)
Definition: CDefView.cpp:1081
BOOL DeleteAllItems()
Definition: rosctrls.h:126
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:91
BOOL WINAPI Shell_GetImageLists(HIMAGELIST *lpBigList, HIMAGELIST *lpSmallList)
Definition: iconcache.cpp:683
#define LVSIL_SMALL
Definition: commctrl.h:2299
#define DPA_GetPtrPtr(hdpa)
Definition: commctrl.h:4957
#define DPA_GetPtrCount(hdpa)
Definition: commctrl.h:4955
#define LVSIL_NORMAL
Definition: commctrl.h:2298
bool bColumnIsFolderColumn
Definition: CDefView.cpp:64
ULONG_PTR SIZE_T
Definition: typedefs.h:80

Referenced by OnCreate().

◆ InvokeContextMenuCommand()

HRESULT CDefView::InvokeContextMenuCommand ( CComPtr< IContextMenu > &  pCM,
LPCSTR  lpVerb,
POINT pt = NULL 
)

Definition at line 2034 of file CDefView.cpp.

2035{
2036 CMINVOKECOMMANDINFOEX cmi;
2037
2038 ZeroMemory(&cmi, sizeof(cmi));
2039 cmi.cbSize = sizeof(cmi);
2040 cmi.hwnd = m_hWnd;
2041 cmi.lpVerb = lpVerb;
2042 cmi.nShow = SW_SHOW;
2043
2044 if (GetKeyState(VK_SHIFT) < 0)
2045 cmi.fMask |= CMIC_MASK_SHIFT_DOWN;
2046
2048 cmi.fMask |= CMIC_MASK_CONTROL_DOWN;
2049
2050 if (pt)
2051 {
2052 cmi.fMask |= CMIC_MASK_PTINVOKE;
2053 cmi.ptInvoke = *pt;
2054 }
2055
2056 WCHAR szDirW[MAX_PATH] = L"";
2057 CHAR szDirA[MAX_PATH];
2059 *szDirW != UNICODE_NULL)
2060 {
2061 SHUnicodeToAnsi(szDirW, szDirA, _countof(szDirA));
2062 cmi.fMask |= CMIC_MASK_UNICODE;
2063 cmi.lpDirectory = szDirA;
2064 cmi.lpDirectoryW = szDirW;
2065 }
2066
2067 HRESULT hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmi);
2068 // Most of our callers will do this, but if they would forget (File menu!)
2069 IUnknown_SetSite(pCM, NULL);
2070 pCM.Release();
2071
2073 return hr;
2074
2075 return S_OK;
2076}
#define SFVM_GETCOMMANDDIR
INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen)
Definition: string.c:2791
#define UNICODE_NULL
#define VK_CONTROL
Definition: winuser.h:2203
#define SW_SHOW
Definition: winuser.h:775
char CHAR
Definition: xmlstorage.h:175

Referenced by _DoCopyToMoveToFolder(), OnCommand(), OnContextMenu(), OnExplorerCommand(), and OpenSelectedItems().

◆ IsBkDropTarget()

HRESULT STDMETHODCALLTYPE CDefView::IsBkDropTarget ( IDropTarget drop_target)
override

Definition at line 3935 of file CDefView.cpp.

3936{
3937 FIXME("(%p)->(%p) stub\n", this, drop_target);
3938 return E_NOTIMPL;
3939}

◆ IsDesktop()

BOOL CDefView::IsDesktop ( ) const
inlineprivate

Definition at line 286 of file CDefView.cpp.

Referenced by OnCreate().

◆ IsDropOnSource()

HRESULT STDMETHODCALLTYPE CDefView::IsDropOnSource ( IDropTarget drop_target)
override

Definition at line 3897 of file CDefView.cpp.

3898{
3899 if ((m_iDragOverItem == -1 || m_pCurDropTarget == NULL) &&
3901 {
3902 return S_OK;
3903 }
3904
3905 return S_FALSE;
3906}

Referenced by Drop().

◆ Item()

HRESULT STDMETHODCALLTYPE CDefView::Item ( int  iItemIndex,
PITEMID_CHILD ppidl 
)
override

Implements IFolderView.

Definition at line 3493 of file CDefView.cpp.

3494{
3495 PCUITEMID_CHILD pidl = _PidlByItem(iItemIndex);
3496 if (pidl)
3497 {
3498 *ppidl = ILClone(pidl);
3499 return S_OK;
3500 }
3501
3502 *ppidl = 0;
3503 return E_INVALIDARG;
3504}
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:237

◆ ItemCount()

HRESULT STDMETHODCALLTYPE CDefView::ItemCount ( UINT  uFlags,
int pcItems 
)
override

Implements IFolderView.

Definition at line 3506 of file CDefView.cpp.

3507{
3508 TRACE("(%p)->(%u %p)\n", this, uFlags, pcItems);
3509
3510 if (uFlags != SVGIO_ALLVIEW)
3511 FIXME("some flags unsupported, %x\n", uFlags & ~SVGIO_ALLVIEW);
3512
3514
3515 return S_OK;
3516}
UINT uFlags
Definition: api.c:59
static int int const SCRIPT_CONTROL const SCRIPT_STATE SCRIPT_ITEM ULONG int * pcItems
Definition: usp10.c:62

◆ Items()

HRESULT STDMETHODCALLTYPE CDefView::Items ( UINT  uFlags,
REFIID  riid,
void **  ppv 
)
override

Implements IFolderView.

Definition at line 3518 of file CDefView.cpp.

3519{
3520 return E_NOTIMPL;
3521}

◆ ListViewCompareItems()

INT CALLBACK CDefView::ListViewCompareItems ( LPARAM  lParam1,
LPARAM  lParam2,
LPARAM  lpData 
)
static

Definition at line 1211 of file CDefView.cpp.

1212{
1213 PCUIDLIST_RELATIVE pidl1 = reinterpret_cast<PCUIDLIST_RELATIVE>(lParam1);
1214 PCUIDLIST_RELATIVE pidl2 = reinterpret_cast<PCUIDLIST_RELATIVE>(lParam2);
1215 CDefView *pThis = reinterpret_cast<CDefView*>(lpData);
1216
1217 HRESULT hres = pThis->m_pSFParent->CompareIDs(pThis->m_sortInfo.ListColumn, pidl1, pidl2);
1219 return 0;
1220
1221 SHORT nDiff = HRESULT_CODE(hres);
1222 return nDiff * pThis->m_sortInfo.Direction;
1223}
HRESULT hres
Definition: protocol.c:465
short SHORT
Definition: pedump.c:59
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
Definition: shtypes.idl:57
#define HRESULT_CODE(hr)
Definition: winerror.h:76

Referenced by _Sort().

◆ LoadColumn()

HRESULT CDefView::LoadColumn ( UINT  FoldCol,
UINT  ListCol,
BOOL  Insert,
UINT  ForceWidth = 0 
)

Definition at line 1044 of file CDefView.cpp.

1045{
1048 HRESULT hr;
1049
1050 sd.str.uType = !STRRET_WSTR; // Make sure "uninitialized" uType is not WSTR
1051 hr = GetDetailsByFolderColumn(NULL, FoldCol, sd);
1052 if (FAILED(hr))
1053 return hr;
1054 hr = StrRetToStrNW(buf, _countof(buf), &sd.str, NULL);
1055 if (FAILED(hr))
1056 return hr;
1057
1058 UINT chavewidth = CalculateCharWidth(m_ListView.m_hWnd);
1059 if (!chavewidth)
1060 chavewidth = 6; // 6 is a reasonable default fallback
1061
1062 LVCOLUMN lvc;
1063 lvc.mask = LVCF_TEXT | LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM;
1064 lvc.pszText = buf;
1065 lvc.fmt = sd.fmt;
1066 lvc.cx = ForceWidth ? ForceWidth : (sd.cxChar * chavewidth); // FIXME: DPI?
1067 lvc.iSubItem = FoldCol; // Used by MapFolderColumnToListColumn & MapListColumnToFolderColumn
1068 if ((int)ListCol == -1)
1069 {
1070 assert(Insert); // You can insert at the end but you can't change something that is not there
1071 if (Insert)
1072 ListCol = 0x7fffffff;
1073 }
1074 if (Insert)
1075 ListView_InsertColumn(m_ListView.m_hWnd, ListCol, &lvc);
1076 else
1077 ListView_SetColumn(m_ListView.m_hWnd, ListCol, &lvc);
1078 return S_OK;
1079}
static UINT CalculateCharWidth(HWND hwnd)
Definition: CDefView.cpp:200
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2636
#define LVCF_WIDTH
Definition: commctrl.h:2587
#define LVCF_FMT
Definition: commctrl.h:2586
#define LVCF_SUBITEM
Definition: commctrl.h:2589
#define ListView_SetColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2629

Referenced by DoColumnContextMenu(), and LoadColumns().

◆ LoadColumns()

HRESULT CDefView::LoadColumns ( SIZE_T pColList = NULL,
UINT  ColListCount = 0 
)

Definition at line 1081 of file CDefView.cpp.

1082{
1083 HWND hWndHdr = ListView_GetHeader(m_ListView.m_hWnd);
1084 UINT newColCount = 0, oldColCount = Header_GetItemCount(hWndHdr);
1085 UINT width = 0, foldCol, i;
1086 HRESULT hr = S_FALSE;
1087
1089 for (i = 0, foldCol = 0;; ++foldCol)
1090 {
1091 if (newColCount >= 0xffff)
1092 break; // CompareIDs limit reached
1093
1094 if (pColList)
1095 {
1096 if (i >= ColListCount)
1097 break;
1098 width = HIWORD(pColList[i]);
1099 foldCol = LOWORD(pColList[i++]);
1100 }
1101
1102 SHCOLSTATEF state = 0;
1103 if (!m_pSF2Parent || FAILED(m_pSF2Parent->GetDefaultColumnState(foldCol, &state)))
1105
1106 if (foldCol == 0)
1107 {
1108 // Force the first column
1109 }
1110 else if (state & SHCOLSTATE_HIDDEN)
1111 {
1112 continue;
1113 }
1114 else if (!pColList && !(state & SHCOLSTATE_ONBYDEFAULT))
1115 {
1116 continue;
1117 }
1118
1119 bool insert = newColCount >= oldColCount;
1120 UINT listCol = insert ? -1 : newColCount;
1121 hr = LoadColumn(foldCol, listCol, insert, width);
1122 if (FAILED(hr))
1123 {
1124 if (!pColList)
1125 hr = S_OK; // No more items, we are done
1126 break;
1127 }
1128 ++newColCount;
1129 }
1130 for (i = newColCount; i < oldColCount; ++i)
1131 {
1133 }
1134
1137 assert(SUCCEEDED(MapFolderColumnToListColumn(0))); // We don't allow turning off the Name column
1139 {
1142 }
1143 return hr;
1144}
GLint GLint GLsizei width
Definition: gl.h:1546
@ SHCOLSTATE_TYPE_STR
Definition: shtypes.idl:121
@ SHCOLSTATE_ONBYDEFAULT
Definition: shtypes.idl:125
static int insert
Definition: xmllint.c:138

Referenced by InitList().

◆ LoadViewState()

HRESULT CDefView::LoadViewState ( )

Definition at line 3166 of file CDefView.cpp.

3167{
3169 PERSISTCOLUMNS cols;
3172 bool fallback = false;
3173 HRESULT hrColumns = E_FAIL;
3175 if (SUCCEEDED(hr))
3176 {
3177 DWORD data;
3178 if (FAILED(hr = SHPropertyBag_ReadDWORD(pPB, L"Mode", &data)))
3179 goto loadfallback;
3181 cvs.FolderSettings.fFlags = ReadDWORD(pPB, L"FFlags", FWF_NOGROUPING);
3182 data = ReadDWORD(pPB, L"Sort", ~0ul);
3184 cvs.SortDir = (INT8)ReadDWORD(pPB, L"SortDir", 1);
3185 if (SUCCEEDED(hrColumns = SHPropertyBag_ReadStream(pPB, L"ColInfo", &pS)))
3186 hrColumns = LoadColumnsStream(cols, pS);
3187 }
3188 else
3189 {
3190 if (FAILED(hr = (m_pShellBrowser ? m_pShellBrowser->GetViewStateStream(STGM_READ, &pS) : E_UNEXPECTED)))
3191 {
3192 loadfallback:
3194 fallback = true;
3195 }
3196 if (FAILED(hr) || FAILED(hr = Read(pS, &cvs, sizeof(cvs))))
3197 return hr;
3198 if (cvs.Signature != cvs.SIG)
3200 hrColumns = LoadColumnsStream(cols, pS);
3201 }
3203 m_FolderSettings.fFlags &= ~cvs.VALIDFWF;
3205 if (SUCCEEDED(hrColumns))
3206 {
3207 BOOL failed = FALSE;
3208 if ((m_LoadColumnsList = DPA_Create(cols.Count)) != NULL)
3209 {
3210 for (UINT i = 0; i < cols.Count; ++i)
3211 {
3212 failed |= !DPA_SetPtr(m_LoadColumnsList, i, UlongToPtr(cols.Columns[i]));
3213 }
3214 }
3215 if (failed || !cols.Count)
3216 {
3219 }
3220 }
3223 m_sortInfo.Direction = cvs.SortDir > 0 ? 1 : -1;
3225 return hr;
3226}
static HRESULT LoadColumnsStream(PERSISTCOLUMNS &cols, IStream *pS)
Definition: CDefView.cpp:3156
static DWORD ReadDWORD(IPropertyBag *pPB, LPCWSTR name, DWORD def)
Definition: CDefView.cpp:3134
signed char INT8
#define UlongToPtr(u)
Definition: config.h:106
unsigned short WORD
Definition: ntddk_ex.h:93
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define STGM_READ
Definition: objbase.h:917
EXTERN_C HRESULT WINAPI IUnknown_QueryServicePropertyBag(_In_ IUnknown *punk, _In_ long flags, _In_ REFIID riid, _Outptr_ void **ppvObj)
Definition: propbag.cpp:1967
HRESULT HResultFromWin32(DWORD hr)
Definition: shellutils.h:70
HRESULT WINAPI SHPropertyBag_ReadDWORD(IPropertyBag *ppb, LPCWSTR pszPropName, DWORD *pdwValue)
HRESULT WINAPI SHPropertyBag_ReadStream(IPropertyBag *ppb, LPCWSTR pszPropName, IStream **ppStream)
@ FWF_NOGROUPING
Definition: shobjidl.idl:661
_In_ BOOLEAN Read
Definition: strmini.h:479
FOLDERSETTINGS FolderSettings
Definition: CDefView.cpp:99
static const UINT SIG
Definition: CDefView.cpp:94
static const UINT VALIDFWF
Definition: CDefView.cpp:98
UINT Columns[MAXCOUNT]
Definition: CDefView.cpp:89
#define ERROR_INVALID_DATA
Definition: winerror.h:116

Referenced by CreateViewWindow3().

◆ LV_AddItem()

int CDefView::LV_AddItem ( PCUITEMID_CHILD  pidl)

Definition at line 1306 of file CDefView.cpp.

1307{
1308 LVITEMW lvItem;
1309
1310 TRACE("(%p)(pidl=%p)\n", this, pidl);
1311
1313
1315 return -1;
1316
1317 lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; // set mask
1318 lvItem.iItem = m_ListView.GetItemCount(); // add item to lists end
1319 lvItem.iSubItem = 0;
1320 lvItem.lParam = reinterpret_cast<LPARAM>(ILClone(pidl)); // set item's data
1321 lvItem.pszText = LPSTR_TEXTCALLBACKW; // get text on a callback basis
1322 lvItem.iImage = I_IMAGECALLBACK; // get image on a callback basis
1323 lvItem.stateMask = LVIS_CUT;
1324
1325 return m_ListView.InsertItem(&lvItem);
1326}
#define SFVM_ADDINGOBJECT
int InsertItem(const LV_ITEM *pitem)
Definition: rosctrls.h:96
#define I_IMAGECALLBACK
Definition: commctrl.h:2385
#define LPSTR_TEXTCALLBACKW
Definition: commctrl.h:2380
#define LVIF_PARAM
Definition: commctrl.h:2311
#define LVIF_TEXT
Definition: commctrl.h:2309
#define LVIF_IMAGE
Definition: commctrl.h:2310
LPWSTR pszText
Definition: commctrl.h:2365
int iSubItem
Definition: commctrl.h:2362
UINT mask
Definition: commctrl.h:2360
LPARAM lParam
Definition: commctrl.h:2368
UINT stateMask
Definition: commctrl.h:2364
int iImage
Definition: commctrl.h:2367

Referenced by AddObject(), fill_list(), and OnChangeNotify().

◆ LV_DeleteItem()

BOOLEAN CDefView::LV_DeleteItem ( PCUITEMID_CHILD  pidl)

Definition at line 1328 of file CDefView.cpp.

1329{
1330 int nIndex;
1331
1332 TRACE("(%p)(pidl=%p)\n", this, pidl);
1333
1335
1336 nIndex = LV_FindItemByPidl(pidl);
1337 if (nIndex < 0)
1338 return FALSE;
1339
1341
1342 return m_ListView.DeleteItem(nIndex);
1343}
#define SFVM_REMOVINGOBJECT
BOOL DeleteItem(int i)
Definition: rosctrls.h:101

Referenced by OnChangeNotify().

◆ LV_FindItemByPidl()

int CDefView::LV_FindItemByPidl ( PCUITEMID_CHILD  pidl)

Definition at line 1291 of file CDefView.cpp.

1292{
1294
1295 int cItems = m_ListView.GetItemCount();
1296
1297 for (int i = 0; i<cItems; i++)
1298 {
1299 PCUITEMID_CHILD currentpidl = _PidlByItem(i);
1300 if (ILIsEqual(pidl, currentpidl))
1301 return i;
1302 }
1303 return -1;
1304}
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:548

Referenced by GetItemPosition(), LV_DeleteItem(), LV_RenameItem(), LV_UpdateItem(), OnChangeNotify(), RemoveObject(), SelectAndPositionItems(), and SelectItem().

◆ LV_RefreshIcon()

void CDefView::LV_RefreshIcon ( INT  iItem)

Definition at line 1411 of file CDefView.cpp.

1412{
1414
1415 LVITEMW lvItem = { LVIF_IMAGE };
1416 lvItem.iItem = iItem;
1417 lvItem.iImage = I_IMAGECALLBACK;
1418 m_ListView.SetItem(&lvItem);
1419 m_ListView.Update(iItem);
1420}
BOOL Update(int i)
Definition: rosctrls.h:131
BOOL SetItem(const LV_ITEM *pitem)
Definition: rosctrls.h:111

Referenced by LV_RefreshIcons().

◆ LV_RefreshIcons()

void CDefView::LV_RefreshIcons ( )

Definition at line 1422 of file CDefView.cpp.

1423{
1425
1426 for (INT iItem = -1;;)
1427 {
1428 iItem = ListView_GetNextItem(m_ListView, iItem, LVNI_ALL);
1429 if (iItem == -1)
1430 break;
1431
1432 LV_RefreshIcon(iItem);
1433 }
1434}
void LV_RefreshIcon(INT iItem)
Definition: CDefView.cpp:1411
#define ListView_GetNextItem(hwnd, i, flags)
Definition: commctrl.h:2434
#define LVNI_ALL
Definition: commctrl.h:2422

Referenced by OnChangeNotify().

◆ LV_RenameItem()

BOOLEAN CDefView::LV_RenameItem ( PCUITEMID_CHILD  pidlOld,
PCUITEMID_CHILD  pidlNew 
)

Definition at line 1345 of file CDefView.cpp.

1346{
1347 int nItem;
1348 LVITEMW lvItem;
1349
1350 TRACE("(%p)(pidlold=%p pidlnew=%p)\n", this, pidlOld, pidlNew);
1351
1353
1354 nItem = LV_FindItemByPidl(pidlOld);
1355
1356 if (-1 != nItem)
1357 {
1358 lvItem.mask = LVIF_PARAM; // only the pidl
1359 lvItem.iItem = nItem;
1360 lvItem.iSubItem = 0;
1361 m_ListView.GetItem(&lvItem);
1362
1363 // Store old pidl until new item is replaced
1364 LPVOID oldPidl = reinterpret_cast<LPVOID>(lvItem.lParam);
1365
1366 lvItem.mask = LVIF_PARAM | LVIF_IMAGE | LVIF_TEXT;
1367 lvItem.iItem = nItem;
1368 lvItem.iSubItem = 0;
1369 lvItem.lParam = reinterpret_cast<LPARAM>(ILClone(pidlNew)); // set item's data
1372 m_ListView.SetItem(&lvItem);
1373 m_ListView.Update(nItem);
1374
1375 // Now that the new item is in place, we can safely release the old pidl
1376 SHFree(oldPidl);
1377
1378 return TRUE; // FIXME: better handling
1379 }
1380
1381 return FALSE;
1382}
BOOL GetItem(LV_ITEM *pitem)
Definition: rosctrls.h:106
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder *sh, LPCITEMIDLIST pidl, int *pIndex)
Definition: iconcache.cpp:766

Referenced by OnChangeNotify().

◆ LV_UpdateItem()

BOOLEAN CDefView::LV_UpdateItem ( PCUITEMID_CHILD  pidl)

Definition at line 1384 of file CDefView.cpp.

1385{
1386 int nItem;
1387 LVITEMW lvItem;
1388
1389 TRACE("(%p)(pidl=%p)\n", this, pidl);
1390
1392
1393 nItem = LV_FindItemByPidl(pidl);
1394
1395 if (-1 != nItem)
1396 {
1398
1399 lvItem.mask = LVIF_IMAGE;
1400 lvItem.iItem = nItem;
1401 lvItem.iSubItem = 0;
1403 m_ListView.SetItem(&lvItem);
1404 m_ListView.Update(nItem);
1405 return TRUE;
1406 }
1407
1408 return FALSE;
1409}
#define SFVM_UPDATINGOBJECT
Definition: shlobj.h:1333

Referenced by OnChangeNotify().

◆ MapFolderColumnToListColumn()

HRESULT CDefView::MapFolderColumnToListColumn ( UINT  FoldCol)

Definition at line 979 of file CDefView.cpp.

980{
981 // This function is only called during column management, performance is not critical.
982 for (UINT i = 0;; ++i)
983 {
985 if ((UINT)r == FoldCol)
986 return i;
987 else if (FAILED(r))
988 return r;
989 }
990}
static HRESULT SHGetLVColumnSubItem(HWND List, UINT Col)
Definition: CDefView.cpp:969

Referenced by DoColumnContextMenu(), FillList(), InitList(), and LoadColumns().

◆ MapListColumnToFolderColumn()

HRESULT CDefView::MapListColumnToFolderColumn ( UINT  ListCol)

Definition at line 992 of file CDefView.cpp.

993{
994 // This function is called every time a LVITEM::iSubItem is mapped to
995 // a folder column (calls to GetDetailsOf etc.) and should be fast.
997 {
999 if (ListCol < count)
1000 {
1002 assert(col >= 0 && col == SHGetLVColumnSubItem(m_ListView.m_hWnd, ListCol));
1003 return col;
1004 }
1005 else if (count)
1006 {
1007 TRACE("m_ListToFolderColMap cache miss while mapping %d\n", ListCol);
1008 }
1009 }
1010 return SHGetLVColumnSubItem(m_ListView.m_hWnd, ListCol);
1011}
#define INT
Definition: polytest.cpp:20
#define DPA_FastGetPtr(hdpa, i)
Definition: commctrl.h:4960

Referenced by ColumnListChanged(), GetDetailsByListColumn(), OnNotify(), and SaveViewState().

◆ MoveIcons()

HRESULT STDMETHODCALLTYPE CDefView::MoveIcons ( IDataObject obj)
override

Definition at line 3923 of file CDefView.cpp.

3924{
3925 TRACE("(%p)->(%p)\n", this, obj);
3926 return E_NOTIMPL;
3927}

◆ OnActivate()

LRESULT CDefView::OnActivate ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2365 of file CDefView.cpp.

2366{
2368 return 0;
2369}
void DoActivate(UINT uState)
Definition: CDefView.cpp:2308

◆ OnChangeNotify()

LRESULT CDefView::OnChangeNotify ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2788 of file CDefView.cpp.

2789{
2790 // The change notify can come before WM_CREATE
2791 if (!m_ListView)
2792 return FALSE;
2793
2794 HANDLE hChange = (HANDLE)wParam;
2795 DWORD dwProcID = (DWORD)lParam;
2796 PIDLIST_ABSOLUTE *Pidls;
2797 LONG lEvent;
2798 HANDLE hLock = SHChangeNotification_Lock(hChange, dwProcID, &Pidls, &lEvent);
2799 if (hLock == NULL)
2800 {
2801 ERR("hLock == NULL\n");
2802 return FALSE;
2803 }
2804
2805 TRACE("(%p)(%p,%p,%p)\n", this, Pidls[0], Pidls[1], lParam);
2806
2808 return FALSE;
2809
2810 // Translate child IDLs.
2811 // SHSimpleIDListFromPathW creates fake PIDLs (lacking some attributes)
2812 HRESULT hr;
2813 PITEMID_CHILD child0 = NULL, child1 = NULL;
2814 CComHeapPtr<ITEMIDLIST_RELATIVE> pidl0Temp, pidl1Temp;
2815 if (_ILIsSpecialFolder(Pidls[0]) || ILIsParentOrSpecialParent(m_pidlParent, Pidls[0]))
2816 {
2817 child0 = ILFindLastID(Pidls[0]);
2818 hr = SHGetRealIDL(m_pSFParent, child0, &pidl0Temp);
2819 if (SUCCEEDED(hr))
2820 child0 = pidl0Temp;
2821 }
2822 if (_ILIsSpecialFolder(Pidls[1]) || ILIsParentOrSpecialParent(m_pidlParent, Pidls[1]))
2823 {
2824 child1 = ILFindLastID(Pidls[1]);
2825 hr = SHGetRealIDL(m_pSFParent, child1, &pidl1Temp);
2826 if (SUCCEEDED(hr))
2827 child1 = pidl1Temp;
2828 }
2829
2830 lEvent &= ~SHCNE_INTERRUPT;
2831 switch (lEvent)
2832 {
2833 case SHCNE_MKDIR:
2834 case SHCNE_CREATE:
2835 case SHCNE_DRIVEADD:
2836 if (!child0)
2837 break;
2838 if (LV_FindItemByPidl(child0) < 0)
2839 LV_AddItem(child0);
2840 else
2841 LV_UpdateItem(child0);
2842 break;
2843 case SHCNE_RMDIR:
2844 case SHCNE_DELETE:
2845 case SHCNE_DRIVEREMOVED:
2846 if (child0)
2847 LV_DeleteItem(child0);
2848 break;
2849 case SHCNE_RENAMEFOLDER:
2850 case SHCNE_RENAMEITEM:
2851 if (child0 && child1)
2852 LV_RenameItem(child0, child1);
2853 else if (child0)
2854 LV_DeleteItem(child0);
2855 else if (child1)
2856 LV_AddItem(child1);
2857 break;
2858 case SHCNE_UPDATEITEM:
2859 if (child0)
2860 LV_UpdateItem(child0);
2861 break;
2862 case SHCNE_UPDATEIMAGE:
2864 case SHCNE_MEDIAREMOVED:
2865 case SHCNE_ASSOCCHANGED:
2867 break;
2868 case SHCNE_UPDATEDIR:
2869 case SHCNE_ATTRIBUTES:
2870 Refresh();
2872 break;
2873 case SHCNE_FREESPACE:
2875 break;
2876 }
2877
2879 return TRUE;
2880}
static BOOL ILIsParentOrSpecialParent(PCIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE pidl2)
Definition: CDefView.cpp:2776
EXTERN_C HANDLE WINAPI SHChangeNotification_Lock(HANDLE hTicket, DWORD dwOwnerPID, LPITEMIDLIST **lppidls, LPLONG lpwEventId)
EXTERN_C BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock)
void UpdateStatusbar()
Definition: CDefView.cpp:689
BOOLEAN LV_DeleteItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:1328
BOOLEAN LV_UpdateItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:1384
void LV_RefreshIcons()
Definition: CDefView.cpp:1422
BOOLEAN LV_RenameItem(PCUITEMID_CHILD pidlOld, PCUITEMID_CHILD pidlNew)
Definition: CDefView.cpp:1345
STDMETHOD() Refresh() override
Definition: CDefView.cpp:3040
EXTERN_C HRESULT WINAPI SHGetRealIDL(_In_ IShellFolder *psf, _In_ PCUITEMID_CHILD pidlSimple, _Outptr_ PITEMID_CHILD *ppidlReal)
Definition: utils.cpp:1260
static BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
Definition: pidl.c:198
#define SHCNE_DRIVEREMOVED
Definition: shlobj.h:1896
#define SHCNE_RMDIR
Definition: shlobj.h:1893
#define SHCNE_DELETE
Definition: shlobj.h:1891
#define SHCNE_MKDIR
Definition: shlobj.h:1892
#define SHCNE_UPDATEITEM
Definition: shlobj.h:1902
#define SHCNE_RENAMEITEM
Definition: shlobj.h:1889
#define SHCNE_UPDATEDIR
Definition: shlobj.h:1901
#define SHCNE_MEDIAINSERTED
Definition: shlobj.h:1894
#define SHCNE_UPDATEIMAGE
Definition: shlobj.h:1904
#define SHCNE_CREATE
Definition: shlobj.h:1890
#define SHCNE_RENAMEFOLDER
Definition: shlobj.h:1906
#define SHCNE_MEDIAREMOVED
Definition: shlobj.h:1895
#define SHCNE_DRIVEADD
Definition: shlobj.h:1897
#define SHCNE_ASSOCCHANGED
Definition: shlobj.h:1910
#define SHCNE_ATTRIBUTES
Definition: shlobj.h:1900
#define SHCNE_FREESPACE
Definition: shlobj.h:1907
#define SFVM_FSNOTIFY
Definition: shlobj.h:1307
HANDLE lEvent
Definition: tftpd.cpp:56
PVOID HANDLE
Definition: typedefs.h:73

◆ OnCommand()

LRESULT CDefView::OnCommand ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2403 of file CDefView.cpp.

2404{
2405 DWORD dwCmdID;
2406 DWORD dwCmd;
2407 HWND hwndCmd;
2408 int nCount;
2409
2410 dwCmdID = GET_WM_COMMAND_ID(wParam, lParam);
2412 hwndCmd = GET_WM_COMMAND_HWND(wParam, lParam);
2413
2414 TRACE("(%p)->(0x%08x 0x%08x %p) stub\n", this, dwCmdID, dwCmd, hwndCmd);
2415
2416 if (dwCmdID >= DVIDM_ARRANGESORT_FIRST && dwCmdID <= DVIDM_ARRANGESORT_LAST)
2417 {
2418 UINT listCol = (UINT)GetMenuItemDataById(m_hMenuArrangeModes, dwCmdID);
2419 _Sort(listCol);
2420 return 0;
2421 }
2422
2423 switch (dwCmdID)
2424 {
2428 CheckToolbar();
2429 break;
2432 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_ICON);
2433 CheckToolbar();
2434 break;
2437 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_LIST);
2438 CheckToolbar();
2439 break;
2442 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
2443 CheckToolbar();
2444 break;
2447 break;
2449 if (_GetSnapToGrid() == S_OK)
2451 else
2452 ArrangeGrid();
2453 break;
2455 if (GetAutoArrange() == S_OK)
2456 m_ListView.ModifyStyle(LVS_AUTOARRANGE, 0);
2457 else
2458 AutoArrange();
2459 break;
2463 break;
2465 nCount = m_ListView.GetItemCount();
2466 for (int i=0; i < nCount; i++)
2468 break;
2470 Refresh();
2471 break;
2473 case FCIDM_SHVIEW_CUT:
2474 case FCIDM_SHVIEW_COPY:
2478 return 0;
2479 return OnExplorerCommand(dwCmdID, TRUE);
2483 return 0;
2485 case FCIDM_SHVIEW_UNDO:
2488 return OnExplorerCommand(dwCmdID, FALSE);
2489 default:
2490 // WM_COMMAND messages from file menu are routed to CDefView to let m_pFileMenu handle them
2491 if (m_pFileMenu && dwCmd == 0)
2492 {
2493 HMENU Dummy = NULL;
2494 MenuCleanup _(m_pFileMenu, Dummy);
2496 }
2497 }
2498
2499 return 0;
2500}
#define GET_WM_COMMAND_HWND(wp, lp)
Definition: CDefView.cpp:549
#define GET_WM_COMMAND_ID(wp, lp)
Definition: CDefView.cpp:548
#define GET_WM_COMMAND_CMD(wp, lp)
Definition: CDefView.cpp:550
#define SFVM_CANSELECTALL
STDMETHOD() AutoArrange() override
Definition: CDefView.cpp:3788
void _DoCopyToMoveToFolder(BOOL bCopy)
Definition: CDefView.cpp:2342
LRESULT OnExplorerCommand(UINT uCommand, BOOL bUseSelection)
Definition: CDefView.cpp:2222
STDMETHOD() ArrangeGrid() override
Definition: CDefView.cpp:3782
UINT GetItemState(int i, UINT mask)
Definition: rosctrls.h:173
void SetItemState(int i, UINT state, UINT mask)
Definition: rosctrls.h:178
#define _(X)
Definition: i386-dis.c:35
#define LVIS_SELECTED
Definition: commctrl.h:2319
#define LVA_SNAPTOGRID
Definition: commctrl.h:2530
@ REST_NOVIEWCONTEXTMENU
Definition: shlobj.h:1668
DWORD WINAPI SHRestricted(RESTRICTIONS rest)
Definition: shpolicy.c:150
#define FCIDM_SHVIEW_SELECTALL
Definition: shresdef.h:838
#define FCIDM_SHVIEW_CUT
Definition: shresdef.h:831
#define FCIDM_SHVIEW_LISTVIEW
Definition: shresdef.h:843
#define FCIDM_SHVIEW_UNDO
Definition: shresdef.h:834
#define FCIDM_SHVIEW_COPY
Definition: shresdef.h:832
#define FCIDM_SHVIEW_INSERTLINK
Definition: shresdef.h:835
#define FCIDM_SHVIEW_REFRESH
Definition: shresdef.h:856
#define FCIDM_SHVIEW_NEWFOLDER
Definition: shresdef.h:854
#define FCIDM_SHVIEW_SMALLICON
Definition: shresdef.h:842
#define FCIDM_SHVIEW_PROPERTIES
Definition: shresdef.h:830
#define FCIDM_SHVIEW_SNAPTOGRID
Definition: shresdef.h:847
#define FCIDM_SHVIEW_COPYTO
Definition: shresdef.h:836
#define FCIDM_SHVIEW_MOVETO
Definition: shresdef.h:837
#define FCIDM_SHVIEW_DELETE
Definition: shresdef.h:829
#define FCIDM_SHVIEW_RENAME
Definition: shresdef.h:851
#define FCIDM_SHVIEW_REPORTVIEW
Definition: shresdef.h:844
#define FCIDM_SHVIEW_INVERTSELECTION
Definition: shresdef.h:839
#define FCIDM_SHVIEW_INSERT
Definition: shresdef.h:833
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581

◆ OnContextMenu()

LRESULT CDefView::OnContextMenu ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2118 of file CDefView.cpp.

2119{
2121 UINT uCommand;
2122 HRESULT hResult;
2123
2124 TRACE("(%p)\n", this);
2125
2126 if (m_hContextMenu != NULL)
2127 {
2128 ERR("HACK: Aborting context menu in nested call\n");
2129 return 0;
2130 }
2131
2132 HWND hWndHdr = ListView_GetHeader(m_ListView.m_hWnd);
2133 RECT r;
2134 if (::GetWindowRect(hWndHdr, &r) && PtInRect(&r, pt) && ::IsWindowVisible(hWndHdr))
2135 {
2137 }
2138
2140 if (!m_hContextMenu)
2141 return E_FAIL;
2142
2143 if (lParam != ~0) // unless app key (menu key) was pressed
2144 {
2145 LV_HITTESTINFO hittest = { pt };
2146 ScreenToClient(&hittest.pt);
2147 m_ListView.HitTest(&hittest);
2148
2149 // Right-Clicked item is selected? If selected, no selection change.
2150 // If not selected, then reset the selection and select the item.
2151 if ((hittest.flags & LVHT_ONITEM) &&
2153 {
2154 SelectItem(hittest.iItem, SVSI_SELECT | SVSI_DESELECTOTHERS | SVSI_ENSUREVISIBLE);
2155 }
2156 }
2157
2159 // In case we still have this left over, clean it up
2162 if (FAILED_UNEXPECTEDLY(hResult))
2163 return 0;
2164
2165 UINT cmf = GetContextMenuFlags(m_pShellBrowser, SFGAO_CANRENAME);
2166 // Use 1 as the first id we want. 0 means that user canceled the menu
2167 hResult = m_pCM->QueryContextMenu(m_hContextMenu, 0, CONTEXT_MENU_BASE_ID, DVIDM_CONTEXTMENU_LAST, cmf);
2168 if (FAILED_UNEXPECTEDLY(hResult))
2169 return 0;
2170
2171 // There is no position requested, so try to find one
2172 if (lParam == ~0)
2173 {
2174 HWND hFocus = ::GetFocus();
2175 int lvIndex = -1;
2176
2177 if (hFocus == m_ListView.m_hWnd || m_ListView.IsChild(hFocus))
2178 {
2179 // Is there an item focused and selected?
2181 // If not, find the first selected item
2182 if (lvIndex < 0)
2183 lvIndex = m_ListView.GetNextItem(-1, LVIS_SELECTED);
2184 }
2185
2186 // We got something
2187 if (lvIndex > -1)
2188 {
2189 // Find the center of the icon
2190 RECT rc = { LVIR_ICON };
2191 m_ListView.SendMessage(LVM_GETITEMRECT, lvIndex, (LPARAM)&rc);
2192 pt.x = (rc.right + rc.left) / 2;
2193 pt.y = (rc.bottom + rc.top) / 2;
2194 }
2195 else
2196 {
2197 // We have to drop it somewhere
2198 pt.x = pt.y = 0;
2199 }
2200
2201 m_ListView.ClientToScreen(&pt);
2202 }
2203
2204 // This runs the message loop, calling back to us with f.e. WM_INITPOPUP (hence why m_hContextMenu and m_pCM exist)
2205 uCommand = TrackPopupMenu(m_hContextMenu,
2207 pt.x, pt.y, 0, m_hWnd, NULL);
2208 if (uCommand == 0)
2209 return 0;
2210
2211 if (uCommand >= DVIDM_ARRANGESORT_FIRST && uCommand <= DVIDM_ARRANGESORT_LAST)
2212 return SendMessage(WM_COMMAND, uCommand, 0);
2213
2214 if (uCommand == FCIDM_SHVIEW_OPEN && OnDefaultCommand() == S_OK)
2215 return 0;
2216
2218
2219 return 0;
2220}
#define CONTEXT_MENU_BASE_ID
Definition: CDefView.cpp:81
BOOL IsWindowVisible() const
Definition: atlwin.h:958
CComPtr< IContextMenu > m_pCM
Definition: CDefView.cpp:264
LRESULT DoColumnContextMenu(LRESULT lParam)
Definition: CDefView.cpp:1894
HRESULT OnDefaultCommand()
Definition: CDefView.cpp:637
#define LVIR_ICON
Definition: commctrl.h:2473
#define LVM_GETITEMRECT
Definition: commctrl.h:2477
#define LV_HITTESTINFO
Definition: commctrl.h:2504
#define LVIS_FOCUSED
Definition: commctrl.h:2318
#define FCIDM_SHVIEW_OPEN
Definition: shresdef.h:858
HWND WINAPI GetFocus(void)
Definition: window.c:1865
#define WM_COMMAND
Definition: winuser.h:1740
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
#define SendMessage
Definition: winuser.h:5852

◆ OnCreate()

LRESULT CDefView::OnCreate ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1667 of file CDefView.cpp.

1668{
1671
1672 TRACE("%p\n", this);
1673
1675 {
1676 if (FAILED(RegisterDragDrop(m_hWnd, pdt)))
1677 ERR("Error Registering DragDrop\n");
1678 }
1679
1680 /* register for receiving notifications */
1681 m_pSFParent->QueryInterface(IID_PPV_ARG(IPersistFolder2, &ppf2));
1682 if (ppf2)
1683 {
1684 ppf2->GetCurFolder(&m_pidlParent);
1685 }
1686
1687 if (CreateList())
1688 {
1689 if (InitList())
1690 {
1691 FillList(FALSE);
1692 }
1693 }
1694
1696 {
1697 HWND hwndSB;
1698 m_pShellBrowser->GetWindow(&hwndSB);
1700 }
1701
1702 // Set up change notification
1703 LPITEMIDLIST pidlTarget = NULL;
1704 LONG fEvents = 0;
1705 HRESULT hr = _DoFolderViewCB(SFVM_GETNOTIFY, (WPARAM)&pidlTarget, (LPARAM)&fEvents);
1706 if (FAILED(hr) || (!pidlTarget && !fEvents))
1707 {
1708 pidlTarget = m_pidlParent;
1709 fEvents = SHCNE_ALLEVENTS;
1710 }
1711 SHChangeNotifyEntry ntreg = {};
1713 if (FAILED(hr))
1714 {
1715 ntreg.fRecursive = FALSE;
1716 ntreg.pidl = pidlTarget;
1717 }
1721 fEvents, SHV_CHANGE_NOTIFY,
1722 1, &ntreg);
1723
1725
1726 BOOL bPreviousParentSpecial = m_isParentFolderSpecial;
1727
1728 // A folder is special if it is the Desktop folder,
1729 // a network folder, or a Control Panel folder
1732
1733 // Only force StatusBar part refresh if the state
1734 // changed from the previous folder
1735 if (bPreviousParentSpecial != m_isParentFolderSpecial)
1736 {
1737 // This handles changing StatusBar parts
1739 }
1740
1742
1743 return S_OK;
1744}
#define SHV_CHANGE_NOTIFY
Definition: CDefView.cpp:76
EXTERN_C ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, INT fSources, LONG wEventMask, UINT uMsg, INT cItems, SHChangeNotifyEntry *lpItems)
BOOL IsDesktop() const
Definition: CDefView.cpp:286
BOOL CreateList()
Definition: CDefView.cpp:787
HRESULT FillList(BOOL IsRefreshCommand=TRUE)
Definition: CDefView.cpp:1453
void _ForceStatusBarResize()
Definition: CDefView.cpp:4348
BOOL InitList()
Definition: CDefView.cpp:940
HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
Definition: ole2.c:557
BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
Definition: pidl.c:1948
BOOL _ILIsControlPanel(LPCITEMIDLIST pidl)
Definition: pidl.c:1959
#define SHCNRF_NewDelivery
Definition: shlobj.h:1937
#define SHCNRF_ShellLevel
Definition: shlobj.h:1935
#define SHCNRF_InterruptLevel
Definition: shlobj.h:1934
#define SHCNE_ALLEVENTS
Definition: shlobj.h:1913
#define SFVM_QUERYFSNOTIFY
Definition: shlobj.h:1316
#define SFVM_GETNOTIFY
Definition: shlobj.h:1336
#define IDA_SHELLVIEW
Definition: shresdef.h:26
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
PCIDLIST_ABSOLUTE pidl
Definition: shlobj.h:1885
BOOL WINAPI SetShellWindowEx(HWND, HWND)
Definition: ntwrapper.h:58
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)

◆ OnCustomItem()

LRESULT CDefView::OnCustomItem ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2885 of file CDefView.cpp.

2886{
2887 if (!m_pCM)
2888 {
2889 /* no menu */
2890 ERR("no context menu\n");
2891 return FALSE;
2892 }
2893
2894 // lParam of WM_DRAWITEM WM_MEASUREITEM contains a menu id and
2895 // this also needs to be changed to a menu identifier offset
2896 UINT CmdID;
2897 HRESULT hres = SHGetMenuIdFromMenuMsg(uMsg, lParam, &CmdID);
2898 if (SUCCEEDED(hres))
2900
2901 /* Forward the message to the IContextMenu2 */
2904
2905 return (SUCCEEDED(hres));
2906}
HRESULT SHSetMenuIdInMenuMsg(UINT uMsg, LPARAM lParam, UINT CmdId)
HRESULT SHGetMenuIdFromMenuMsg(UINT uMsg, LPARAM lParam, UINT *CmdId)
HRESULT WINAPI SHForwardContextMenuMsg(IUnknown *pUnk, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pResult, BOOL useIContextMenu2)
Definition: rosordinal.c:11

Referenced by OnInitMenuPopup().

◆ OnDeactivate()

void CDefView::OnDeactivate ( )

Definition at line 2297 of file CDefView.cpp.

2298{
2299 TRACE("%p\n", this);
2300
2302 {
2303 // TODO: cleanup menu after deactivation
2305 }
2306}

Referenced by DoActivate(), and OnNotify().

◆ OnDefaultCommand()

HRESULT CDefView::OnDefaultCommand ( )

Definition at line 637 of file CDefView.cpp.

638{
640
641 if (m_pCommDlgBrowser.p != NULL)
642 {
643 TRACE("ICommDlgBrowser::OnDefaultCommand\n");
644 ret = m_pCommDlgBrowser->OnDefaultCommand(this);
645 TRACE("-- returns 0x%08x\n", ret);
646 }
647
648 return ret;
649}

Referenced by OnContextMenu(), and OpenSelectedItems().

◆ OnDestroy()

LRESULT CDefView::OnDestroy ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1562 of file CDefView.cpp.

1563{
1564 if (!m_Destroyed)
1565 {
1566 m_Destroyed = TRUE;
1567 if (m_hMenu)
1568 {
1570 m_hMenu = NULL;
1571 }
1574 m_hNotify = NULL;
1577 }
1578 bHandled = FALSE;
1579 return 0;
1580}
EXTERN_C BOOL WINAPI SHChangeNotifyDeregister(ULONG hNotify)
HRESULT WINAPI RevokeDragDrop(HWND hwnd)
Definition: ole2.c:639

◆ OnEraseBackground()

LRESULT CDefView::OnEraseBackground ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1582 of file CDefView.cpp.

1583{
1584 /* redirect to parent */
1587
1588 bHandled = FALSE;
1589 return 0;
1590}
CWindow GetParent() const
Definition: atlwin.h:700
@ FWF_TRANSPARENT
Definition: shobjidl.idl:649
#define WM_ERASEBKGND
Definition: winuser.h:1625
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

◆ OnExplorerCommand()

LRESULT CDefView::OnExplorerCommand ( UINT  uCommand,
BOOL  bUseSelection 
)

Definition at line 2222 of file CDefView.cpp.

2223{
2224 HRESULT hResult;
2225 HMENU hMenu = NULL;
2226
2228 hResult = GetItemObject(bUseSelection ? SVGIO_SELECTION : SVGIO_BACKGROUND, IID_PPV_ARG(IContextMenu, &pCM));
2229 if (FAILED_UNEXPECTEDLY(hResult))
2230 return 0;
2231
2232 MenuCleanup _(pCM, hMenu);
2233
2234 if ((uCommand != FCIDM_SHVIEW_DELETE) && (uCommand != FCIDM_SHVIEW_RENAME))
2235 {
2236 hMenu = CreatePopupMenu();
2237 if (!hMenu)
2238 return 0;
2239
2240 hResult = pCM->QueryContextMenu(hMenu, 0, DVIDM_CONTEXTMENU_FIRST, DVIDM_CONTEXTMENU_LAST, CMF_NORMAL);
2241 if (FAILED_UNEXPECTEDLY(hResult))
2242 return 0;
2243 }
2244
2245 if (bUseSelection)
2246 {
2247 // FIXME: we should cache this
2248 SFGAOF rfg = SFGAO_BROWSABLE | SFGAO_CANCOPY | SFGAO_CANLINK | SFGAO_CANMOVE | SFGAO_CANDELETE | SFGAO_CANRENAME | SFGAO_HASPROPSHEET | SFGAO_FILESYSTEM | SFGAO_FOLDER;
2249 hResult = m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &rfg);
2250 if (FAILED_UNEXPECTEDLY(hResult))
2251 return 0;
2252
2253 if (!(rfg & SFGAO_CANMOVE) && uCommand == FCIDM_SHVIEW_CUT)
2254 return 0;
2255 if (!(rfg & SFGAO_CANCOPY) && uCommand == FCIDM_SHVIEW_COPY)
2256 return 0;
2257 if (!(rfg & SFGAO_CANDELETE) && uCommand == FCIDM_SHVIEW_DELETE)
2258 return 0;
2259 if (!(rfg & SFGAO_CANRENAME) && uCommand == FCIDM_SHVIEW_RENAME)
2260 return 0;
2261 if (!(rfg & SFGAO_HASPROPSHEET) && uCommand == FCIDM_SHVIEW_PROPERTIES)
2262 return 0;
2263 }
2264
2265 // FIXME: We should probably use the objects position?
2267 return 0;
2268}

Referenced by OnCommand().

◆ OnFinalMessage()

VOID CDefView::OnFinalMessage ( HWND  )
overridevirtual

Reimplemented from ATL::CWindowImplBaseT< TBase, TWinTraits >.

Definition at line 1662 of file CDefView.cpp.

1663{
1664 this->Release();
1665}
ULONG Release()

◆ OnGetDlgCode()

LRESULT CDefView::OnGetDlgCode ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1557 of file CDefView.cpp.

1558{
1559 return m_ListView.SendMessageW(uMsg, 0, 0);
1560}

◆ OnGetShellBrowser()

LRESULT CDefView::OnGetShellBrowser ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1650 of file CDefView.cpp.

1651{
1652 return reinterpret_cast<LRESULT>(m_pShellBrowser.p);
1653}

◆ OnInitMenuPopup()

LRESULT CDefView::OnInitMenuPopup ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2917 of file CDefView.cpp.

2918{
2919 HMENU hmenu = (HMENU) wParam;
2920 int nPos = LOWORD(lParam);
2921 UINT menuItemId;
2922
2923 if (m_pCM)
2924 OnCustomItem(uMsg, wParam, lParam, bHandled);
2925
2927
2928 if (GetSelections() == 0)
2929 {
2936 }
2937 else
2938 {
2939 // FIXME: Check copyable
2946 }
2947
2948 /* Lets try to find out what the hell wParam is */
2949 if (hmenu == GetSubMenu(m_hMenu, nPos))
2950 menuItemId = ReallyGetMenuItemID(m_hMenu, nPos);
2951 else if (hViewMenu && hmenu == GetSubMenu(hViewMenu, nPos))
2952 menuItemId = ReallyGetMenuItemID(hViewMenu, nPos);
2953 else if (m_hContextMenu && hmenu == GetSubMenu(m_hContextMenu, nPos))
2954 menuItemId = ReallyGetMenuItemID(m_hContextMenu, nPos);
2955 else
2956 return FALSE;
2957
2958 switch (menuItemId)
2959 {
2960 case FCIDM_MENU_FILE:
2961 FillFileMenu();
2962 break;
2963 case FCIDM_MENU_VIEW:
2964 case FCIDM_SHVIEW_VIEW:
2966 break;
2969 break;
2970 }
2971
2972 return FALSE;
2973}
static UINT ReallyGetMenuItemID(HMENU hmenu, int i)
Definition: CDefView.cpp:191
HRESULT FillFileMenu()
Definition: CDefView.cpp:1750
LRESULT OnCustomItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CDefView.cpp:2885
HRESULT FillArrangeAsMenu(HMENU hmenuArrange)
Definition: CDefView.cpp:1825
#define FCIDM_SHVIEW_VIEW
Definition: shresdef.h:828
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define MF_ENABLED
Definition: winuser.h:128

◆ OnKillFocus()

LRESULT CDefView::OnKillFocus ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2391 of file CDefView.cpp.

2392{
2393 TRACE("(%p) stub\n", this);
2394
2396 /* Notify the ICommDlgBrowser */
2397 OnStateChange(CDBOSC_KILLFOCUS);
2398
2399 return 0;
2400}
HRESULT OnStateChange(UINT uFlags)
Definition: CDefView.cpp:651
@ SVUIA_ACTIVATE_NOFOCUS
Definition: shobjidl.idl:753

◆ OnNCCreate()

LRESULT CDefView::OnNCCreate ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1655 of file CDefView.cpp.

1656{
1657 this->AddRef();
1658 bHandled = FALSE;
1659 return 0;
1660}

◆ OnNotify()

LRESULT CDefView::OnNotify ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2520 of file CDefView.cpp.

2521{
2522 UINT CtlID;
2523 LPNMHDR lpnmh;
2524 LPNMLISTVIEW lpnmlv;
2525 NMLVDISPINFOW *lpdi;
2526 PCUITEMID_CHILD pidl;
2527 BOOL unused;
2528
2529 CtlID = wParam;
2530 lpnmh = (LPNMHDR)lParam;
2531 lpnmlv = (LPNMLISTVIEW)lpnmh;
2532 lpdi = (NMLVDISPINFOW *)lpnmh;
2533
2534 TRACE("%p CtlID=%u lpnmh->code=%x\n", this, CtlID, lpnmh->code);
2535
2536 switch (lpnmh->code)
2537 {
2538 case NM_SETFOCUS:
2539 TRACE("-- NM_SETFOCUS %p\n", this);
2540 OnSetFocus(0, 0, 0, unused);
2541 break;
2542 case NM_KILLFOCUS:
2543 TRACE("-- NM_KILLFOCUS %p\n", this);
2544 OnDeactivate();
2545 /* Notify the ICommDlgBrowser interface */
2546 OnStateChange(CDBOSC_KILLFOCUS);
2547 break;
2548 case NM_CUSTOMDRAW:
2549 TRACE("-- NM_CUSTOMDRAW %p\n", this);
2550 return CDRF_DODEFAULT;
2551 case NM_RELEASEDCAPTURE:
2552 TRACE("-- NM_RELEASEDCAPTURE %p\n", this);
2553 break;
2554 case NM_CLICK:
2555 TRACE("-- NM_CLICK %p\n", this);
2556 break;
2557 case NM_RCLICK:
2558 TRACE("-- NM_RCLICK %p\n", this);
2559 break;
2560 case NM_DBLCLK:
2561 TRACE("-- NM_DBLCLK %p\n", this);
2563 break;
2564 case NM_RETURN:
2565 TRACE("-- NM_RETURN %p\n", this);
2567 break;
2568 case HDN_ENDTRACKW:
2569 TRACE("-- HDN_ENDTRACKW %p\n", this);
2570 //nColumn1 = m_ListView.GetColumnWidth(0);
2571 //nColumn2 = m_ListView.GetColumnWidth(1);
2572 break;
2573 case LVN_DELETEITEM:
2574 TRACE("-- LVN_DELETEITEM %p\n", this);
2575 /*delete the pidl because we made a copy of it*/
2576 SHFree(reinterpret_cast<LPVOID>(lpnmlv->lParam));
2577 break;
2578 case LVN_DELETEALLITEMS:
2579 TRACE("-- LVN_DELETEALLITEMS %p\n", this);
2580 return FALSE;
2581 case LVN_INSERTITEM:
2582 TRACE("-- LVN_INSERTITEM (STUB)%p\n", this);
2583 break;
2584 case LVN_ITEMACTIVATE:
2585 TRACE("-- LVN_ITEMACTIVATE %p\n", this);
2586 OnStateChange(CDBOSC_SELCHANGE); // browser will get the IDataObject
2587 break;
2588 case LVN_COLUMNCLICK:
2589 {
2590 UINT foldercol = MapListColumnToFolderColumn(lpnmlv->iSubItem);
2591 HRESULT hr = S_FALSE;
2592 if (m_pSDParent)
2593 hr = m_pSDParent->ColumnClick(foldercol);
2594 if (hr != S_OK)
2595 hr = _DoFolderViewCB(SFVM_COLUMNCLICK, foldercol, 0);
2596 if (hr != S_OK)
2597 _Sort(lpnmlv->iSubItem);
2598 break;
2599 }
2600 case LVN_GETDISPINFOA:
2601 case LVN_GETDISPINFOW:
2602 TRACE("-- LVN_GETDISPINFO %p\n", this);
2603 pidl = _PidlByItem(lpdi->item);
2604
2605 if (lpdi->item.mask & LVIF_TEXT) /* text requested */
2606 {
2609 break;
2610
2611 if (lpnmh->code == LVN_GETDISPINFOA)
2612 {
2613 /* shouldn't happen */
2614 NMLVDISPINFOA *lpdiA = (NMLVDISPINFOA *)lpnmh;
2615 StrRetToStrNA( lpdiA->item.pszText, lpdiA->item.cchTextMax, &sd.str, NULL);
2616 TRACE("-- text=%s\n", lpdiA->item.pszText);
2617 }
2618 else /* LVN_GETDISPINFOW */
2619 {
2620 StrRetToStrNW( lpdi->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL);
2621 TRACE("-- text=%s\n", debugstr_w(lpdi->item.pszText));
2622 }
2623 }
2624 if(lpdi->item.mask & LVIF_IMAGE) /* image requested */
2625 {
2627 }
2628 if(lpdi->item.mask & LVIF_STATE)
2629 {
2630 ULONG attributes = SFGAO_HIDDEN;
2631 if (SUCCEEDED(m_pSFParent->GetAttributesOf(1, &pidl, &attributes)))
2632 {
2633 if (attributes & SFGAO_HIDDEN)
2634 lpdi->item.state |= LVIS_CUT;
2635 }
2636 }
2637 lpdi->item.mask |= LVIF_DI_SETITEM;
2638 break;
2639 case LVN_ITEMCHANGED:
2640 TRACE("-- LVN_ITEMCHANGED %p\n", this);
2641 if ((lpnmlv->uOldState ^ lpnmlv->uNewState) & (LVIS_SELECTED | LVIS_FOCUSED))
2642 {
2643 OnStateChange(CDBOSC_SELCHANGE); // browser will get the IDataObject
2644 // FIXME: Use LVIS_DROPHILITED instead in drag_notify_subitem
2646 {
2649 }
2650 _DoFolderViewCB(SFVM_SELECTIONCHANGED, NULL/* FIXME */, NULL/* FIXME */);
2651 }
2652 break;
2653 case LVN_BEGINDRAG:
2654 case LVN_BEGINRDRAG:
2655 TRACE("-- LVN_BEGINDRAG\n");
2656 if (GetSelections())
2657 {
2659 DWORD dwAttributes = SFGAO_CANCOPY | SFGAO_CANLINK;
2660 DWORD dwEffect = DROPEFFECT_MOVE;
2661
2662 if (SUCCEEDED(m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, IID_NULL_PPV_ARG(IDataObject, &pda))))
2663 {
2665
2666 if (SUCCEEDED(m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &dwAttributes)))
2667 dwEffect |= dwAttributes & (SFGAO_CANCOPY | SFGAO_CANLINK);
2668
2670 if (SUCCEEDED(pda->QueryInterface(IID_PPV_ARG(IAsyncOperation, &piaso))))
2671 piaso->SetAsyncMode(TRUE);
2672
2673 DWORD dwEffect2;
2674
2675 m_pSourceDataObject = pda;
2676 m_ptFirstMousePos = params->ptAction;
2679
2680 HIMAGELIST big_icons, small_icons;
2681 Shell_GetImageLists(&big_icons, &small_icons);
2682 PCUITEMID_CHILD pidl = _PidlByItem(params->iItem);
2683 int iIcon = SHMapPIDLToSystemImageListIndex(m_pSFParent, pidl, 0);
2684 POINT ptItem;
2685 m_ListView.GetItemPosition(params->iItem, &ptItem);
2686
2687 ImageList_BeginDrag(big_icons, iIcon, params->ptAction.x - ptItem.x, params->ptAction.y - ptItem.y);
2688 DoDragDrop(pda, this, dwEffect, &dwEffect2);
2690 }
2691 }
2692 break;
2694 {
2695 DWORD dwAttr = SFGAO_CANRENAME;
2696 pidl = _PidlByItem(lpdi->item);
2697
2698 TRACE("-- LVN_BEGINLABELEDITW %p\n", this);
2699
2700 m_pSFParent->GetAttributesOf(1, &pidl, &dwAttr);
2701 if (SFGAO_CANRENAME & dwAttr)
2702 {
2703 HWND hEdit = reinterpret_cast<HWND>(m_ListView.SendMessage(LVM_GETEDITCONTROL));
2705
2706 // smartass-renaming: See CORE-15242
2707 if (!(dwAttr & SFGAO_FOLDER) && (dwAttr & SFGAO_FILESYSTEM) &&
2708 (lpdi->item.mask & LVIF_TEXT) && !SelectExtOnRename())
2709 {
2710 WCHAR szFullPath[MAX_PATH];
2711 PIDLIST_ABSOLUTE pidlFull = ILCombine(m_pidlParent, pidl);
2712 SHGetPathFromIDListW(pidlFull, szFullPath);
2713
2714 INT cchLimit = 0;
2715 _DoFolderViewCB(SFVM_GETNAMELENGTH, (WPARAM)pidlFull, (LPARAM)&cchLimit);
2716 if (cchLimit)
2717 ::SendMessageW(hEdit, EM_SETLIMITTEXT, cchLimit, 0);
2718
2719 if (!SHELL_FS_HideExtension(szFullPath))
2720 {
2721 LPWSTR pszText = lpdi->item.pszText;
2722 LPWSTR pchDotExt = PathFindExtensionW(pszText);
2723 ::PostMessageW(hEdit, EM_SETSEL, 0, pchDotExt - pszText);
2725 }
2726
2727 ILFree(pidlFull);
2728 }
2729
2730 m_isEditing = TRUE;
2731 return FALSE;
2732 }
2733 return TRUE;
2734 }
2735 case LVN_ENDLABELEDITW:
2736 {
2737 TRACE("-- LVN_ENDLABELEDITW %p\n", this);
2739
2740 if (lpdi->item.pszText)
2741 {
2742 HRESULT hr;
2743 LVITEMW lvItem;
2744
2745 pidl = _PidlByItem(lpdi->item);
2746 PITEMID_CHILD pidlNew = NULL;
2747 hr = m_pSFParent->SetNameOf(0, pidl, lpdi->item.pszText, SHGDN_INFOLDER, &pidlNew);
2748
2749 if (SUCCEEDED(hr) && pidlNew)
2750 {
2751 lvItem.mask = LVIF_PARAM|LVIF_IMAGE;
2752 lvItem.iItem = lpdi->item.iItem;
2753 lvItem.iSubItem = 0;
2754 lvItem.lParam = reinterpret_cast<LPARAM>(pidlNew);
2756 m_ListView.SetItem(&lvItem);
2757 m_ListView.Update(lpdi->item.iItem);
2758 return TRUE;
2759 }
2760 }
2761
2762 return FALSE;
2763 }
2764 default:
2765 TRACE("-- %p WM_COMMAND %x unhandled\n", this, lpnmh->code);
2766 break;
2767 }
2768
2769 return 0;
2770}
#define SHV_UPDATESTATUSBAR
Definition: CDefView.cpp:77
static BOOL SelectExtOnRename(void)
Definition: CDefView.cpp:2503
#define SFVM_GETNAMELENGTH
#define SFVM_SELECTIONCHANGED
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CDefView.cpp:2371
HRESULT GetDetailsByListColumn(PCUITEMID_CHILD pidl, UINT ListCol, SHELLDETAILS &sd)
Definition: CDefView.cpp:1035
HRESULT OpenSelectedItems()
Definition: CDefView.cpp:2078
BOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack, INT iTrack, INT dxHotspot, INT dyHotspot)
Definition: imagelist.c:638
HRESULT WINAPI DoDragDrop(IDataObject *pDataObject, IDropSource *pDropSource, DWORD dwOKEffect, DWORD *pdwEffect)
Definition: ole2.c:753
BOOL SHELL_FS_HideExtension(LPCWSTR szPath)
Definition: CFSFolder.cpp:1355
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
Definition: path.c:447
#define debugstr_w
Definition: kernel32.h:32
WORD unused[29]
Definition: crypt.c:1155
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:940
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:712
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1342
#define NM_RELEASEDCAPTURE
Definition: commctrl.h:141
#define LVN_GETDISPINFOA
Definition: commctrl.h:3153
#define LVN_BEGINRDRAG
Definition: commctrl.h:3141
#define LVN_COLUMNCLICK
Definition: commctrl.h:3139
#define NM_DBLCLK
Definition: commctrl.h:131
#define LVIF_STATE
Definition: commctrl.h:2312
#define LVN_DELETEALLITEMS
Definition: commctrl.h:3134
#define LVM_GETEDITCONTROL
Definition: commctrl.h:2542
#define CDRF_DODEFAULT
Definition: commctrl.h:268
#define LVN_INSERTITEM
Definition: commctrl.h:3132
#define HDN_ENDTRACKW
Definition: commctrl.h:850
#define NM_CLICK
Definition: commctrl.h:130
#define LVN_BEGINDRAG
Definition: commctrl.h:3140
#define NM_KILLFOCUS
Definition: commctrl.h:136
#define NM_CUSTOMDRAW
Definition: commctrl.h:137
#define LVN_ENDLABELEDITW
Definition: commctrl.h:3138
#define LVN_BEGINLABELEDITW
Definition: commctrl.h:3136
#define NM_RETURN
Definition: commctrl.h:132
struct tagNMLISTVIEW * LPNMLISTVIEW
#define NM_RCLICK
Definition: commctrl.h:133
#define NM_SETFOCUS
Definition: commctrl.h:135
#define LVN_GETDISPINFOW
Definition: commctrl.h:3154
#define LVN_ITEMCHANGED
Definition: commctrl.h:3131
#define LVIF_DI_SETITEM
Definition: commctrl.h:3166
#define LVN_DELETEITEM
Definition: commctrl.h:3133
#define LVN_ITEMACTIVATE
Definition: commctrl.h:3147
#define EM_SCROLLCARET
Definition: richedit.h:81
static HWND hEdit
Definition: autocomplete.c:34
HRESULT WINAPI SHLimitInputEdit(HWND hWnd, IShellFolder *psf)
Definition: shellord.c:3042
BOOL WINAPI StrRetToStrNA(LPSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
Definition: shellstring.c:54
#define SFVM_COLUMNCLICK
Definition: shlobj.h:1315
LVITEMW item
Definition: commctrl.h:3179
LVITEMA item
Definition: commctrl.h:3174
int cchTextMax
Definition: commctrl.h:2349
LPSTR pszText
Definition: commctrl.h:2348
int cchTextMax
Definition: commctrl.h:2366
UINT state
Definition: commctrl.h:2363
UINT code
Definition: winuser.h:3159
UINT uNewState
Definition: commctrl.h:3036
LPARAM lParam
Definition: commctrl.h:3040
UINT uOldState
Definition: commctrl.h:3037
DWORD dwAttributes
Definition: vdmdbg.h:34
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
#define EM_SETLIMITTEXT
Definition: winuser.h:2011
struct tagNMHDR * LPNMHDR
#define EM_SETSEL
Definition: winuser.h:2018
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ OnPrintClient()

LRESULT CDefView::OnPrintClient ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1614 of file CDefView.cpp.

1615{
1616 HDC hDC = (HDC)wParam;
1617
1618 RECT rc;
1620
1622 {
1623 BITMAP bm;
1624 if (::GetObject(m_viewinfo_data.hbmBack, sizeof(BITMAP), &bm))
1625 {
1626 INT dx = -(::GetScrollPos(m_ListView, SB_HORZ) % bm.bmWidth);
1627 INT dy = -(::GetScrollPos(m_ListView, SB_VERT) % bm.bmHeight);
1628 DrawTileBitmap(hDC, &rc, m_viewinfo_data.hbmBack, bm.bmWidth, bm.bmHeight, dx, dy);
1629 }
1630 }
1631 else
1632 {
1634 }
1635
1636 bHandled = TRUE;
1637
1638 return TRUE;
1639}
static HDC hDC
Definition: 3dtext.c:33
static VOID DrawTileBitmap(HDC hDC, LPCRECT prc, HBITMAP hbm, INT nWidth, INT nHeight, INT dx, INT dy)
Definition: CDefView.cpp:1593
static HDC
Definition: imagelist.c:92
Definition: bl.h:1331
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
#define GetObject
Definition: wingdi.h:4468
HBRUSH WINAPI GetSysColorBrush(_In_ int)
int WINAPI GetScrollPos(_In_ HWND, _In_ int)

◆ OnSetFocus()

LRESULT CDefView::OnSetFocus ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2371 of file CDefView.cpp.

2372{
2373 TRACE("%p\n", this);
2374
2375 /* Tell the browser one of our windows has received the focus. This
2376 should always be done before merging menus (OnActivate merges the
2377 menus) if one of our windows has the focus.*/
2378
2379 m_pShellBrowser->OnViewWindowActive(this);
2381
2382 /* Set the focus to the listview */
2383 m_ListView.SetFocus();
2384
2385 /* Notify the ICommDlgBrowser interface */
2386 OnStateChange(CDBOSC_SETFOCUS);
2387
2388 return 0;
2389}

Referenced by OnNotify().

◆ OnSettingChange()

LRESULT CDefView::OnSettingChange ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2908 of file CDefView.cpp.

2909{
2910 /* Wallpaper setting affects drop shadows effect */
2911 if (wParam == SPI_SETDESKWALLPAPER || wParam == 0)
2913
2914 return S_OK;
2915}
#define SPI_SETDESKWALLPAPER
Definition: winuser.h:1369

◆ OnShowWindow()

LRESULT CDefView::OnShowWindow ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1549 of file CDefView.cpp.

1550{
1551 if (m_ListView.IsWindow())
1552 m_ListView.UpdateWindow();
1553 bHandled = FALSE;
1554 return 0;
1555}

◆ OnSize()

LRESULT CDefView::OnSize ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 2272 of file CDefView.cpp.

2273{
2274 WORD wWidth, wHeight;
2275
2276 wWidth = LOWORD(lParam);
2277 wHeight = HIWORD(lParam);
2278
2279 TRACE("%p width=%u height=%u\n", this, wWidth, wHeight);
2280
2281 // WM_SIZE can come before WM_CREATE
2282 if (!m_ListView)
2283 return 0;
2284
2285 /* Resize the ListView to fit our window */
2286 ::MoveWindow(m_ListView, 0, 0, wWidth, wHeight, TRUE);
2287
2289
2292
2293 return 0;
2294}
#define SFVM_SIZE
Definition: shlobj.h:1338
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)

◆ OnStateChange()

HRESULT CDefView::OnStateChange ( UINT  uFlags)

Definition at line 651 of file CDefView.cpp.

652{
654
655 if (m_pCommDlgBrowser.p != NULL)
656 {
657 TRACE("ICommDlgBrowser::OnStateChange flags=%x\n", uFlags);
658 ret = m_pCommDlgBrowser->OnStateChange(this, uFlags);
659 TRACE("--\n");
660 }
661
662 return ret;
663}

Referenced by OnKillFocus(), OnNotify(), and OnSetFocus().

◆ OnSysColorChange()

LRESULT CDefView::OnSysColorChange ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 1641 of file CDefView.cpp.

1642{
1643 /* Update desktop labels color */
1645
1646 /* Forward WM_SYSCOLORCHANGE to common controls */
1647 return m_ListView.SendMessageW(uMsg, 0, 0);
1648}

◆ OnUpdateStatusbar()

LRESULT CDefView::OnUpdateStatusbar ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 776 of file CDefView.cpp.

777{
780 return 0;
781}

◆ OpenSelectedItems()

HRESULT CDefView::OpenSelectedItems ( )

Definition at line 2078 of file CDefView.cpp.

2079{
2080 HMENU hMenu;
2081 UINT uCommand;
2082 HRESULT hResult;
2083
2084 if (m_ListView.GetSelectedCount() == 0)
2085 return S_OK;
2086
2087 hResult = OnDefaultCommand();
2088 if (hResult == S_OK)
2089 return hResult;
2090
2091 hMenu = CreatePopupMenu();
2092 if (!hMenu)
2093 return E_FAIL;
2094
2097 MenuCleanup _(pCM, hMenu);
2098 if (FAILED_UNEXPECTEDLY(hResult))
2099 return hResult;
2100
2101 UINT cmf = CMF_DEFAULTONLY | GetContextMenuFlags(m_pShellBrowser, 0);
2102 hResult = pCM->QueryContextMenu(hMenu, 0, DVIDM_CONTEXTMENU_FIRST, DVIDM_CONTEXTMENU_LAST, cmf);
2103 if (FAILED_UNEXPECTEDLY(hResult))
2104 return hResult;
2105
2106 uCommand = GetMenuDefaultItem(hMenu, FALSE, 0);
2107 if (uCommand == (UINT)-1)
2108 {
2109 ERR("GetMenuDefaultItem returned -1\n");
2110 return E_FAIL;
2111 }
2112
2114
2115 return hResult;
2116}
UINT WINAPI GetMenuDefaultItem(_In_ HMENU hMenu, _In_ UINT fByPos, _In_ UINT gmdiFlags)

Referenced by OnNotify().

◆ QueryContinueDrag()

HRESULT WINAPI CDefView::QueryContinueDrag ( BOOL  fEscapePressed,
DWORD  grfKeyState 
)
override

Implements IDropSource.

Definition at line 4488 of file CDefView.cpp.

4489{
4490 TRACE("(%p)\n", this);
4491
4492 if (fEscapePressed)
4493 return DRAGDROP_S_CANCEL;
4494 else if (!(grfKeyState & MK_LBUTTON) && !(grfKeyState & MK_RBUTTON))
4495 return DRAGDROP_S_DROP;
4496 else
4497 return S_OK;
4498}
#define DRAGDROP_S_DROP
Definition: winerror.h:2646
#define DRAGDROP_S_CANCEL
Definition: winerror.h:2647
#define MK_RBUTTON
Definition: winuser.h:2368

◆ QueryService()

HRESULT STDMETHODCALLTYPE CDefView::QueryService ( REFGUID  guidService,
REFIID  riid,
void **  ppvObject 
)
override

Implements IServiceProvider.

Definition at line 4562 of file CDefView.cpp.

4563{
4564 if (IsEqualIID(guidService, SID_IShellBrowser))
4565 return m_pShellBrowser->QueryInterface(riid, ppvObject);
4566 else if(IsEqualIID(guidService, SID_IFolderView))
4567 return QueryInterface(riid, ppvObject);
4568
4569 return E_NOINTERFACE;
4570}
#define SID_IFolderView
#define SID_IShellBrowser
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082

◆ QueryStatus()

HRESULT WINAPI CDefView::QueryStatus ( const GUID pguidCmdGroup,
ULONG  cCmds,
OLECMD  prgCmds[],
OLECMDTEXT pCmdText 
)
override

Implements IOleCommandTarget.

Definition at line 3986 of file CDefView.cpp.

3987{
3988 FIXME("(%p)->(%p(%s) 0x%08x %p %p\n",
3989 this, pguidCmdGroup, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
3990
3991 if (!prgCmds)
3992 return E_INVALIDARG;
3993
3994 for (UINT i = 0; i < cCmds; i++)
3995 {
3996 FIXME("\tprgCmds[%d].cmdID = %d\n", i, prgCmds[i].cmdID);
3997 prgCmds[i].cmdf = 0;
3998 }
3999
4000 return OLECMDERR_E_UNKNOWNGROUP;
4001}

◆ QuerySupport()

HRESULT STDMETHODCALLTYPE CDefView::QuerySupport ( UINT support)
override

Definition at line 3974 of file CDefView.cpp.

3975{
3976 TRACE("(%p)->(%p)\n", this, support);
3977 return S_OK;
3978}

◆ Rearrange()

HRESULT STDMETHODCALLTYPE CDefView::Rearrange ( LPARAM  sort)
override

Definition at line 3770 of file CDefView.cpp.

3771{
3772 FIXME("(%p)->(%ld) stub\n", this, sort);
3773 return E_NOTIMPL;
3774}

◆ Refresh()

HRESULT WINAPI CDefView::Refresh ( )
override

Implements IShellView.

Definition at line 3040 of file CDefView.cpp.

3041{
3042 TRACE("(%p)\n", this);
3043
3045
3047 FillList();
3048
3049 return S_OK;
3050}

Referenced by OnChangeNotify(), and OnCommand().

◆ RefreshObject()

HRESULT STDMETHODCALLTYPE CDefView::RefreshObject ( PITEMID_CHILD  pidl,
UINT item 
)
override

Definition at line 3856 of file CDefView.cpp.

3857{
3858 FIXME("(%p)->(%p %p) stub\n", this, pidl, item);
3859 return E_NOTIMPL;
3860}

◆ RemoveObject()

HRESULT STDMETHODCALLTYPE CDefView::RemoveObject ( PITEMID_CHILD  pidl,
UINT item 
)
override

Definition at line 3813 of file CDefView.cpp.

3814{
3815 TRACE("(%p)->(%p %p)\n", this, pidl, item);
3816
3817 if (!m_ListView)
3818 {
3819 ERR("!m_ListView\n");
3820 return E_FAIL;
3821 }
3822
3823 if (pidl)
3824 {
3827 }
3828 else
3829 {
3830 *item = 0;
3832 }
3833
3834 return S_OK;
3835}

◆ SaveViewState() [1/2]

HRESULT WINAPI CDefView::SaveViewState ( )
override

Implements IShellView.

Definition at line 3300 of file CDefView.cpp.

3301{
3303 return SaveViewState(NULL);
3304 return S_FALSE;
3305}

Referenced by Exec(), and SaveViewState().

◆ SaveViewState() [2/2]

HRESULT CDefView::SaveViewState ( IStream pStream)

Definition at line 3228 of file CDefView.cpp.

3229{
3230 if (!m_ListView.m_hWnd)
3231 return E_UNEXPECTED;
3234 cvs.SortColId = sortcol >= 0 ? (WORD)sortcol : 0;
3236 PERSISTCOLUMNS cols;
3238 cols.Count = 0;
3239 LVCOLUMN lvc;
3240 lvc.mask = LVCF_WIDTH | LVCF_SUBITEM;
3241 for (UINT i = 0, j = 0; i < PERSISTCOLUMNS::MAXCOUNT && ListView_GetColumn(m_ListView, j, &lvc); ++j)
3242 {
3243 HRESULT hr = MapListColumnToFolderColumn(lvc.iSubItem);
3244 if (SUCCEEDED(hr))
3245 {
3246 cols.Columns[i] = MAKELONG(hr, lvc.cx);
3247 cols.Count = ++i;
3248 }
3249 }
3250 UINT cbColumns = FIELD_OFFSET(PERSISTCOLUMNS, Columns) + (sizeof(*cols.Columns) * cols.Count);
3252
3253 IPropertyBag *pPB;
3254 HRESULT hr = S_OK;
3255 if (pStream)
3256 {
3257 pStream->AddRef();
3258 goto stream;
3259 }
3261 if (SUCCEEDED(hr))
3262 {
3263 UINT uViewMode;
3264 GetCurrentViewMode(&uViewMode);
3265 hr = SHPropertyBag_WriteDWORD(pPB, L"Mode", uViewMode);
3267 SHPropertyBag_WriteDWORD(pPB, L"Sort", cvs.SortColId);
3268 SHPropertyBag_WriteDWORD(pPB, L"SortDir", cvs.SortDir);
3269 pStream = cols.Count ? SHCreateMemStream((LPBYTE)&cols, cbColumns) : NULL;
3270 if (!pStream || FAILED(SHPropertyBag_WriteStream(pPB, L"ColInfo", pStream)))
3271 SHPropertyBag_Delete(pPB, L"ColInfo");
3272#if 0 // TODO
3274 memcpy(name, L"ItemPos", sizeof(L"ItemPos"));
3275 if (SHGetPerScreenResName(name + 7, _countof(name) - 7, 0))
3276 {
3277 if (GetAutoArrange() == S_FALSE)
3278 // TODO: Save listview item positions
3279 else
3281 }
3282#endif
3283 pPB->Release();
3284 }
3285 else if (SUCCEEDED(hr = (m_pShellBrowser ? m_pShellBrowser->GetViewStateStream(STGM_WRITE, &pStream) : E_UNEXPECTED)))
3286 {
3287 stream:
3288 ULONG written;
3289 cvs.Signature = cvs.SIG;
3291 hr = pStream->Write(&cvs, sizeof(cvs), &written);
3292 if (SUCCEEDED(hr))
3293 hr = pStream->Write(&cols, cbColumns, &written);
3294 }
3295 if (pStream)
3296 pStream->Release();
3297 return hr;
3298}
int sortcol
Definition: sort.c:23
static const COLUMN_LIST Columns[]
Definition: listview.c:19
STDMETHOD() GetCurrentViewMode(UINT *pViewMode) override
Definition: CDefView.cpp:3430
void UpdateFolderViewFlags()
Definition: CDefView.cpp:3308
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
HRESULT Write([in, size_is(cb)] const void *pv, [in] ULONG cb, [out] ULONG *pcbWritten)
EXTERN_C INT WINAPI SHGetPerScreenResName(_Out_writes_(cchBuffer) LPWSTR pszBuffer, _In_ INT cchBuffer, _In_ DWORD dwReserved)
Definition: propbag.cpp:1938
IStream *WINAPI SHCreateMemStream(const BYTE *lpbData, UINT dwDataLen)
Definition: regstream.c:652
HRESULT WINAPI SHPropertyBag_Delete(IPropertyBag *ppb, LPCWSTR pszPropName)
HRESULT WINAPI SHPropertyBag_WriteStream(IPropertyBag *ppb, LPCWSTR pszPropName, IStream *pStream)
HRESULT WINAPI SHPropertyBag_WriteDWORD(IPropertyBag *ppb, LPCWSTR pszPropName, DWORD dwValue)
static const UINT SIG
Definition: CDefView.cpp:86
Definition: parse.h:23
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
unsigned char * LPBYTE
Definition: typedefs.h:53
#define MAKELONG(a, b)
Definition: typedefs.h:249

◆ Select()

HRESULT STDMETHODCALLTYPE CDefView::Select ( UINT  flags)
override

Definition at line 3968 of file CDefView.cpp.

3969{
3970 FIXME("(%p)->(%d) stub\n", this, flags);
3971 return E_NOTIMPL;
3972}

◆ SelectAndPositionItem()

HRESULT STDMETHODCALLTYPE CDefView::SelectAndPositionItem ( LPCITEMIDLIST  item,
UINT  flags,
POINT point 
)
override

Definition at line 3762 of file CDefView.cpp.

3763{
3764 FIXME("(%p)->(%p, %u, %p) stub\n", this, item, flags, point);
3765 return E_NOTIMPL;
3766}
POINTL point
Definition: edittest.c:50

◆ SelectAndPositionItems()

HRESULT STDMETHODCALLTYPE CDefView::SelectAndPositionItems ( UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
POINT apt,
DWORD  dwFlags 
)
override

Implements IFolderView.

Definition at line 3626 of file CDefView.cpp.

3627{
3629
3630 /* Reset the selection */
3632
3633 int lvIndex;
3634 for (UINT i = 0 ; i < cidl; i++)
3635 {
3636 lvIndex = LV_FindItemByPidl(apidl[i]);
3637 if (lvIndex != -1)
3638 {
3639 SelectItem(lvIndex, dwFlags);
3640 m_ListView.SetItemPosition(lvIndex, &apt[i]);
3641 }
3642 }
3643
3644 return S_OK;
3645}
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176

◆ SelectItem() [1/2]

HRESULT STDMETHODCALLTYPE CDefView::SelectItem ( int  iItem,
DWORD  dwFlags 
)
override

Implements IFolderView.

Definition at line 3595 of file CDefView.cpp.

3596{
3597 LVITEMW lvItem;
3598
3599 TRACE("(%p)->(%d, %x)\n", this, iItem, dwFlags);
3600
3601 lvItem.state = 0;
3602 lvItem.stateMask = LVIS_SELECTED;
3603
3604 if (dwFlags & SVSI_ENSUREVISIBLE)
3605 m_ListView.EnsureVisible(iItem, 0);
3606
3607 /* all items */
3608 if (dwFlags & SVSI_DESELECTOTHERS)
3610
3611 /* this item */
3612 if (dwFlags & SVSI_SELECT)
3613 lvItem.state |= LVIS_SELECTED;
3614
3615 if (dwFlags & SVSI_FOCUSED)
3616 lvItem.stateMask |= LVIS_FOCUSED;
3617
3618 m_ListView.SetItemState(iItem, lvItem.state, lvItem.stateMask);
3619
3620 if ((dwFlags & SVSI_EDIT) == SVSI_EDIT)
3621 m_ListView.EditLabel(iItem);
3622
3623 return S_OK;
3624}
HWND EditLabel(int i)
Definition: rosctrls.h:151
BOOL EnsureVisible(int i, BOOL fPartialOK)
Definition: rosctrls.h:146

◆ SelectItem() [2/2]

HRESULT WINAPI CDefView::SelectItem ( PCUITEMID_CHILD  pidlItem,
SVSIF  uFlags 
)
override

Implements IShellView.

Definition at line 3315 of file CDefView.cpp.

3316{
3317 int i;
3318
3319 TRACE("(%p)->(pidl=%p, 0x%08x) stub\n", this, pidl, uFlags);
3320
3321 if (!m_ListView)
3322 {
3323 ERR("!m_ListView\n");
3324 return E_FAIL;
3325 }
3326
3327 i = LV_FindItemByPidl(pidl);
3328 if (i == -1)
3329 return S_OK;
3330
3331 LVITEMW lvItem = {0};
3332 lvItem.mask = LVIF_STATE;
3334
3335 while (m_ListView.GetItem(&lvItem))
3336 {
3337 if (lvItem.iItem == i)
3338 {
3339 if (uFlags & SVSI_SELECT)
3340 lvItem.state |= LVIS_SELECTED;
3341 else
3342 lvItem.state &= ~LVIS_SELECTED;
3343
3344 if (uFlags & SVSI_FOCUSED)
3345 lvItem.state |= LVIS_FOCUSED;
3346 else
3347 lvItem.state &= ~LVIS_FOCUSED;
3348 }
3349 else
3350 {
3351 if (uFlags & SVSI_DESELECTOTHERS)
3352 {
3353 lvItem.state &= ~LVIS_SELECTED;
3354 }
3355 lvItem.state &= ~LVIS_FOCUSED;
3356 }
3357
3358 m_ListView.SetItem(&lvItem);
3359 lvItem.iItem++;
3360 }
3361
3362 if (uFlags & SVSI_ENSUREVISIBLE)
3364
3365 if((uFlags & SVSI_EDIT) == SVSI_EDIT)
3367
3368 return S_OK;
3369}

Referenced by drag_notify_subitem(), OnContextMenu(), and SelectAndPositionItems().

◆ SetAdvise()

HRESULT WINAPI CDefView::SetAdvise ( DWORD  aspects,
DWORD  advf,
IAdviseSink pAdvSink 
)
override

Implements IViewObject.

Definition at line 4531 of file CDefView.cpp.

4532{
4533 FIXME("partial stub: %p 0x%08x 0x%08x %p\n", this, aspects, advf, pAdvSink);
4534
4535 // FIXME: we set the AdviseSink, but never use it to send any advice
4536 m_pAdvSink = pAdvSink;
4537 m_dwAspects = aspects;
4538 m_dwAdvf = advf;
4539
4540 return S_OK;
4541}

◆ SetAutomationObject()

HRESULT STDMETHODCALLTYPE CDefView::SetAutomationObject ( IDispatch disp)
override

Definition at line 3980 of file CDefView.cpp.

3981{
3982 FIXME("(%p)->(%p) stub\n", this, disp);
3983 return E_NOTIMPL;
3984}

◆ SetCallback()

HRESULT STDMETHODCALLTYPE CDefView::SetCallback ( IShellFolderViewCB *  new_cb,
IShellFolderViewCB **  old_cb 
)
override

Definition at line 3959 of file CDefView.cpp.

3960{
3961 if (old_cb)
3962 *old_cb = m_pShellFolderViewCB.Detach();
3963
3964 m_pShellFolderViewCB = new_cb;
3965 return S_OK;
3966}
T * Detach()
Definition: atlcomcli.h:186

◆ SetClipboard()

HRESULT STDMETHODCALLTYPE CDefView::SetClipboard ( BOOL  move)
override

Definition at line 3941 of file CDefView.cpp.

3942{
3943 FIXME("(%p)->(%d) stub\n", this, move);
3944 return E_NOTIMPL;
3945}

◆ SetCurrentViewMode()

HRESULT STDMETHODCALLTYPE CDefView::SetCurrentViewMode ( UINT  ViewMode)
override

Implements IFolderView.

Definition at line 3441 of file CDefView.cpp.

3442{
3443 DWORD dwStyle;
3444 TRACE("(%p)->(%u), stub\n", this, ViewMode);
3445
3446 /* It's not redundant to check FVM_AUTO because it's a (UINT)-1 */
3447 if (((INT)ViewMode < FVM_FIRST || (INT)ViewMode > FVM_LAST) && ((INT)ViewMode != FVM_AUTO))
3448 return E_INVALIDARG;
3449
3450 /* Windows before Vista uses LVM_SETVIEW and possibly
3451 LVM_SETEXTENDEDLISTVIEWSTYLE to set the style of the listview,
3452 while later versions seem to accomplish this through other
3453 means. */
3454 switch (ViewMode)
3455 {
3456 case FVM_ICON:
3457 dwStyle = LVS_ICON;
3458 break;
3459 case FVM_DETAILS:
3460 dwStyle = LVS_REPORT;
3461 break;
3462 case FVM_SMALLICON:
3463 dwStyle = LVS_SMALLICON;
3464 break;
3465 case FVM_LIST:
3466 dwStyle = LVS_LIST;
3467 break;
3468 default:
3469 {
3470 FIXME("ViewMode %d not implemented\n", ViewMode);
3471 dwStyle = LVS_LIST;
3472 break;
3473 }
3474 }
3475
3476 m_ListView.ModifyStyle(LVS_TYPEMASK, dwStyle);
3477
3478 /* This will not necessarily be the actual mode set above.
3479 This mimics the behavior of Windows XP. */
3480 m_FolderSettings.ViewMode = ViewMode;
3481
3482 return S_OK;
3483}

◆ SetItemPos()

HRESULT STDMETHODCALLTYPE CDefView::SetItemPos ( PCUITEMID_CHILD  pidl,
POINT pt 
)
override

Definition at line 3929 of file CDefView.cpp.

3930{
3931 FIXME("(%p)->(%p %p) stub\n", this, pidl, pt);
3932 return E_NOTIMPL;
3933}

◆ SetObjectCount()

HRESULT STDMETHODCALLTYPE CDefView::SetObjectCount ( UINT  count,
UINT  flags 
)
override

Definition at line 3844 of file CDefView.cpp.

3845{
3846 FIXME("(%p)->(%d %x) stub\n", this, count, flags);
3847 return E_NOTIMPL;
3848}

◆ SetPoints()

HRESULT STDMETHODCALLTYPE CDefView::SetPoints ( IDataObject obj)
override

Definition at line 3947 of file CDefView.cpp.

3948{
3949 FIXME("(%p)->(%p) stub\n", this, obj);
3950 return E_NOTIMPL;
3951}

◆ SetRedraw()

HRESULT STDMETHODCALLTYPE CDefView::SetRedraw ( BOOL  redraw)
override

Definition at line 3862 of file CDefView.cpp.

3863{
3864 TRACE("(%p)->(%d)\n", this, redraw);
3865 if (m_ListView)
3867 return S_OK;
3868}
void redraw(int x, int y, int cx, int cy)
Definition: qtewin.cpp:1248

◆ TranslateAccelerator()

HRESULT WINAPI CDefView::TranslateAccelerator ( MSG pmsg)
override

Implements IShellView.

Definition at line 2995 of file CDefView.cpp.

2996{
2997 if (m_isEditing)
2998 return S_FALSE;
2999
3000 if (lpmsg->message >= WM_KEYFIRST && lpmsg->message <= WM_KEYLAST)
3001 {
3002 if (::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg) != 0)
3003 return S_OK;
3004
3005 TRACE("-- key=0x%04lx\n", lpmsg->wParam);
3006 }
3007
3008 return m_pShellBrowser->TranslateAcceleratorSB(lpmsg, 0);
3009}
#define WM_KEYFIRST
Definition: winuser.h:1714
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
#define WM_KEYLAST
Definition: winuser.h:1728

◆ UIActivate()

HRESULT WINAPI CDefView::UIActivate ( UINT  uState)
override

Implements IShellView.

Definition at line 3017 of file CDefView.cpp.

3018{
3019 TRACE("(%p)->(state=%x)\n", this, uState);
3020
3021 // don't do anything if the state isn't changing
3022 if (m_uState == uState)
3023 return S_OK;
3024
3025 // OnActivate handles the menu merging and internal state
3026 DoActivate(uState);
3027
3028 // only do this if we are active
3029 if (uState != SVUIA_DEACTIVATE)
3030 {
3032
3033 // Set the text for the status bar
3035 }
3036
3037 return S_OK;
3038}

Referenced by DestroyViewWindow().

◆ Unfreeze()

HRESULT WINAPI CDefView::Unfreeze ( DWORD  dwFreeze)
override

Implements IViewObject.

Definition at line 4525 of file CDefView.cpp.

4526{
4527 FIXME("Stub: this=%p\n", this);
4528 return E_NOTIMPL;
4529}

◆ UpdateFolderViewFlags()

void CDefView::UpdateFolderViewFlags ( )

◆ UpdateListColors()

void CDefView::UpdateListColors ( )

Definition at line 883 of file CDefView.cpp.

884{
886 {
887 /* Check if drop shadows option is enabled */
888 BOOL bDropShadow = FALSE;
889 DWORD cbDropShadow = sizeof(bDropShadow);
890
891 /*
892 * The desktop ListView always take the default desktop colours, by
893 * remaining transparent and letting user32/win32k paint itself the
894 * desktop background color, if any.
895 */
897
898 SHGetValueW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
899 L"ListviewShadow", NULL, &bDropShadow, &cbDropShadow);
900 if (bDropShadow)
901 {
902 /* Set the icon background transparent */
904 m_ListView.SetTextColor(RGB(255, 255, 255));
905 m_ListView.SetExtendedListViewStyle(LVS_EX_TRANSPARENTSHADOWTEXT, LVS_EX_TRANSPARENTSHADOWTEXT);
906 }
907 else
908 {
909 /* Set the icon background as the same colour as the desktop */
911 m_ListView.SetTextBkColor(crDesktop);
912 if (GetRValue(crDesktop) + GetGValue(crDesktop) + GetBValue(crDesktop) > 128 * 3)
913 m_ListView.SetTextColor(RGB(0, 0, 0));
914 else
915 m_ListView.SetTextColor(RGB(255, 255, 255));
916 m_ListView.SetExtendedListViewStyle(0, LVS_EX_TRANSPARENTSHADOWTEXT);
917 }
918 }
919 else
920 {
921 // text background color
923 m_ListView.SetTextBkColor(clrTextBack);
924
925 // text color
926 COLORREF clrText;
928 clrText = m_viewinfo_data.clrText;
929 else
930 clrText = GetSysColor(COLOR_WINDOWTEXT);
931
932 m_ListView.SetTextColor(clrText);
933
934 // Background is painted by the parent via WM_PRINTCLIENT
935 m_ListView.SetExtendedListViewStyle(LVS_EX_TRANSPARENTBKGND, LVS_EX_TRANSPARENTBKGND);
936 }
937}
BOOL SetTextBkColor(COLORREF cr)
Definition: rosctrls.h:32
BOOL SetTextColor(COLORREF cr)
Definition: rosctrls.h:42
BOOL SetBkColor(COLORREF cr)
Definition: rosctrls.h:37
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
Definition: reg.c:1236
#define RGB(r, g, b)
Definition: precomp.h:71
#define GetBValue(quad)
Definition: precomp.h:75
#define GetGValue(quad)
Definition: precomp.h:74
#define GetRValue(quad)
Definition: precomp.h:73
#define CLR_NONE
Definition: commctrl.h:319
DWORD COLORREF
Definition: windef.h:300
#define CLR_INVALID
Definition: wingdi.h:883
#define COLOR_DESKTOP
Definition: winuser.h:914

Referenced by FillList(), OnSettingChange(), and OnSysColorChange().

◆ UpdateObject()

HRESULT STDMETHODCALLTYPE CDefView::UpdateObject ( PITEMID_CHILD  pidl_old,
PITEMID_CHILD  pidl_new,
UINT item 
)
override

Definition at line 3850 of file CDefView.cpp.

3851{
3852 FIXME("(%p)->(%p %p %p) stub\n", this, pidl_old, pidl_new, item);
3853 return E_NOTIMPL;
3854}

◆ UpdateStatusbar()

void CDefView::UpdateStatusbar ( )

Definition at line 689 of file CDefView.cpp.

690{
691 WCHAR szFormat[MAX_PATH] = {0};
692 WCHAR szPartText[MAX_PATH] = {0};
693 UINT cSelectedItems;
694
695 if (!m_ListView)
696 return;
697
698 cSelectedItems = m_ListView.GetSelectedCount();
699 if (cSelectedItems)
700 {
702 StringCchPrintfW(szPartText, _countof(szPartText), szFormat, cSelectedItems);
703 }
704 else
705 {
706 LoadStringW(shell32_hInstance, IDS_OBJECTS, szFormat, _countof(szFormat));
707 StringCchPrintfW(szPartText, _countof(szPartText), szFormat, m_ListView.GetItemCount());
708 }
709
710 LRESULT lResult;
711 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 0, (LPARAM)szPartText, &lResult);
712
713 // Don't bother with the extra processing if we only have one StatusBar part
715 {
716 UINT64 uTotalFileSize = 0;
717 WORD uFileFlags = LVNI_ALL;
718 LPARAM pIcon = NULL;
719 INT nItem = -1;
720 bool bIsOnlyFoldersSelected = true;
721
722 // If we have something selected then only count selected file sizes
723 if (cSelectedItems)
724 {
725 uFileFlags = LVNI_SELECTED;
726 }
727
728 while ((nItem = m_ListView.GetNextItem(nItem, uFileFlags)) >= 0)
729 {
730 PCUITEMID_CHILD pidl = _PidlByItem(nItem);
731
732 uTotalFileSize += _ILGetFileSize(pidl, NULL, 0);
733
734 if (!_ILIsFolder(pidl))
735 {
736 bIsOnlyFoldersSelected = false;
737 }
738 }
739
740 // Don't show the file size text if there is 0 bytes in the folder
741 // OR we only have folders selected
742 if ((cSelectedItems && !bIsOnlyFoldersSelected) || uTotalFileSize)
743 {
744 StrFormatByteSizeW(uTotalFileSize, szPartText, _countof(szPartText));
745 }
746 else
747 {
748 *szPartText = 0;
749 }
750
751 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 1, (LPARAM)szPartText, &lResult);
752
753 // If we are in a Recycle Bin then show no text for the location part
755 {
756 LoadStringW(shell32_hInstance, IDS_MYCOMPUTER, szPartText, _countof(szPartText));
757 pIcon = (LPARAM)m_hMyComputerIcon;
758 }
759
760 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETICON, 2, pIcon, &lResult);
761 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 2, (LPARAM)szPartText, &lResult);
762 }
763
764 SFGAOF att = 0;
765 if (cSelectedItems > 0)
766 {
767 UINT maxquery = 42; // Checking the attributes can be slow, only check small selections (_DoCopyToMoveToFolder will verify the full array)
768 att = SFGAO_CANCOPY | SFGAO_CANMOVE;
769 if (cSelectedItems <= maxquery && (!GetSelections() || FAILED(m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &att))))
770 att = 0;
771 }
772 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON, FCIDM_SHVIEW_COPYTO, (att & SFGAO_CANCOPY) != 0, &lResult);
773 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON, FCIDM_SHVIEW_MOVETO, (att & SFGAO_CANMOVE) != 0, &lResult);
774}
unsigned long long UINT64
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
Definition: string.c:2388
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
Definition: pidl.c:2015
BOOL _ILIsBitBucket(LPCITEMIDLIST pidl)
Definition: pidl.c:1981
DWORD _ILGetFileSize(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize)
Definition: pidl.c:2433
#define SB_SETICON
Definition: commctrl.h:1961
#define SB_SETTEXT
Definition: commctrl.h:1949
#define IDS_OBJECTS_SELECTED
Definition: shresdef.h:286
#define IDS_MYCOMPUTER
Definition: shresdef.h:282
#define IDS_OBJECTS
Definition: shresdef.h:285
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)

Referenced by OnChangeNotify(), OnCreate(), OnSize(), OnUpdateStatusbar(), and UIActivate().

◆ WindowProc()

static LRESULT CALLBACK CDefView::WindowProc ( HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlinestatic

Definition at line 490 of file CDefView.cpp.

491 {
492 CDefView *pThis;
494
495 // Must hold a reference during message handling
496 pThis = reinterpret_cast<CDefView *>(hWnd);
497 pThis->AddRef();
499 pThis->Release();
500 return result;
501 }
HWND hWnd
Definition: settings.c:17

Referenced by GetWindowProc().

Member Data Documentation

◆ m_apidl

◆ m_bmenuBarInitialized

BOOL CDefView::m_bmenuBarInitialized
private

Definition at line 241 of file CDefView.cpp.

Referenced by DoActivate().

◆ m_Category

CLSID CDefView::m_Category
private

Definition at line 271 of file CDefView.cpp.

Referenced by _MergeToolbar(), CDefView(), and Exec().

◆ m_cidl

◆ m_cScrollDelay

UINT CDefView::m_cScrollDelay
private

Definition at line 259 of file CDefView.cpp.

Referenced by drag_notify_subitem().

◆ m_Destroyed

BOOL CDefView::m_Destroyed
private

Definition at line 272 of file CDefView.cpp.

Referenced by OnDestroy().

◆ m_dwAdvf

DWORD CDefView::m_dwAdvf
private

Definition at line 252 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_dwAspects

DWORD CDefView::m_dwAspects
private

Definition at line 251 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_FolderSettings

◆ m_grfKeyState

DWORD CDefView::m_grfKeyState
private

Definition at line 262 of file CDefView.cpp.

Referenced by drag_notify_subitem(), and Drop().

◆ m_hAccel

HACCEL CDefView::m_hAccel
private

Definition at line 250 of file CDefView.cpp.

Referenced by DestroyViewWindow(), OnCreate(), and TranslateAccelerator().

◆ m_hContextMenu

HMENU CDefView::m_hContextMenu
private

Definition at line 240 of file CDefView.cpp.

Referenced by OnContextMenu(), and OnInitMenuPopup().

◆ m_hMenu

◆ m_hMenuArrangeModes

HMENU CDefView::m_hMenuArrangeModes
private

◆ m_hMenuViewModes

HMENU CDefView::m_hMenuViewModes
private

Definition at line 239 of file CDefView.cpp.

Referenced by DestroyViewWindow(), Exec(), and FillViewMenu().

◆ m_hMyComputerIcon

HICON CDefView::m_hMyComputerIcon
private

Definition at line 275 of file CDefView.cpp.

Referenced by CDefView(), and UpdateStatusbar().

◆ m_hNotify

ULONG CDefView::m_hNotify
private

Definition at line 249 of file CDefView.cpp.

Referenced by OnCreate(), and OnDestroy().

◆ m_hWndParent

HWND CDefView::m_hWndParent
private

Definition at line 235 of file CDefView.cpp.

Referenced by CreateViewWindow3(), and Exec().

◆ m_iDragOverItem

LONG CDefView::m_iDragOverItem
private

Definition at line 258 of file CDefView.cpp.

Referenced by drag_notify_subitem(), DragLeave(), Drop(), IsDropOnSource(), and OnNotify().

◆ m_isEditing

BOOL CDefView::m_isEditing
private

Definition at line 267 of file CDefView.cpp.

Referenced by OnNotify(), and TranslateAccelerator().

◆ m_isParentFolderSpecial

BOOL CDefView::m_isParentFolderSpecial
private

Definition at line 268 of file CDefView.cpp.

Referenced by _HandleStatusBarResize(), OnCreate(), and UpdateStatusbar().

◆ m_ListToFolderColMap

HDPA CDefView::m_ListToFolderColMap
private

Definition at line 247 of file CDefView.cpp.

Referenced by CDefView(), ColumnListChanged(), MapListColumnToFolderColumn(), and ~CDefView().

◆ m_ListView

◆ m_LoadColumnsList

HDPA CDefView::m_LoadColumnsList
private

Definition at line 246 of file CDefView.cpp.

Referenced by InitList(), LoadColumns(), LoadViewState(), and ~CDefView().

◆ m_pAdvSink

CComPtr<IAdviseSink> CDefView::m_pAdvSink
private

Definition at line 253 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_pCM

CComPtr<IContextMenu> CDefView::m_pCM
private

Definition at line 264 of file CDefView.cpp.

Referenced by OnContextMenu(), OnCustomItem(), and OnInitMenuPopup().

◆ m_pCommDlgBrowser

CComPtr<ICommDlgBrowser> CDefView::m_pCommDlgBrowser
private

◆ m_pCurDataObject

CComPtr<IDataObject> CDefView::m_pCurDataObject
private

Definition at line 257 of file CDefView.cpp.

Referenced by drag_notify_subitem(), DragEnter(), DragLeave(), and Drop().

◆ m_pCurDropTarget

CComPtr<IDropTarget> CDefView::m_pCurDropTarget
private

Definition at line 256 of file CDefView.cpp.

Referenced by drag_notify_subitem(), DragLeave(), Drop(), IsDropOnSource(), and OnNotify().

◆ m_pFileMenu

CComPtr<IContextMenu> CDefView::m_pFileMenu
private

Definition at line 265 of file CDefView.cpp.

Referenced by FillFileMenu(), and OnCommand().

◆ m_pidlParent

PIDLIST_ABSOLUTE CDefView::m_pidlParent
private

Definition at line 245 of file CDefView.cpp.

Referenced by OnChangeNotify(), OnCreate(), OnDestroy(), OnNotify(), and UpdateStatusbar().

◆ m_pSDParent

CComPtr<IShellDetails> CDefView::m_pSDParent
private

Definition at line 229 of file CDefView.cpp.

Referenced by GetDetailsByFolderColumn(), Initialize(), and OnNotify().

◆ m_pSF2Parent

CComPtr<IShellFolder2> CDefView::m_pSF2Parent
private

◆ m_pSFParent

◆ m_pShellBrowser

◆ m_pShellFolderViewCB

CComPtr<IShellFolderViewCB> CDefView::m_pShellFolderViewCB
private

Definition at line 230 of file CDefView.cpp.

Referenced by _DoFolderViewCB(), and SetCallback().

◆ m_pShellFolderViewDual

CComPtr<IShellFolderViewDual> CDefView::m_pShellFolderViewDual
private

Definition at line 233 of file CDefView.cpp.

Referenced by GetItemObject().

◆ m_pSourceDataObject

CComPtr<IDataObject> CDefView::m_pSourceDataObject
private

Definition at line 255 of file CDefView.cpp.

Referenced by drag_notify_subitem(), IsDropOnSource(), and OnNotify().

◆ m_ptFirstMousePos

POINT CDefView::m_ptFirstMousePos
private

Definition at line 261 of file CDefView.cpp.

Referenced by Drop(), GetDragPoint(), and OnNotify().

◆ m_ptLastMousePos

POINT CDefView::m_ptLastMousePos
private

Definition at line 260 of file CDefView.cpp.

Referenced by CDefView(), drag_notify_subitem(), and Drop().

◆ m_ScheduledStatusbarUpdate

bool CDefView::m_ScheduledStatusbarUpdate
private

Definition at line 269 of file CDefView.cpp.

Referenced by OnNotify(), and OnUpdateStatusbar().

◆ m_sortInfo

LISTVIEW_SORT_INFO CDefView::m_sortInfo
private

◆ m_uState

UINT CDefView::m_uState
private

Definition at line 242 of file CDefView.cpp.

Referenced by DoActivate(), OnDeactivate(), and UIActivate().

◆ m_viewinfo_data

SFVM_CUSTOMVIEWINFO_DATA CDefView::m_viewinfo_data
private

Definition at line 273 of file CDefView.cpp.

Referenced by CDefView(), FillList(), OnPrintClient(), UpdateListColors(), and ~CDefView().


The documentation for this class was generated from the following file: