ReactOS 0.4.15-dev-7842-g558ab78
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 ()
 
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_ProdItem (PCUITEMID_CHILD pidl)
 
HRESULT FillList ()
 
HRESULT FillFileMenu ()
 
HRESULT FillEditMenu ()
 
HRESULT FillViewMenu ()
 
HRESULT FillArrangeAsMenu (HMENU hmenuArrange)
 
HRESULT CheckViewMode (HMENU hmenuView)
 
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)
 
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 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 ()
 
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)
 

Private Attributes

CComPtr< IShellFolderm_pSFParent
 
CComPtr< IShellFolder2m_pSF2Parent
 
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
 
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
 
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 97 of file CDefView.cpp.

Constructor & Destructor Documentation

◆ CDefView()

CDefView::CDefView ( )

Definition at line 420 of file CDefView.cpp.

420 :
421 m_ListView(),
423 m_hMenu(NULL),
428 m_uState(0),
429 m_cidl(0),
430 m_apidl(NULL),
432 m_hNotify(0),
433 m_hAccel(NULL),
434 m_dwAspects(0),
435 m_dwAdvf(0),
441{
449
451}
#define shell32_hInstance
HMENU m_hMenu
Definition: CDefView.cpp:119
HMENU m_hMenuArrangeModes
Definition: CDefView.cpp:120
HWND m_hWndParent
Definition: CDefView.cpp:117
DWORD m_dwAdvf
Definition: CDefView.cpp:132
DWORD m_dwAspects
Definition: CDefView.cpp:131
BOOL m_isParentFolderSpecial
Definition: CDefView.cpp:148
UINT m_cScrollDelay
Definition: CDefView.cpp:139
LISTVIEW_SORT_INFO m_sortInfo
Definition: CDefView.cpp:128
PIDLIST_ABSOLUTE m_pidlParent
Definition: CDefView.cpp:127
HMENU m_hContextMenu
Definition: CDefView.cpp:122
BOOL m_Destroyed
Definition: CDefView.cpp:151
PCUITEMID_CHILD * m_apidl
Definition: CDefView.cpp:126
CLSID m_Category
Definition: CDefView.cpp:150
HICON m_hMyComputerIcon
Definition: CDefView.cpp:154
BOOL m_bmenuBarInitialized
Definition: CDefView.cpp:123
UINT m_cidl
Definition: CDefView.cpp:125
UINT m_uState
Definition: CDefView.cpp:124
BOOL m_isEditing
Definition: CDefView.cpp:147
POINT m_ptLastMousePos
Definition: CDefView.cpp:140
ULONG m_hNotify
Definition: CDefView.cpp:129
LONG m_iDragOverItem
Definition: CDefView.cpp:138
HMENU m_hMenuViewModes
Definition: CDefView.cpp:121
HACCEL m_hAccel
Definition: CDefView.cpp:130
FOLDERSETTINGS m_FolderSettings
Definition: CDefView.cpp:118
CListView m_ListView
Definition: CDefView.cpp:116
SFVM_CUSTOMVIEWINFO_DATA m_viewinfo_data
Definition: CDefView.cpp:152
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define IDI_SHELL_COMPUTER_DESKTOP
Definition: shresdef.h:644
#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:2075

◆ ~CDefView()

CDefView::~CDefView ( )

Definition at line 453 of file CDefView.cpp.

454{
455 TRACE(" destroying IShellView(%p)\n", this);
456
458
460 {
463 }
464
465 if (m_hWnd)
466 {
468 }
469
471}
#define SFVM_VIEWRELEASE
HWND m_hWnd
Definition: atlwin.h:273
STDMETHOD() DestroyViewWindow() override
Definition: CDefView.cpp:2501
HRESULT _DoFolderViewCB(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CDefView.cpp:3818
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 1793 of file CDefView.cpp.

1794{
1795 if (!GetSelections())
1796 return;
1797
1798 SFGAOF rfg = SFGAO_CANCOPY | SFGAO_CANMOVE | SFGAO_FILESYSTEM;
1799 HRESULT hr = m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &rfg);
1801 return;
1802
1803 if (!bCopy && !(rfg & SFGAO_CANMOVE))
1804 return;
1805 if (bCopy && !(rfg & SFGAO_CANCOPY))
1806 return;
1807
1809 hr = m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, IID_IContextMenu, 0, (void **)&pCM);
1811 return;
1812
1813 InvokeContextMenuCommand(pCM, (bCopy ? "copyto" : "moveto"), NULL);
1814}
CComPtr< IShellFolder > m_pSFParent
Definition: CDefView.cpp:110
HRESULT InvokeContextMenuCommand(CComPtr< IContextMenu > &pCM, LPCSTR lpVerb, POINT *pt=NULL)
Definition: CDefView.cpp:1505
UINT GetSelections()
Definition: CDefView.cpp:1475
#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 3818 of file CDefView.cpp.

3819{
3821
3823 {
3824 hr = m_pShellFolderViewCB->MessageSFVCB(uMsg, wParam, lParam);
3825 }
3826
3827 return hr;
3828}
CComPtr< IShellFolderViewCB > m_pShellFolderViewCB
Definition: CDefView.cpp:112
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define E_NOTIMPL
Definition: ddrawi.h:99

Referenced by CreateList(), CreateViewWindow3(), DestroyViewWindow(), FillList(), LV_AddItem(), OnNotify(), OnSize(), Refresh(), and ~CDefView().

◆ _FindInsertableIndexFromPoint()

INT CDefView::_FindInsertableIndexFromPoint ( POINT  pt)
private

Definition at line 3471 of file CDefView.cpp.

3472{
3473 RECT rcBound;
3474 INT i, nCount = m_ListView.GetItemCount();
3475 DWORD dwSpacing;
3476 INT dx, dy;
3477 BOOL bSmall = ((m_ListView.GetStyle() & LVS_TYPEMASK) != LVS_ICON);
3478
3479 // FIXME: LVM_GETORIGIN is broken. See CORE-17266
3480 pt.x += m_ListView.GetScrollPos(SB_HORZ);
3481 pt.y += m_ListView.GetScrollPos(SB_VERT);
3482
3483 if (m_ListView.GetStyle() & LVS_ALIGNLEFT)
3484 {
3485 // vertically
3486 for (i = 0; i < nCount; ++i)
3487 {
3488 dwSpacing = ListView_GetItemSpacing(m_ListView, bSmall);
3489 dx = LOWORD(dwSpacing);
3490 dy = HIWORD(dwSpacing);
3492 rcBound.right = rcBound.left + dx;
3493 rcBound.bottom = rcBound.top + dy;
3494 if (pt.x < rcBound.right && pt.y < (rcBound.top + rcBound.bottom) / 2)
3495 {
3496 return i;
3497 }
3498 }
3499 for (i = nCount - 1; i >= 0; --i)
3500 {
3502 if (rcBound.left < pt.x && rcBound.top < pt.y)
3503 {
3504 return i + 1;
3505 }
3506 }
3507 }
3508 else
3509 {
3510 // horizontally
3511 for (i = 0; i < nCount; ++i)
3512 {
3513 dwSpacing = ListView_GetItemSpacing(m_ListView, bSmall);
3514 dx = LOWORD(dwSpacing);
3515 dy = HIWORD(dwSpacing);
3517 rcBound.right = rcBound.left + dx;
3518 rcBound.bottom = rcBound.top + dy;
3519 if (pt.y < rcBound.bottom && pt.x < rcBound.left)
3520 {
3521 return i;
3522 }
3523 if (pt.y < rcBound.bottom && pt.x < rcBound.right)
3524 {
3525 return i + 1;
3526 }
3527 }
3528 for (i = nCount - 1; i >= 0; --i)
3529 {
3531 if (rcBound.left < pt.x && rcBound.top < pt.y)
3532 {
3533 return i + 1;
3534 }
3535 }
3536 }
3537
3538 return nCount;
3539}
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 3567 of file CDefView.cpp.

3568{
3569 // Get the handle for the status bar
3570 HWND fStatusBar;
3571 m_pShellBrowser->GetControlWindow(FCW_STATUS, &fStatusBar);
3572
3573 // Get the size of our status bar
3574 RECT statusBarSize;
3575 ::GetWindowRect(fStatusBar, &statusBarSize);
3576
3577 // Resize the status bar
3578 _HandleStatusBarResize(statusBarSize.right - statusBarSize.left);
3579}
CComPtr< IShellBrowser > m_pShellBrowser
Definition: CDefView.cpp:113
void _HandleStatusBarResize(int width)
Definition: CDefView.cpp:3541
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)

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

◆ _GetSnapToGrid()

HRESULT CDefView::_GetSnapToGrid ( )
private

Definition at line 2840 of file CDefView.cpp.

2841{
2842 DWORD dwExStyle = (DWORD)m_ListView.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
2843 return ((dwExStyle & LVS_EX_SNAPTOGRID) ? S_OK : S_FALSE);
2844}
#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(), and OnCommand().

◆ _HandleStatusBarResize()

void CDefView::_HandleStatusBarResize ( int  width)
private

Definition at line 3541 of file CDefView.cpp.

3542{
3543 LRESULT lResult;
3544
3546 {
3547 int nPartArray[] = {-1};
3548 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETPARTS, _countof(nPartArray), (LPARAM)nPartArray, &lResult);
3549 return;
3550 }
3551
3552 int nFileSizePartLength = 125;
3553 const int nLocationPartLength = 150;
3554 const int nRightPartsLength = nFileSizePartLength + nLocationPartLength;
3555 int nObjectsPartLength = nWidth - nRightPartsLength;
3556
3557 // If the window is small enough just divide each part into thirds
3558 // to match the behavior of Windows Server 2003
3559 if (nObjectsPartLength <= nLocationPartLength)
3560 nObjectsPartLength = nFileSizePartLength = nWidth / 3;
3561
3562 int nPartArray[] = {nObjectsPartLength, nObjectsPartLength + nFileSizePartLength, -1};
3563
3564 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETPARTS, _countof(nPartArray), (LPARAM)nPartArray, &lResult);
3565}
#define SB_SETPARTS
Definition: commctrl.h:1954
#define _countof(array)
Definition: sndvol32.h:68
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 3791 of file CDefView.cpp.

3792{
3794 HRESULT hr = S_OK;
3795
3796 hr = IUnknown_QueryService(m_pShellBrowser, IID_IExplorerToolbar, IID_PPV_ARG(IExplorerToolbar, &ptb));
3797 if (FAILED(hr))
3798 return hr;
3799
3800 m_Category = CGID_DefViewFrame;
3801
3802 hr = ptb->SetCommandTarget(static_cast<IOleCommandTarget*>(this), &m_Category, 0);
3803 if (FAILED(hr))
3804 return hr;
3805
3806 if (hr == S_FALSE)
3807 return S_OK;
3808
3809#if 0
3810 hr = ptb->AddButtons(&m_Category, buttonsCount, buttons);
3811 if (FAILED(hr))
3812 return hr;
3813#endif
3814
3815 return S_OK;
3816}
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 3595 of file CDefView.cpp.

3596{
3597 // get insertable index from position
3599
3600 // create identity mapping of indexes
3602 INT nCount = m_ListView.GetItemCount();
3603 for (INT i = 0; i < nCount; ++i)
3604 {
3605 array.Add(i);
3606 }
3607
3608 // re-ordering mapping
3609 INT iItem = -1;
3610 while ((iItem = m_ListView.GetNextItem(iItem, LVNI_SELECTED)) >= 0)
3611 {
3612 INT iFrom = iItem, iTo = iPosition;
3613 if (iFrom < iTo)
3614 --iTo;
3615 if (iFrom >= nCount)
3616 iFrom = nCount - 1;
3617 if (iTo >= nCount)
3618 iTo = nCount - 1;
3619
3620 // shift indexes by swapping (like a bucket relay)
3621 if (iFrom < iTo)
3622 {
3623 for (INT i = iFrom; i < iTo; ++i)
3624 {
3625 // swap array[i] and array[i + 1]
3626 INT tmp = array[i];
3627 array[i] = array[i + 1];
3628 array[i + 1] = tmp;
3629 }
3630 }
3631 else
3632 {
3633 for (INT i = iFrom; i > iTo; --i)
3634 {
3635 // swap array[i] and array[i - 1]
3636 INT tmp = array[i];
3637 array[i] = array[i - 1];
3638 array[i - 1] = tmp;
3639 }
3640 }
3641 }
3642
3643 // create mapping (ListView's lParam to index) from array
3645 for (INT i = 0; i < nCount; ++i)
3646 {
3648 map.Add(lParam, i);
3649 }
3650
3651 // finally sort
3653}
static INT CALLBACK SelectionMoveCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
Definition: CDefView.cpp:3584
INT _FindInsertableIndexFromPoint(POINT pt)
Definition: CDefView.cpp:3471
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 887 of file CDefView.cpp.

888{
889 if (!m_ListView)
890 return nullptr;
891 return reinterpret_cast<PCUITEMID_CHILD>(m_ListView.GetItemData(i));
892}
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 894 of file CDefView.cpp.

895{
896 if (!m_ListView)
897 return nullptr;
898 return reinterpret_cast<PCUITEMID_CHILD>(lvItem.lParam);
899}

◆ _Sort()

BOOL CDefView::_Sort ( )
private

Definition at line 853 of file CDefView.cpp.

854{
855 HWND hHeader;
856 HDITEM hColumn;
857
858 if (m_ListView.GetWindowLongPtr(GWL_STYLE) & LVS_NOSORTHEADER)
859 return TRUE;
860
861 hHeader = (HWND)m_ListView.SendMessage(LVM_GETHEADER, 0, 0);
862 ZeroMemory(&hColumn, sizeof(hColumn));
863
864 // If the sorting column changed, remove sorting style from the old column
865 if ( (m_sortInfo.nLastHeaderID != -1) &&
867 {
868 hColumn.mask = HDI_FORMAT;
869 Header_GetItem(hHeader, m_sortInfo.nLastHeaderID, &hColumn);
870 hColumn.fmt &= ~(HDF_SORTUP | HDF_SORTDOWN);
871 Header_SetItem(hHeader, m_sortInfo.nLastHeaderID, &hColumn);
872 }
873
874 /* Set the sorting style to the new column */
875 hColumn.mask = HDI_FORMAT;
876 Header_GetItem(hHeader, m_sortInfo.nHeaderID, &hColumn);
877
878 hColumn.fmt &= (m_sortInfo.bIsAscending ? ~HDF_SORTDOWN : ~HDF_SORTUP );
879 hColumn.fmt |= (m_sortInfo.bIsAscending ? HDF_SORTUP : HDF_SORTDOWN);
880 Header_SetItem(hHeader, m_sortInfo.nHeaderID, &hColumn);
881
882 /* Sort the list, using the current values of nHeaderID and bIsAscending */
885}
static INT CALLBACK ListViewCompareItems(LPARAM lParam1, LPARAM lParam2, LPARAM lpData)
Definition: CDefView.cpp:837
#define TRUE
Definition: types.h:120
HANDLE HWND
Definition: compat.h:19
#define Header_GetItem(hwndHD, i, phdi)
Definition: commctrl.h:751
#define LVM_GETHEADER
Definition: commctrl.h:2650
#define Header_SetItem(hwndHD, i, phdi)
Definition: commctrl.h:758
#define HDF_SORTUP
Definition: commctrl.h:724
#define HDI_FORMAT
Definition: commctrl.h:705
#define LVS_NOSORTHEADER
Definition: commctrl.h:2285
#define HDITEM
Definition: commctrl.h:697
#define HDF_SORTDOWN
Definition: commctrl.h:725
#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 3034 of file CDefView.cpp.

3035{
3036 TRACE("(%p)->(%p %p)\n", this, pidl, item);
3037 if (!m_ListView)
3038 {
3039 ERR("!m_ListView\n");
3040 return E_FAIL;
3041 }
3042 *item = LV_AddItem(pidl);
3043 return (int)*item >= 0 ? S_OK : E_OUTOFMEMORY;
3044}
#define ERR(fmt,...)
Definition: debug.h:110
int LV_AddItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:916
#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 2561 of file CDefView.cpp.

2562{
2563 FIXME("(%p) stub\n", this);
2564
2565 return E_NOTIMPL;
2566}
#define FIXME(fmt,...)
Definition: debug.h:111

◆ ArrangeGrid()

HRESULT STDMETHODCALLTYPE CDefView::ArrangeGrid ( )
override

Definition at line 3021 of file CDefView.cpp.

3022{
3024 return S_OK;
3025}
DWORD SetExtendedListViewStyle(DWORD dw, DWORD dwMask=0)
Definition: rosctrls.h:47

Referenced by OnCommand().

◆ AutoArrange()

HRESULT STDMETHODCALLTYPE CDefView::AutoArrange ( )
override

Definition at line 3027 of file CDefView.cpp.

3028{
3029 m_ListView.ModifyStyle(0, LVS_AUTOARRANGE);
3031 return S_OK;
3032}
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 530 of file CDefView.cpp.

531{
533
534 TRACE("\n");
535
536 if (m_pCommDlgBrowser != NULL)
537 {
538 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_CHECKBUTTON,
540 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_CHECKBUTTON,
542 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON,
544 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON,
546 }
547}
CComPtr< ICommDlgBrowser > m_pCommDlgBrowser
Definition: CDefView.cpp:114
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:671
@ FVM_DETAILS
Definition: shobjidl.idl:672
#define FCIDM_TB_SMALLICON
Definition: shresdef.h:856
#define FCIDM_TB_REPORTVIEW
Definition: shresdef.h:857

Referenced by CreateViewWindow3(), and OnCommand().

◆ CheckViewMode()

HRESULT CDefView::CheckViewMode ( HMENU  hmenuView)

Definition at line 1457 of file CDefView.cpp.

1458{
1460 {
1461 UINT iItemFirst = FCIDM_SHVIEW_BIGICON;
1462 UINT iItemLast = iItemFirst + FVM_LAST - FVM_FIRST;
1463 UINT iItem = iItemFirst + m_FolderSettings.ViewMode - FVM_FIRST;
1464 CheckMenuRadioItem(hmenuView, iItemFirst, iItemLast, iItem, MF_BYCOMMAND);
1465 }
1466
1467 return S_OK;
1468}
unsigned int UINT
Definition: ndis.h:50
@ FVM_LAST
Definition: shobjidl.idl:677
@ FVM_FIRST
Definition: shobjidl.idl:669
#define FCIDM_SHVIEW_BIGICON
Definition: shresdef.h:835
#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().

◆ ContextSensitiveHelp()

HRESULT WINAPI CDefView::ContextSensitiveHelp ( BOOL  fEnterMode)
override

Implements IOleWindow.

Definition at line 2430 of file CDefView.cpp.

2431{
2432 FIXME("(%p) stub\n", this);
2433
2434 return E_NOTIMPL;
2435}

◆ CreateList()

BOOL CDefView::CreateList ( )

Definition at line 629 of file CDefView.cpp.

630{
631 HRESULT hr;
632 DWORD dwStyle, dwExStyle, ListExStyle;
633 UINT ViewMode;
634
635 TRACE("%p\n", this);
636
638 LVS_SHAREIMAGELISTS | LVS_EDITLABELS | LVS_AUTOARRANGE; // FIXME: Why is LVS_AUTOARRANGE here?
639 dwExStyle = WS_EX_CLIENTEDGE;
640 ListExStyle = 0;
641
643 {
645 dwStyle |= LVS_ALIGNLEFT;
646 }
647 else
648 {
649 dwStyle |= LVS_SHOWSELALWAYS; // MSDN says FWF_SHOWSELALWAYS is deprecated, always turn on for folders
651 ListExStyle = LVS_EX_DOUBLEBUFFER;
652 }
653
654 ViewMode = m_FolderSettings.ViewMode;
655 hr = _DoFolderViewCB(SFVM_DEFVIEWMODE, 0, (LPARAM)&ViewMode);
656 if (SUCCEEDED(hr))
657 {
658 if (ViewMode >= FVM_FIRST && ViewMode <= FVM_LAST)
659 m_FolderSettings.ViewMode = ViewMode;
660 else
661 ERR("Ignoring invalid ViewMode from SFVM_DEFVIEWMODE: %u (was: %u)\n", ViewMode, m_FolderSettings.ViewMode);
662 }
663
665 {
666 case FVM_ICON:
667 dwStyle |= LVS_ICON;
668 break;
669 case FVM_DETAILS:
670 dwStyle |= LVS_REPORT;
671 break;
672 case FVM_SMALLICON:
673 dwStyle |= LVS_SMALLICON;
674 break;
675 case FVM_LIST:
676 dwStyle |= LVS_LIST;
677 break;
678 default:
679 dwStyle |= LVS_LIST;
680 break;
681 }
682
684 dwStyle |= LVS_AUTOARRANGE;
685
687 ListExStyle |= LVS_EX_SNAPTOGRID;
688
690 dwStyle |= LVS_SINGLESEL;
691
693 ListExStyle |= LVS_EX_FULLROWSELECT;
694
697
699 dwStyle |= LVS_NOCOLUMNHEADER;
700
701#if 0
702 // FIXME: Because this is a negative, everyone gets the new flag by default unless they
703 // opt out. This code should be enabled when shell looks like Vista instead of 2003
705 ListExStyle |= LVS_EX_HEADERINALLVIEWS;
706#endif
707
709 dwExStyle &= ~WS_EX_CLIENTEDGE;
710
711 RECT rcListView = {0,0,0,0};
712 m_ListView.Create(m_hWnd, rcListView, L"FolderView", dwStyle, dwExStyle, ID_LISTVIEW);
713
714 if (!m_ListView)
715 return FALSE;
716
718
722
723 /* UpdateShellSettings(); */
724 return TRUE;
725}
#define ID_LISTVIEW
Definition: CDefView.cpp:411
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 SUCCEEDED(hr)
Definition: intsafe.h:50
#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_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 SFVM_DEFVIEWMODE
Definition: shlobj.h:1311
@ FWF_SNAPTOGRID
Definition: shobjidl.idl:633
@ FWF_AUTOARRANGE
Definition: shobjidl.idl:631
@ FWF_ALIGNLEFT
Definition: shobjidl.idl:642
@ FWF_NOSCROLL
Definition: shobjidl.idl:641
@ FWF_NOHEADERINALLVIEWS
Definition: shobjidl.idl:655
@ FWF_SINGLECLICKACTIVATE
Definition: shobjidl.idl:646
@ FWF_FULLROWSELECT
Definition: shobjidl.idl:652
@ FWF_NOCLIENTEDGE
Definition: shobjidl.idl:640
@ FWF_SINGLESEL
Definition: shobjidl.idl:637
@ FWF_NOCOLUMNHEADER
Definition: shobjidl.idl:654
@ FWF_DESKTOP
Definition: shobjidl.idl:636
@ FVM_SMALLICON
Definition: shobjidl.idl:670
@ FVM_ICON
Definition: shobjidl.idl:668
#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 2495 of file CDefView.cpp.

2496{
2497 return CreateViewWindow3(psb, lpPrevView, SV3CVW3_DEFAULT,
2498 (FOLDERFLAGS)lpfs->fFlags, (FOLDERFLAGS)lpfs->fFlags, (FOLDERVIEWMODE)lpfs->ViewMode, NULL, prcView, phWnd);
2499}
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:2914
FOLDERFLAGS
Definition: shobjidl.idl:630
FOLDERVIEWMODE
Definition: shobjidl.idl:666

◆ CreateViewWindow2()

HRESULT STDMETHODCALLTYPE CDefView::CreateViewWindow2 ( LPSV2CVW2_PARAMS  view_params)
override

Implements IShellView2.

Definition at line 2907 of file CDefView.cpp.

2908{
2909 return CreateViewWindow3(view_params->psbOwner, view_params->psvPrev,
2910 SV3CVW3_DEFAULT, (FOLDERFLAGS)view_params->pfs->fFlags, (FOLDERFLAGS)view_params->pfs->fFlags,
2911 (FOLDERVIEWMODE)view_params->pfs->ViewMode, view_params->pvid, view_params->prcView, &view_params->hwndView);
2912}

◆ 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 2914 of file CDefView.cpp.

2915{
2916 OLEMENUGROUPWIDTHS omw = { { 0, 0, 0, 0, 0, 0 } };
2917
2918 *hwnd = NULL;
2919
2920 TRACE("(%p)->(shlview=%p shlbrs=%p rec=%p hwnd=%p vmode=%x flags=%x)\n", this, psvPrevious, psb, prcView, hwnd, mode, flags);
2921 if (prcView != NULL)
2922 TRACE("-- left=%i top=%i right=%i bottom=%i\n", prcView->left, prcView->top, prcView->right, prcView->bottom);
2923
2924 /* Validate the Shell Browser */
2925 if (psb == NULL || m_hWnd)
2926 return E_UNEXPECTED;
2927
2928 if (view_flags != SV3CVW3_DEFAULT)
2929 FIXME("unsupported view flags 0x%08x\n", view_flags);
2930
2931 /* Set up the member variables */
2932 m_pShellBrowser = psb;
2935
2936 if (view_id)
2937 {
2938 if (IsEqualIID(*view_id, VID_LargeIcons))
2940 else if (IsEqualIID(*view_id, VID_SmallIcons))
2942 else if (IsEqualIID(*view_id, VID_List))
2944 else if (IsEqualIID(*view_id, VID_Details))
2946 else if (IsEqualIID(*view_id, VID_Thumbnails))
2948 else if (IsEqualIID(*view_id, VID_Tile))
2950 else if (IsEqualIID(*view_id, VID_ThumbStrip))
2952 else
2953 FIXME("Ignoring unrecognized VID %s\n", debugstr_guid(view_id));
2954 }
2955
2956 /* Get our parent window */
2957 m_pShellBrowser->GetWindow(&m_hWndParent);
2958
2959 /* Try to get the ICommDlgBrowserInterface, adds a reference !!! */
2962 {
2963 TRACE("-- CommDlgBrowser\n");
2964 }
2965
2966 RECT rcView = *prcView;
2968 if (m_hWnd == NULL)
2969 return E_FAIL;
2970
2971 *hwnd = m_hWnd;
2972
2973 CheckToolbar();
2974
2975 if (!*hwnd)
2976 return E_FAIL;
2977
2979
2981 UpdateWindow();
2982
2983 if (!m_hMenu)
2984 {
2985 m_hMenu = CreateMenu();
2986 m_pShellBrowser->InsertMenusSB(m_hMenu, &omw);
2987 TRACE("-- after fnInsertMenusSB\n");
2988 }
2989
2990 _MergeToolbar();
2991
2992 return S_OK;
2993}
#define U(x)
Definition: wordpad.c:45
@ Create
Definition: registry.c:563
BOOL UpdateWindow()
Definition: atlwin.h:1345
HRESULT _MergeToolbar()
Definition: CDefView.cpp:3791
void CheckToolbar()
Definition: CDefView.cpp:530
GLenum GLint GLuint mask
Definition: glext.h:6028
GLenum mode
Definition: glext.h:6217
GLbitfield flags
Definition: glext.h:7161
#define debugstr_guid
Definition: kernel32.h:35
#define WS_CHILD
Definition: pedump.c:617
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define SFVM_WINDOWCREATED
Definition: shlobj.h:1301
@ FVM_TILE
Definition: shobjidl.idl:674
@ FVM_THUMBNAIL
Definition: shobjidl.idl:673
@ FVM_THUMBSTRIP
Definition: shobjidl.idl:675
_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 2501 of file CDefView.cpp.

2502{
2503 TRACE("(%p)\n", this);
2504
2505 /* Make absolutely sure all our UI is cleaned up */
2507
2508 if (m_hAccel)
2509 {
2510 // MSDN: Accelerator tables loaded from resources are freed automatically when application terminates
2511 m_hAccel = NULL;
2512 }
2513
2515 {
2518 }
2519
2520 if (m_hMenuViewModes)
2521 {
2524 }
2525
2526 if (m_hMenu)
2527 {
2529 m_hMenu = NULL;
2530 }
2531
2532 if (m_ListView)
2533 {
2534 m_ListView.DestroyWindow();
2535 }
2536
2537 if (m_hWnd)
2538 {
2540 DestroyWindow();
2541 }
2542
2545
2546 return S_OK;
2547}
#define SFVM_WINDOWCLOSING
void Release()
Definition: atlcomcli.h:170
BOOL DestroyWindow()
Definition: atlwin.h:462
STDMETHOD() UIActivate(UINT uState) override
Definition: CDefView.cpp:2460
@ SVUIA_DEACTIVATE
Definition: shobjidl.idl:742
BOOL WINAPI DestroyMenu(_In_ HMENU)

Referenced by ~CDefView().

◆ DoActivate()

void CDefView::DoActivate ( UINT  uState)

Definition at line 1759 of file CDefView.cpp.

1760{
1761 TRACE("%p uState=%x\n", this, uState);
1762
1763 // don't do anything if the state isn't really changing
1764 if (m_uState == uState)
1765 {
1766 return;
1767 }
1768
1769 if (uState == SVUIA_DEACTIVATE)
1770 {
1771 OnDeactivate();
1772 }
1773 else
1774 {
1776 {
1777 FillEditMenu();
1778 FillViewMenu();
1779 m_pShellBrowser->SetMenuSB(m_hMenu, 0, m_hWnd);
1781 }
1782
1783 if (SVUIA_ACTIVATE_FOCUS == uState)
1784 {
1785 m_ListView.SetFocus();
1786 }
1787 }
1788
1789 m_uState = uState;
1790 TRACE("--\n");
1791}
HRESULT FillEditMenu()
Definition: CDefView.cpp:1385
void OnDeactivate()
Definition: CDefView.cpp:1748
HRESULT FillViewMenu()
Definition: CDefView.cpp:1402
@ SVUIA_ACTIVATE_FOCUS
Definition: shobjidl.idl:744

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

◆ drag_notify_subitem()

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

Definition at line 3309 of file CDefView.cpp.

3310{
3311 LONG lResult;
3312 HRESULT hr;
3313 RECT clientRect;
3314
3315 /* The key state on drop doesn't have MK_LBUTTON or MK_RBUTTON because it
3316 reflects the key state after the user released the button, so we need
3317 to remember the last key state when the button was pressed */
3318 m_grfKeyState = grfKeyState;
3319
3320 // Map from global to client coordinates and query the index of the
3321 // listview-item, which is currently under the mouse cursor.
3322 LVHITTESTINFO htinfo = {{pt.x, pt.y}, LVHT_ONITEM};
3323 ScreenToClient(&htinfo.pt);
3324 lResult = m_ListView.HitTest(&htinfo);
3325
3326 /* Send WM_*SCROLL messages every 250 ms during drag-scrolling */
3327 ::GetClientRect(m_ListView, &clientRect);
3328 if (htinfo.pt.x == m_ptLastMousePos.x && htinfo.pt.y == m_ptLastMousePos.y &&
3329 (htinfo.pt.x < SCROLLAREAWIDTH || htinfo.pt.x > clientRect.right - SCROLLAREAWIDTH ||
3330 htinfo.pt.y < SCROLLAREAWIDTH || htinfo.pt.y > clientRect.bottom - SCROLLAREAWIDTH))
3331 {
3332 m_cScrollDelay = (m_cScrollDelay + 1) % 5; // DragOver is called every 50 ms
3333 if (m_cScrollDelay == 0)
3334 {
3335 /* Mouse did hover another 250 ms over the scroll-area */
3336 if (htinfo.pt.x < SCROLLAREAWIDTH)
3337 m_ListView.SendMessageW(WM_HSCROLL, SB_LINEUP, 0);
3338
3339 if (htinfo.pt.x > clientRect.right - SCROLLAREAWIDTH)
3340 m_ListView.SendMessageW(WM_HSCROLL, SB_LINEDOWN, 0);
3341
3342 if (htinfo.pt.y < SCROLLAREAWIDTH)
3343 m_ListView.SendMessageW(WM_VSCROLL, SB_LINEUP, 0);
3344
3345 if (htinfo.pt.y > clientRect.bottom - SCROLLAREAWIDTH)
3346 m_ListView.SendMessageW(WM_VSCROLL, SB_LINEDOWN, 0);
3347 }
3348 }
3349 else
3350 {
3351 m_cScrollDelay = 0; // Reset, if cursor is not over the listview's scroll-area
3352 }
3353
3354 m_ptLastMousePos = htinfo.pt;
3356
3357 /* We need to check if we drag the selection over itself */
3358 if (lResult != -1 && m_pSourceDataObject.p != NULL)
3359 {
3360 PCUITEMID_CHILD pidl = _PidlByItem(lResult);
3361
3362 for (UINT i = 0; i < m_cidl; i++)
3363 {
3364 if (pidl == m_apidl[i])
3365 {
3366 /* The item that is being draged is hovering itself. */
3367 lResult = -1;
3368 break;
3369 }
3370 }
3371 }
3372
3373 // If we are still over the previous sub-item, notify it via DragOver and return
3374 if (m_pCurDropTarget && lResult == m_iDragOverItem)
3375 return m_pCurDropTarget->DragOver(grfKeyState, pt, pdwEffect);
3376
3377 // We've left the previous sub-item, notify it via DragLeave and release it
3378 if (m_pCurDropTarget)
3379 {
3381 if (pidl)
3382 SelectItem(pidl, 0);
3383
3384 m_pCurDropTarget->DragLeave();
3386 }
3387
3388 m_iDragOverItem = lResult;
3389
3390 if (lResult == -1)
3391 {
3392 // We are not above one of the listview's subitems. Bind to the
3393 // parent folder's DropTarget interface.
3395 }
3396 else
3397 {
3398 // Query the relative PIDL of the shellfolder object represented
3399 // by the currently dragged over listview-item ...
3400 PCUITEMID_CHILD pidl = _PidlByItem(lResult);
3401
3402 // ... and bind m_pCurDropTarget to the IDropTarget interface of an UIObject of this object
3403 hr = m_pSFParent->GetUIObjectOf(m_ListView, 1, &pidl, IID_NULL_PPV_ARG(IDropTarget, &m_pCurDropTarget));
3404 }
3405
3407
3408 // If anything failed, m_pCurDropTarget should be NULL now, which ought to be a save state
3409 if (FAILED(hr))
3410 {
3411 *pdwEffect = DROPEFFECT_NONE;
3412 return hr;
3413 }
3414
3415 if (m_iDragOverItem != -1)
3416 {
3417 SelectItem(m_iDragOverItem, SVSI_SELECT);
3418 }
3419
3420 // Notify the item just entered via DragEnter
3421 return m_pCurDropTarget->DragEnter(m_pCurDataObject, grfKeyState, pt, pdwEffect);
3422}
#define SCROLLAREAWIDTH
Definition: CDefView.cpp:3307
static void ClientToListView(HWND hwndLV, POINT *ppt)
Definition: CDefView.cpp:59
CComPtr< IDataObject > m_pCurDataObject
Definition: CDefView.cpp:137
STDMETHOD() SelectItem(PCUITEMID_CHILD pidlItem, SVSIF uFlags) override
Definition: CDefView.cpp:2575
CComPtr< IDataObject > m_pSourceDataObject
Definition: CDefView.cpp:135
CComPtr< IDropTarget > m_pCurDropTarget
Definition: CDefView.cpp:136
PCUITEMID_CHILD _PidlByItem(int i)
Definition: CDefView.cpp:887
DWORD m_grfKeyState
Definition: CDefView.cpp:142
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 3424 of file CDefView.cpp.

3425{
3426 if (*pdwEffect == DROPEFFECT_NONE)
3427 return S_OK;
3428
3429 /* Get a hold on the data object for later calls to DragEnter on the sub-folders */
3430 m_pCurDataObject = pDataObject;
3431
3432 HRESULT hr = drag_notify_subitem(grfKeyState, pt, pdwEffect);
3433 if (SUCCEEDED(hr))
3434 {
3435 POINT ptClient = {pt.x, pt.y};
3436 ScreenToClient(&ptClient);
3437 ImageList_DragEnter(m_hWnd, ptClient.x, ptClient.y);
3438 }
3439
3440 return hr;
3441}
HRESULT drag_notify_subitem(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
Definition: CDefView.cpp:3309
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 3451 of file CDefView.cpp.

3452{
3454
3455 if (m_pCurDropTarget)
3456 {
3457 m_pCurDropTarget->DragLeave();
3459 }
3460
3461 if (m_pCurDataObject != NULL)
3462 {
3464 }
3465
3466 m_iDragOverItem = 0;
3467
3468 return S_OK;
3469}
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 3443 of file CDefView.cpp.

3444{
3445 POINT ptClient = {pt.x, pt.y};
3446 ScreenToClient(&ptClient);
3447 ImageList_DragMove(ptClient.x, ptClient.y);
3448 return drag_notify_subitem(grfKeyState, pt, pdwEffect);
3449}
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 3726 of file CDefView.cpp.

3727{
3728 FIXME("Stub: this=%p\n", this);
3729 return E_NOTIMPL;
3730}

◆ Drop()

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

Implements IDropTarget.

Definition at line 3655 of file CDefView.cpp.

3656{
3659
3660 if ((IsDropOnSource(NULL) == S_OK) &&
3661 (*pdwEffect & DROPEFFECT_MOVE) &&
3663 {
3664 if (m_pCurDropTarget)
3665 {
3666 m_pCurDropTarget->DragLeave();
3668 }
3669
3670 POINT ptDrop = { pt.x, pt.y };
3671 ::ScreenToClient(m_ListView, &ptDrop);
3673 m_ptLastMousePos = ptDrop;
3674
3676 if (m_ListView.GetStyle() & LVS_AUTOARRANGE)
3677 {
3679 }
3680 else
3681 {
3682 POINT ptItem;
3683 INT iItem = -1;
3684 while ((iItem = m_ListView.GetNextItem(iItem, LVNI_SELECTED)) >= 0)
3685 {
3686 if (m_ListView.GetItemPosition(iItem, &ptItem))
3687 {
3690 m_ListView.SetItemPosition(iItem, &ptItem);
3691 }
3692 }
3693 }
3695 }
3696 else if (m_pCurDropTarget)
3697 {
3698 m_pCurDropTarget->Drop(pDataObject, grfKeyState, pt, pdwEffect);
3700 }
3701
3703 m_iDragOverItem = 0;
3704 return S_OK;
3705}
POINT m_ptFirstMousePos
Definition: CDefView.cpp:141
STDMETHOD() IsDropOnSource(IDropTarget *drop_target) override
Definition: CDefView.cpp:3136
void _MoveSelectionOnAutoArrange(POINT pt)
Definition: CDefView.cpp:3595
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 2454 of file CDefView.cpp.

2455{
2456 FIXME("(%p)\n", this);
2457 return E_NOTIMPL;
2458}

◆ Exec()

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

Implements IOleCommandTarget.

Definition at line 3246 of file CDefView.cpp.

3247{
3248 FIXME("(%p)->(\n\tTarget GUID:%s Command:0x%08x Opt:0x%08x %p %p)\n",
3249 this, debugstr_guid(pguidCmdGroup), nCmdID, nCmdexecopt, pvaIn, pvaOut);
3250
3251 if (!pguidCmdGroup)
3252 return OLECMDERR_E_UNKNOWNGROUP;
3253
3254 if (IsEqualCLSID(*pguidCmdGroup, m_Category))
3255 {
3256 if (nCmdID == FCIDM_SHVIEW_AUTOARRANGE)
3257 {
3258 if (V_VT(pvaIn) != VT_INT_PTR)
3259 return OLECMDERR_E_NOTSUPPORTED;
3260
3262 params.cbSize = sizeof(params);
3263 params.rcExclude = *(RECT*) V_INTREF(pvaIn);
3264
3265 if (m_hMenuViewModes)
3266 {
3267 // Duplicate all but the last two items of the view modes menu
3268 HMENU hmenuViewPopup = CreatePopupMenu();
3269 Shell_MergeMenus(hmenuViewPopup, m_hMenuViewModes, 0, 0, 0xFFFF, 0);
3270 DeleteMenu(hmenuViewPopup, GetMenuItemCount(hmenuViewPopup) - 1, MF_BYPOSITION);
3271 DeleteMenu(hmenuViewPopup, GetMenuItemCount(hmenuViewPopup) - 1, MF_BYPOSITION);
3272 CheckViewMode(hmenuViewPopup);
3273 TrackPopupMenuEx(hmenuViewPopup, TPM_LEFTALIGN | TPM_TOPALIGN, params.rcExclude.left, params.rcExclude.bottom, m_hWndParent, &params);
3274 ::DestroyMenu(hmenuViewPopup);
3275 }
3276
3277 // pvaOut is VT_I4 with value 0x403 (cmd id of the new mode maybe?)
3278 V_VT(pvaOut) = VT_I4;
3279 V_I4(pvaOut) = 0x403;
3280 }
3281 }
3282
3283 if (IsEqualIID(*pguidCmdGroup, CGID_Explorer) &&
3284 (nCmdID == 0x29) &&
3285 (nCmdexecopt == 4) && pvaOut)
3286 return S_OK;
3287
3288 if (IsEqualIID(*pguidCmdGroup, CGID_ShellDocView) &&
3289 (nCmdID == 9) &&
3290 (nCmdexecopt == 0))
3291 return 1;
3292
3293 return OLECMDERR_E_UNKNOWNGROUP;
3294}
HRESULT CheckViewMode(HMENU hmenuView)
Definition: CDefView.cpp:1457
@ VT_I4
Definition: compat.h:2298
@ VT_INT_PTR
Definition: compat.h:2327
GLenum const GLfloat * params
Definition: glext.h:5645
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#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
UINT WINAPI Shell_MergeMenus(HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags)
Definition: shlmenu.c:856
#define FCIDM_SHVIEW_AUTOARRANGE
Definition: shresdef.h:840
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
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
#define MF_BYPOSITION
Definition: winuser.h:203

◆ fill_list()

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

Definition at line 1017 of file CDefView.cpp.

1018{
1019 PITEMID_CHILD pidl = static_cast<PITEMID_CHILD>(ptr);
1020 CDefView *pThis = static_cast<CDefView *>(arg);
1021
1022 // in a commdlg this works as a filemask
1023 if (pThis->IncludeObject(pidl) == S_OK && pThis->m_ListView)
1024 pThis->LV_AddItem(pidl);
1025
1026 SHFree(pidl);
1027 return TRUE;
1028}
HRESULT IncludeObject(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:483
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 1418 of file CDefView.cpp.

1419{
1420 /* We only need to fill this once */
1421 if (GetMenuItemID(hmenuArrange, 0) == FCIDM_SHVIEW_AUTOARRANGE)
1422 {
1423 Shell_MergeMenus(hmenuArrange, m_hMenuArrangeModes, 0, 0, 0xFFFF,0);
1424 }
1425
1426 /* Also check the menu item according to which we sort */
1427 CheckMenuRadioItem(hmenuArrange,
1428 0x30,
1429 0x100,
1430 m_sortInfo.nHeaderID + 0x30,
1431 MF_BYCOMMAND);
1432
1434 {
1437 }
1438 else
1439 {
1442
1443 if (GetAutoArrange() == S_OK)
1445 else
1447
1448 if (_GetSnapToGrid() == S_OK)
1450 else
1452 }
1453
1454 return S_OK;
1455}
STDMETHOD() GetAutoArrange() override
Definition: CDefView.cpp:2835
HRESULT _GetSnapToGrid()
Definition: CDefView.cpp:2840
#define FCIDM_SHVIEW_ALIGNTOGRID
Definition: shresdef.h:842
#define MF_CHECKED
Definition: winuser.h:132
UINT WINAPI GetMenuItemID(_In_ HMENU, _In_ int)
#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)
#define MF_GRAYED
Definition: winuser.h:129

Referenced by OnInitMenuPopup().

◆ FillEditMenu()

HRESULT CDefView::FillEditMenu ( )

Definition at line 1385 of file CDefView.cpp.

1386{
1388 if (!hEditMenu)
1389 return E_FAIL;
1390
1391 HMENU hmenuContents = ::LoadMenuW(shell32_hInstance, L"MENU_003");
1392 if (!hmenuContents)
1393 return E_FAIL;
1394
1395 Shell_MergeMenus(hEditMenu, hmenuContents, 0, 0, 0xFFFF, 0);
1396
1397 ::DestroyMenu(hmenuContents);
1398
1399 return S_OK;
1400}
HMENU GetSubmenuByID(HMENU hmenu, UINT id)
Definition: CDefView.cpp:1325
#define FCIDM_MENU_EDIT
Definition: shlobj.h:624
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)

Referenced by DoActivate().

◆ FillFileMenu()

HRESULT CDefView::FillFileMenu ( )

Definition at line 1345 of file CDefView.cpp.

1346{
1348 if (!hFileMenu)
1349 return E_FAIL;
1350
1351 /* Cleanup the items added previously */
1352 for (int i = GetMenuItemCount(hFileMenu) - 1; i >= 0; i--)
1353 {
1354 UINT id = GetMenuItemID(hFileMenu, i);
1355 if (id < FCIDM_BROWSERFIRST || id > FCIDM_BROWSERLAST)
1356 DeleteMenu(hFileMenu, i, MF_BYPOSITION);
1357 }
1358
1359 // In case we still have this left over, clean it up
1360 if (m_pFileMenu)
1361 {
1364 }
1365 // Store context menu in m_pFileMenu and keep it to invoke the selected command later on
1368 return hr;
1369
1371
1372 hr = m_pFileMenu->QueryContextMenu(hmenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, 0);
1374 return hr;
1375
1376 // TODO: filter or something
1377
1378 Shell_MergeMenus(hFileMenu, hmenu, 0, 0, 0xFFFF, MM_ADDSEPARATOR | MM_SUBMENUSHAVEIDS);
1379
1381
1382 return S_OK;
1383}
STDMETHOD() GetItemObject(UINT uItem, REFIID riid, void **ppv) override
Definition: CDefView.cpp:2631
CComPtr< IContextMenu > m_pFileMenu
Definition: CDefView.cpp:145
@ SVGIO_SELECTION
Definition: shobjidl.idl:733
#define FCIDM_BROWSERLAST
Definition: shlobj.h:616
#define MM_SUBMENUSHAVEIDS
Definition: shlobj.h:2514
#define FCIDM_MENU_FILE
Definition: shlobj.h:623
#define FCIDM_SHVIEWFIRST
Definition: shlobj.h:573
#define MM_ADDSEPARATOR
Definition: shlobj.h:2513
#define FCIDM_SHVIEWLAST
Definition: shlobj.h:607
static HMENU hmenu
Definition: win.c:66

Referenced by OnInitMenuPopup().

◆ FillList()

HRESULT CDefView::FillList ( )

Definition at line 1034 of file CDefView.cpp.

1035{
1036 CComPtr<IEnumIDList> pEnumIDList;
1037 PITEMID_CHILD pidl;
1038 DWORD dwFetched;
1039 HRESULT hRes;
1040 HDPA hdpa;
1041 DWORD dFlags = SHCONTF_NONFOLDERS | SHCONTF_FOLDERS;
1042 DWORD dwValue, cbValue;
1043
1044 TRACE("%p\n", this);
1045
1046 // determine if there is a setting to show all the hidden files/folders
1047 dwValue = 1;
1048 cbValue = sizeof(dwValue);
1050 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
1051 L"Hidden", NULL, &dwValue, &cbValue);
1052 if (dwValue == 1)
1053 {
1054 dFlags |= SHCONTF_INCLUDEHIDDEN;
1055 m_ListView.SendMessageW(LVM_SETCALLBACKMASK, LVIS_CUT, 0);
1056 }
1057
1058 dwValue = 0;
1059 cbValue = sizeof(dwValue);
1061 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
1062 L"ShowSuperHidden", NULL, &dwValue, &cbValue);
1063 if (dwValue)
1064 {
1065 dFlags |= SHCONTF_INCLUDESUPERHIDDEN;
1066 m_ListView.SendMessageW(LVM_SETCALLBACKMASK, LVIS_CUT, 0);
1067 }
1068
1069 // get the itemlist from the shfolder
1070 hRes = m_pSFParent->EnumObjects(m_hWnd, dFlags, &pEnumIDList);
1071 if (hRes != S_OK)
1072 {
1073 if (hRes == S_FALSE)
1074 return(NOERROR);
1075 return(hRes);
1076 }
1077
1078 // create a pointer array
1079 hdpa = DPA_Create(16);
1080 if (!hdpa)
1081 return(E_OUTOFMEMORY);
1082
1083 // copy the items into the array
1084 while((S_OK == pEnumIDList->Next(1, &pidl, &dwFetched)) && dwFetched)
1085 {
1086 if (DPA_InsertPtr(hdpa, 0x7fff, pidl) == -1)
1087 {
1088 SHFree(pidl);
1089 }
1090 }
1091
1092 // turn listview's redrawing off
1094
1095 DPA_DestroyCallback( hdpa, fill_list, this);
1096
1097 /* sort the array */
1098 if (m_pSF2Parent)
1099 {
1100 m_pSF2Parent->GetDefaultColumn(NULL, (ULONG*)&m_sortInfo.nHeaderID, NULL);
1101 }
1102 else
1103 {
1104 FIXME("no m_pSF2Parent\n");
1105 }
1107 _Sort();
1108
1110 {
1113 }
1114
1115 // load custom background image and custom text color
1118
1119 // turn listview's redrawing back on and force it to draw
1121
1123
1125 {
1126 // redraw now
1127 m_ListView.InvalidateRect(NULL, TRUE);
1128 }
1129
1131
1132 return S_OK;
1133}
#define SFVM_GET_CUSTOMVIEWINFO
#define SFVM_LISTREFRESHED
static INT CALLBACK fill_list(LPVOID ptr, LPVOID arg)
Definition: CDefView.cpp:1017
void UpdateListColors()
Definition: CDefView.cpp:727
BOOL _Sort()
Definition: CDefView.cpp:853
CComPtr< IShellFolder2 > m_pSF2Parent
Definition: CDefView.cpp:111
void WINAPI DPA_DestroyCallback(HDPA hdpa, PFNDPAENUMCALLBACK enumProc, LPVOID lParam)
Definition: dpa.c:1003
HDPA WINAPI DPA_Create(INT nGrow)
Definition: dpa.c:950
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
Definition: dpa.c:591
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
Definition: reg.c:1236
#define LVM_SETCALLBACKMASK
Definition: commctrl.h:2419
#define LVIS_CUT
Definition: commctrl.h:2320
Definition: dpa.c:49
uint32_t ULONG
Definition: typedefs.h:59
#define NOERROR
Definition: winerror.h:2354
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by OnCreate(), and Refresh().

◆ FillViewMenu()

HRESULT CDefView::FillViewMenu ( )

Definition at line 1402 of file CDefView.cpp.

1403{
1405 if (!hViewMenu)
1406 return E_FAIL;
1407
1409 if (!m_hMenuViewModes)
1410 return E_FAIL;
1411
1414
1415 return S_OK;
1416}
DWORD WINAPI SHMenuIndexFromID(HMENU hMenu, UINT uID)
Definition: ordinal.c:4504
#define FCIDM_MENU_VIEW_SEP_OPTIONS
Definition: shlobj.h:626
#define MM_DONTREMOVESEPS
Definition: shlobj.h:2515
#define FCIDM_MENU_VIEW
Definition: shlobj.h:625

Referenced by DoActivate().

◆ Freeze()

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

Implements IViewObject.

Definition at line 3738 of file CDefView.cpp.

3739{
3740 FIXME("Stub: this=%p\n", this);
3741 return E_NOTIMPL;
3742}

◆ GetAdvise()

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

Implements IViewObject.

Definition at line 3762 of file CDefView.cpp.

3763{
3764 TRACE("this=%p pAspects=%p pAdvf=%p ppAdvSink=%p\n", this, pAspects, pAdvf, ppAdvSink);
3765
3766 if (ppAdvSink)
3767 {
3768 *ppAdvSink = m_pAdvSink;
3769 m_pAdvSink.p->AddRef();
3770 }
3771
3772 if (pAspects)
3773 *pAspects = m_dwAspects;
3774
3775 if (pAdvf)
3776 *pAdvf = m_dwAdvf;
3777
3778 return S_OK;
3779}
CComPtr< IAdviseSink > m_pAdvSink
Definition: CDefView.cpp:133
ULONG AddRef()

◆ GetArrangeParam()

HRESULT STDMETHODCALLTYPE CDefView::GetArrangeParam ( LPARAM sort)
override

Definition at line 3015 of file CDefView.cpp.

3016{
3017 FIXME("(%p)->(%p) stub\n", this, sort);
3018 return E_NOTIMPL;
3019}
_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 2835 of file CDefView.cpp.

2836{
2837 return ((m_ListView.GetStyle() & LVS_AUTOARRANGE) ? S_OK : S_FALSE);
2838}

Referenced by FillArrangeAsMenu(), and OnCommand().

◆ GetColorSet()

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

Implements IViewObject.

Definition at line 3732 of file CDefView.cpp.

3733{
3734 FIXME("Stub: this=%p\n", this);
3735 return E_NOTIMPL;
3736}

◆ GetCurrentInfo()

HRESULT WINAPI CDefView::GetCurrentInfo ( LPFOLDERSETTINGS  pfs)
override

Implements IShellView.

Definition at line 2549 of file CDefView.cpp.

2550{
2551 TRACE("(%p)->(%p) vmode=%x flags=%x\n", this, lpfs,
2553
2554 if (!lpfs)
2555 return E_INVALIDARG;
2556
2557 *lpfs = m_FolderSettings;
2558 return S_OK;
2559}
#define E_INVALIDARG
Definition: ddrawi.h:101

◆ GetCurrentViewMode()

HRESULT STDMETHODCALLTYPE CDefView::GetCurrentViewMode ( UINT pViewMode)
override

Implements IFolderView.

Definition at line 2681 of file CDefView.cpp.

2682{
2683 TRACE("(%p)->(%p), stub\n", this, pViewMode);
2684
2685 if (!pViewMode)
2686 return E_INVALIDARG;
2687
2688 *pViewMode = m_FolderSettings.ViewMode;
2689 return S_OK;
2690}

◆ GetDefaultSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetDefaultSpacing ( POINT ppt)
override

Implements IFolderView.

Definition at line 2830 of file CDefView.cpp.

2831{
2832 return E_NOTIMPL;
2833}

◆ GetDragPoint()

HRESULT STDMETHODCALLTYPE CDefView::GetDragPoint ( POINT pt)
override

Definition at line 3147 of file CDefView.cpp.

3148{
3149 if (!pt)
3150 return E_INVALIDARG;
3151
3153 return S_OK;
3154}

◆ GetDropPoint()

HRESULT STDMETHODCALLTYPE CDefView::GetDropPoint ( POINT pt)
override

Definition at line 3156 of file CDefView.cpp.

3157{
3158 FIXME("(%p)->(%p) stub\n", this, pt);
3159 return E_NOTIMPL;
3160}

◆ GetFocusedItem()

HRESULT STDMETHODCALLTYPE CDefView::GetFocusedItem ( int piItem)
override

Implements IFolderView.

Definition at line 2783 of file CDefView.cpp.

2784{
2785 TRACE("(%p)->(%p)\n", this, piItem);
2786
2787 *piItem = m_ListView.GetNextItem(-1, LVNI_FOCUSED);
2788
2789 return S_OK;
2790}
#define LVNI_FOCUSED
Definition: commctrl.h:2423

◆ GetFolder()

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

Implements IFolderView.

Definition at line 2736 of file CDefView.cpp.

2737{
2738 if (m_pSFParent == NULL)
2739 return E_FAIL;
2740
2741 return m_pSFParent->QueryInterface(riid, ppv);
2742}
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 2631 of file CDefView.cpp.

2632{
2634
2635 TRACE("(%p)->(uItem=0x%08x,\n\tIID=%s, ppv=%p)\n", this, uItem, debugstr_guid(&riid), ppvOut);
2636
2637 if (!ppvOut)
2638 return E_INVALIDARG;
2639
2640 *ppvOut = NULL;
2641
2642 switch (uItem)
2643 {
2644 case SVGIO_BACKGROUND:
2645 if (IsEqualIID(riid, IID_IContextMenu))
2646 {
2649 return hr;
2650
2651 IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
2652 }
2653 else if (IsEqualIID(riid, IID_IDispatch))
2654 {
2656 {
2659 return hr;
2660 }
2661 hr = m_pShellFolderViewDual->QueryInterface(riid, ppvOut);
2662 }
2663 break;
2664 case SVGIO_SELECTION:
2665 GetSelections();
2666 hr = m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, riid, 0, ppvOut);
2668 return hr;
2669
2670 if (IsEqualIID(riid, IID_IContextMenu))
2671 IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
2672
2673 break;
2674 }
2675
2676 TRACE("-- (%p)->(interface=%p)\n", this, *ppvOut);
2677
2678 return hr;
2679}
HRESULT CDefViewBckgrndMenu_CreateInstance(IShellFolder *psf, REFIID riid, void **ppv)
HRESULT WINAPI CDefViewDual_Constructor(REFIID riid, LPVOID *ppvOut)
CComPtr< IShellFolderViewDual > m_pShellFolderViewDual
Definition: CDefView.cpp:115
@ SVGIO_BACKGROUND
Definition: shobjidl.idl:732
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 2792 of file CDefView.cpp.

2793{
2794 if (!m_ListView)
2795 {
2796 ERR("!m_ListView\n");
2797 return E_FAIL;
2798 }
2799
2800 int lvIndex = LV_FindItemByPidl(pidl);
2801 if (lvIndex == -1 || ppt == NULL)
2802 return E_INVALIDARG;
2803
2804 m_ListView.GetItemPosition(lvIndex, ppt);
2805 return S_OK;
2806}
int LV_FindItemByPidl(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:901

◆ GetItemSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetItemSpacing ( ITEMSPACING spacing)
override

Definition at line 3192 of file CDefView.cpp.

3193{
3194 FIXME("(%p)->(%p) stub\n", this, spacing);
3195 return E_NOTIMPL;
3196}

◆ GetObject()

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

Definition at line 3046 of file CDefView.cpp.

3047{
3048 TRACE("(%p)->(%p %d)\n", this, pidl, item);
3049 return Item(item, pidl);
3050}
_In_ WDFCOLLECTION _In_ WDFOBJECT Item

◆ GetObjectCount()

HRESULT STDMETHODCALLTYPE CDefView::GetObjectCount ( UINT count)
override

Definition at line 3076 of file CDefView.cpp.

3077{
3078 TRACE("(%p)->(%p)\n", this, count);
3080 return S_OK;
3081}
GLuint GLuint GLsizei count
Definition: gl.h:1545

◆ GetSelectedCount()

HRESULT STDMETHODCALLTYPE CDefView::GetSelectedCount ( UINT count)
override

Definition at line 3109 of file CDefView.cpp.

3110{
3111 FIXME("(%p)->(%p) stub\n", this, count);
3112 return E_NOTIMPL;
3113}

◆ GetSelectedObjects()

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

Definition at line 3115 of file CDefView.cpp.

3116{
3117 TRACE("(%p)->(%p %p)\n", this, pidl, items);
3118
3119 *items = GetSelections();
3120
3121 if (*items)
3122 {
3123 *pidl = static_cast<PCUITEMID_CHILD *>(LocalAlloc(0, *items * sizeof(PCUITEMID_CHILD)));
3124 if (!*pidl)
3125 {
3126 return E_OUTOFMEMORY;
3127 }
3128
3129 /* it's documented that caller shouldn't PIDLs, only array itself */
3130 memcpy(*pidl, m_apidl, *items * sizeof(PCUITEMID_CHILD));
3131 }
3132
3133 return S_OK;
3134}
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 2774 of file CDefView.cpp.

2775{
2776 TRACE("(%p)->(%p)\n", this, piItem);
2777
2778 *piItem = m_ListView.GetSelectionMark();
2779
2780 return S_OK;
2781}
int GetSelectionMark()
Definition: rosctrls.h:156

◆ GetSelections()

UINT CDefView::GetSelections ( )

Definition at line 1475 of file CDefView.cpp.

1476{
1477 SHFree(m_apidl);
1478
1480 m_apidl = static_cast<PCUITEMID_CHILD*>(SHAlloc(m_cidl * sizeof(PCUITEMID_CHILD)));
1481 if (!m_apidl)
1482 {
1483 m_cidl = 0;
1484 return 0;
1485 }
1486
1487 TRACE("-- Items selected =%u\n", m_cidl);
1488
1490
1491 UINT i = 0;
1492 int lvIndex = -1;
1493 while ((lvIndex = m_ListView.GetNextItem(lvIndex, LVNI_SELECTED)) > -1)
1494 {
1495 m_apidl[i] = _PidlByItem(lvIndex);
1496 i++;
1497 if (i == m_cidl)
1498 break;
1499 TRACE("-- selected Item found\n");
1500 }
1501
1502 return m_cidl;
1503}
UINT GetSelectedCount()
Definition: rosctrls.h:136
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:304
#define ASSERT(a)
Definition: mode.c:44

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

◆ GetSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetSpacing ( POINT ppt)
override

Implements IFolderView.

Definition at line 2808 of file CDefView.cpp.

2809{
2810 TRACE("(%p)->(%p)\n", this, ppt);
2811
2812 if (!m_ListView)
2813 {
2814 ERR("!m_ListView\n");
2815 return S_FALSE;
2816 }
2817
2818 if (ppt)
2819 {
2820 SIZE spacing;
2821 m_ListView.GetItemSpacing(spacing);
2822
2823 ppt->x = spacing.cx;
2824 ppt->y = spacing.cy;
2825 }
2826
2827 return S_OK;
2828}
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 2901 of file CDefView.cpp.

2902{
2903 FIXME("(%p)->(%p, %lu) stub\n", this, view_guid, view_type);
2904 return E_NOTIMPL;
2905}
view_type

◆ GetWindow()

HRESULT WINAPI CDefView::GetWindow ( HWND lphwnd)
override

Implements IOleWindow.

Definition at line 2421 of file CDefView.cpp.

2422{
2423 TRACE("(%p)\n", this);
2424
2425 *phWnd = m_hWnd;
2426
2427 return S_OK;
2428}

◆ GetWindowProc()

virtual WNDPROC CDefView::GetWindowProc ( )
inlinevirtual

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

Definition at line 347 of file CDefView.cpp.

348 {
349 return WindowProc;
350 }
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CDefView.cpp:352

◆ GetWndClassInfo()

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

Definition at line 334 of file CDefView.cpp.

335 {
336 static ATL::CWndClassInfo wc =
337 {
339 0, 0, NULL, NULL,
340 LoadCursor(NULL, IDC_ARROW), NULL, NULL, L"SHELLDLL_DefView", NULL
341 },
342 NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
343 };
344 return wc;
345 }
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:5812
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5719
#define CS_PARENTDC
Definition: winuser.h:656

◆ GiveFeedback()

HRESULT WINAPI CDefView::GiveFeedback ( DWORD  dwEffect)
override

Implements IDropSource.

Definition at line 3719 of file CDefView.cpp.

3720{
3721 TRACE("(%p)\n", this);
3722
3724}
#define DRAGDROP_S_USEDEFAULTCURSORS
Definition: winerror.h:2648

◆ HandleRename()

HRESULT STDMETHODCALLTYPE CDefView::HandleRename ( LPCITEMIDLIST  new_pidl)
override

Definition at line 2995 of file CDefView.cpp.

2996{
2997 FIXME("(%p)->(%p) stub\n", this, new_pidl);
2998 return E_NOTIMPL;
2999}

◆ IncludeObject()

HRESULT CDefView::IncludeObject ( PCUITEMID_CHILD  pidl)

Definition at line 483 of file CDefView.cpp.

484{
485 HRESULT ret = S_OK;
486
487 if (m_pCommDlgBrowser.p != NULL)
488 {
489 TRACE("ICommDlgBrowser::IncludeObject pidl=%p\n", pidl);
490 ret = m_pCommDlgBrowser->IncludeObject(this, pidl);
491 TRACE("-- returns 0x%08x\n", ret);
492 }
493
494 return ret;
495}
int ret

Referenced by fill_list().

◆ Initialize()

HRESULT WINAPI CDefView::Initialize ( IShellFolder shellFolder)

Definition at line 473 of file CDefView.cpp.

474{
475 m_pSFParent = shellFolder;
477
478 return S_OK;
479}
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)

◆ InitList()

BOOL CDefView::InitList ( )

Definition at line 784 of file CDefView.cpp.

785{
787 WCHAR szTemp[50];
788 HIMAGELIST big_icons, small_icons;
789
790 TRACE("%p\n", this);
791
793
795
796 if (m_pSF2Parent)
797 {
798 for (int i = 0; 1; i++)
799 {
800 if (FAILED(m_pSF2Parent->GetDetailsOf(NULL, i, &sd)))
801 break;
802 StrRetToStrNW( szTemp, 50, &sd.str, NULL);
803 m_ListView.InsertColumn(i, szTemp, sd.fmt, sd.cxChar * 8);
804
805 InsertMenuW(m_hMenuArrangeModes, -1, MF_STRING, 0x30 + i, szTemp);
806 }
807
809 }
810 else
811 {
812 FIXME("no m_pSF2Parent\n");
813 }
814
815 Shell_GetImageLists(&big_icons, &small_icons);
817 m_ListView.SetImageList(small_icons, LVSIL_SMALL);
818
819 return TRUE;
820}
BOOL DeleteAllItems()
Definition: rosctrls.h:126
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:91
int InsertColumn(int iCol, LV_COLUMN *pcol)
Definition: rosctrls.h:52
BOOL WINAPI Shell_GetImageLists(HIMAGELIST *lpBigList, HIMAGELIST *lpSmallList)
Definition: iconcache.cpp:683
static const WCHAR sd[]
Definition: suminfo.c:286
#define LVSIL_SMALL
Definition: commctrl.h:2299
#define LVSIL_NORMAL
Definition: commctrl.h:2298
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
Definition: shellstring.c:85
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define MF_STRING
Definition: winuser.h:138
#define MF_SEPARATOR
Definition: winuser.h:137
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by OnCreate().

◆ InvokeContextMenuCommand()

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

Definition at line 1505 of file CDefView.cpp.

1506{
1507 CMINVOKECOMMANDINFOEX cmi;
1508
1509 ZeroMemory(&cmi, sizeof(cmi));
1510 cmi.cbSize = sizeof(cmi);
1511 cmi.hwnd = m_hWnd;
1512 cmi.lpVerb = lpVerb;
1513
1514 if (GetKeyState(VK_SHIFT) & 0x8000)
1515 cmi.fMask |= CMIC_MASK_SHIFT_DOWN;
1516
1517 if (GetKeyState(VK_CONTROL) & 0x8000)
1518 cmi.fMask |= CMIC_MASK_CONTROL_DOWN;
1519
1520 if (pt)
1521 {
1522 cmi.fMask |= CMIC_MASK_PTINVOKE;
1523 cmi.ptInvoke = *pt;
1524 }
1525
1526 HRESULT hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmi);
1527 // Most of our callers will do this, but if they would forget (File menu!)
1528 IUnknown_SetSite(pCM, NULL);
1529 pCM.Release();
1530
1532 return hr;
1533
1534 return S_OK;
1535}
if(dx< 0)
Definition: linetemp.h:194
#define VK_CONTROL
Definition: winuser.h:2203
#define VK_SHIFT
Definition: winuser.h:2202
SHORT WINAPI GetKeyState(_In_ int)

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

◆ IsBkDropTarget()

HRESULT STDMETHODCALLTYPE CDefView::IsBkDropTarget ( IDropTarget drop_target)
override

Definition at line 3174 of file CDefView.cpp.

3175{
3176 FIXME("(%p)->(%p) stub\n", this, drop_target);
3177 return E_NOTIMPL;
3178}

◆ IsDropOnSource()

HRESULT STDMETHODCALLTYPE CDefView::IsDropOnSource ( IDropTarget drop_target)
override

Definition at line 3136 of file CDefView.cpp.

3137{
3138 if ((m_iDragOverItem == -1 || m_pCurDropTarget == NULL) &&
3140 {
3141 return S_OK;
3142 }
3143
3144 return S_FALSE;
3145}

Referenced by Drop().

◆ Item()

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

Implements IFolderView.

Definition at line 2744 of file CDefView.cpp.

2745{
2746 PCUITEMID_CHILD pidl = _PidlByItem(iItemIndex);
2747 if (pidl)
2748 {
2749 *ppidl = ILClone(pidl);
2750 return S_OK;
2751 }
2752
2753 *ppidl = 0;
2754 return E_INVALIDARG;
2755}
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:228

◆ ItemCount()

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

Implements IFolderView.

Definition at line 2757 of file CDefView.cpp.

2758{
2759 TRACE("(%p)->(%u %p)\n", this, uFlags, pcItems);
2760
2761 if (uFlags != SVGIO_ALLVIEW)
2762 FIXME("some flags unsupported, %x\n", uFlags & ~SVGIO_ALLVIEW);
2763
2765
2766 return S_OK;
2767}
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 2769 of file CDefView.cpp.

2770{
2771 return E_NOTIMPL;
2772}

◆ ListViewCompareItems()

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

Definition at line 837 of file CDefView.cpp.

838{
839 PCUIDLIST_RELATIVE pidl1 = reinterpret_cast<PCUIDLIST_RELATIVE>(lParam1);
840 PCUIDLIST_RELATIVE pidl2 = reinterpret_cast<PCUIDLIST_RELATIVE>(lParam2);
841 CDefView *pThis = reinterpret_cast<CDefView*>(lpData);
842
843 HRESULT hres = pThis->m_pSFParent->CompareIDs(pThis->m_sortInfo.nHeaderID, pidl1, pidl2);
845 return 0;
846
847 SHORT nDiff = HRESULT_CODE(hres);
848 if (!pThis->m_sortInfo.bIsAscending)
849 nDiff = -nDiff;
850 return nDiff;
851}
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().

◆ LV_AddItem()

int CDefView::LV_AddItem ( PCUITEMID_CHILD  pidl)

Definition at line 916 of file CDefView.cpp.

917{
918 LVITEMW lvItem;
919
920 TRACE("(%p)(pidl=%p)\n", this, pidl);
921
923
925 return -1;
926
927 lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; // set mask
928 lvItem.iItem = m_ListView.GetItemCount(); // add item to lists end
929 lvItem.iSubItem = 0;
930 lvItem.lParam = reinterpret_cast<LPARAM>(ILClone(pidl)); // set item's data
931 lvItem.pszText = LPSTR_TEXTCALLBACKW; // get text on a callback basis
932 lvItem.iImage = I_IMAGECALLBACK; // get image on a callback basis
933 lvItem.stateMask = LVIS_CUT;
934
935 return m_ListView.InsertItem(&lvItem);
936}
#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 938 of file CDefView.cpp.

939{
940 int nIndex;
941
942 TRACE("(%p)(pidl=%p)\n", this, pidl);
943
945
946 nIndex = LV_FindItemByPidl(pidl);
947 if (nIndex < 0)
948 return FALSE;
949
950 return m_ListView.DeleteItem(nIndex);
951}
BOOL DeleteItem(int i)
Definition: rosctrls.h:101

Referenced by OnChangeNotify().

◆ LV_FindItemByPidl()

int CDefView::LV_FindItemByPidl ( PCUITEMID_CHILD  pidl)

Definition at line 901 of file CDefView.cpp.

902{
904
905 int cItems = m_ListView.GetItemCount();
906
907 for (int i = 0; i<cItems; i++)
908 {
909 PCUITEMID_CHILD currentpidl = _PidlByItem(i);
910 if (ILIsEqual(pidl, currentpidl))
911 return i;
912 }
913 return -1;
914}
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:539

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

◆ LV_ProdItem()

BOOLEAN CDefView::LV_ProdItem ( PCUITEMID_CHILD  pidl)

Definition at line 992 of file CDefView.cpp.

993{
994 int nItem;
995 LVITEMW lvItem;
996
997 TRACE("(%p)(pidl=%p)\n", this, pidl);
998
1000
1001 nItem = LV_FindItemByPidl(pidl);
1002
1003 if (-1 != nItem)
1004 {
1005 lvItem.mask = LVIF_IMAGE;
1006 lvItem.iItem = nItem;
1007 lvItem.iSubItem = 0;
1009 m_ListView.SetItem(&lvItem);
1010 m_ListView.Update(nItem);
1011 return TRUE;
1012 }
1013
1014 return FALSE;
1015}
BOOL Update(int i)
Definition: rosctrls.h:131
BOOL SetItem(const LV_ITEM *pitem)
Definition: rosctrls.h:111
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder *sh, LPCITEMIDLIST pidl, int *pIndex)
Definition: iconcache.cpp:766

Referenced by OnChangeNotify().

◆ LV_RenameItem()

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

Definition at line 953 of file CDefView.cpp.

954{
955 int nItem;
956 LVITEMW lvItem;
957
958 TRACE("(%p)(pidlold=%p pidlnew=%p)\n", this, pidlOld, pidlNew);
959
961
962 nItem = LV_FindItemByPidl(pidlOld);
963
964 if (-1 != nItem)
965 {
966 lvItem.mask = LVIF_PARAM; // only the pidl
967 lvItem.iItem = nItem;
968 lvItem.iSubItem = 0;
969 m_ListView.GetItem(&lvItem);
970
971 // Store old pidl until new item is replaced
972 LPVOID oldPidl = reinterpret_cast<LPVOID>(lvItem.lParam);
973
974 lvItem.mask = LVIF_PARAM | LVIF_IMAGE | LVIF_TEXT;
975 lvItem.iItem = nItem;
976 lvItem.iSubItem = 0;
977 lvItem.lParam = reinterpret_cast<LPARAM>(ILClone(pidlNew)); // set item's data
980 m_ListView.SetItem(&lvItem);
981 m_ListView.Update(nItem);
982
983 // Now that the new item is in place, we can safely release the old pidl
984 SHFree(oldPidl);
985
986 return TRUE; // FIXME: better handling
987 }
988
989 return FALSE;
990}
BOOL GetItem(LV_ITEM *pitem)
Definition: rosctrls.h:106

Referenced by OnChangeNotify().

◆ MoveIcons()

HRESULT STDMETHODCALLTYPE CDefView::MoveIcons ( IDataObject obj)
override

Definition at line 3162 of file CDefView.cpp.

3163{
3164 TRACE("(%p)->(%p)\n", this, obj);
3165 return E_NOTIMPL;
3166}

◆ OnActivate()

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

Definition at line 1816 of file CDefView.cpp.

1817{
1819 return 0;
1820}
void DoActivate(UINT uState)
Definition: CDefView.cpp:1759

◆ OnChangeNotify()

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

Definition at line 2263 of file CDefView.cpp.

2264{
2265 // The change notify can come before WM_CREATE
2266 if (!m_ListView)
2267 return FALSE;
2268
2269 HANDLE hChange = (HANDLE)wParam;
2270 DWORD dwProcID = (DWORD)lParam;
2271 PIDLIST_ABSOLUTE *Pidls;
2272 LONG lEvent;
2273 HANDLE hLock = SHChangeNotification_Lock(hChange, dwProcID, &Pidls, &lEvent);
2274 if (hLock == NULL)
2275 {
2276 ERR("hLock == NULL\n");
2277 return FALSE;
2278 }
2279
2280 BOOL bParent0 = ILIsParentOrSpecialParent(m_pidlParent, Pidls[0]);
2281 BOOL bParent1 = ILIsParentOrSpecialParent(m_pidlParent, Pidls[1]);
2282
2283 TRACE("(%p)(%p,%p,0x%08x)\n", this, Pidls[0], Pidls[1], lParam);
2284
2285 lEvent &= ~SHCNE_INTERRUPT;
2286 switch (lEvent)
2287 {
2288 case SHCNE_MKDIR:
2289 case SHCNE_CREATE:
2290 if (bParent0)
2291 {
2292 if (LV_FindItemByPidl(ILFindLastID(Pidls[0])) == -1)
2293 LV_AddItem(ILFindLastID(Pidls[0]));
2294 else
2295 LV_ProdItem(ILFindLastID(Pidls[0]));
2296 }
2297 break;
2298 case SHCNE_RMDIR:
2299 case SHCNE_DELETE:
2300 if (bParent0)
2301 LV_DeleteItem(ILFindLastID(Pidls[0]));
2302 break;
2303 case SHCNE_RENAMEFOLDER:
2304 case SHCNE_RENAMEITEM:
2305 if (bParent0 && bParent1)
2306 LV_RenameItem(ILFindLastID(Pidls[0]), ILFindLastID(Pidls[1]));
2307 else if (bParent0)
2308 LV_DeleteItem(ILFindLastID(Pidls[0]));
2309 else if (bParent1)
2310 LV_AddItem(ILFindLastID(Pidls[1]));
2311 break;
2312 case SHCNE_UPDATEITEM:
2313 if (bParent0)
2314 LV_RenameItem(ILFindLastID(Pidls[0]), ILFindLastID(Pidls[0]));
2315 break;
2316 case SHCNE_UPDATEDIR:
2317 Refresh();
2318 break;
2319 }
2320
2322 return TRUE;
2323}
static BOOL ILIsParentOrSpecialParent(PCIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE pidl2)
Definition: CDefView.cpp:2220
EXTERN_C HANDLE WINAPI SHChangeNotification_Lock(HANDLE hTicket, DWORD dwOwnerPID, LPITEMIDLIST **lppidls, LPLONG lpwEventId)
EXTERN_C BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock)
BOOLEAN LV_DeleteItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:938
BOOLEAN LV_ProdItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:992
BOOLEAN LV_RenameItem(PCUITEMID_CHILD pidlOld, PCUITEMID_CHILD pidlNew)
Definition: CDefView.cpp:953
STDMETHOD() Refresh() override
Definition: CDefView.cpp:2483
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
Definition: pidl.c:189
#define SHCNE_RMDIR
Definition: shlobj.h:1879
#define SHCNE_DELETE
Definition: shlobj.h:1877
#define SHCNE_MKDIR
Definition: shlobj.h:1878
#define SHCNE_UPDATEITEM
Definition: shlobj.h:1888
#define SHCNE_RENAMEITEM
Definition: shlobj.h:1875
#define SHCNE_UPDATEDIR
Definition: shlobj.h:1887
#define SHCNE_CREATE
Definition: shlobj.h:1876
#define SHCNE_RENAMEFOLDER
Definition: shlobj.h:1892
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 1854 of file CDefView.cpp.

1855{
1856 DWORD dwCmdID;
1857 DWORD dwCmd;
1858 HWND hwndCmd;
1859 int nCount;
1860
1861 dwCmdID = GET_WM_COMMAND_ID(wParam, lParam);
1863 hwndCmd = GET_WM_COMMAND_HWND(wParam, lParam);
1864
1865 TRACE("(%p)->(0x%08x 0x%08x %p) stub\n", this, dwCmdID, dwCmd, hwndCmd);
1866
1867 switch (dwCmdID)
1868 {
1872 CheckToolbar();
1873 break;
1876 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_ICON);
1877 CheckToolbar();
1878 break;
1881 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_LIST);
1882 CheckToolbar();
1883 break;
1886 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
1887 CheckToolbar();
1888 break;
1889 /* the menu-ID's for sorting are 0x30... see shrec.rc */
1890 case 0x30:
1891 case 0x31:
1892 case 0x32:
1893 case 0x33:
1894 m_sortInfo.nHeaderID = dwCmdID - 0x30;
1896 _Sort();
1897 break;
1900 break;
1902 if (_GetSnapToGrid() == S_OK)
1904 else
1905 ArrangeGrid();
1906 break;
1908 if (GetAutoArrange() == S_OK)
1909 m_ListView.ModifyStyle(LVS_AUTOARRANGE, 0);
1910 else
1911 AutoArrange();
1912 break;
1915 break;
1917 nCount = m_ListView.GetItemCount();
1918 for (int i=0; i < nCount; i++)
1920 break;
1922 Refresh();
1923 break;
1925 case FCIDM_SHVIEW_CUT:
1926 case FCIDM_SHVIEW_COPY:
1930 return 0;
1931 return OnExplorerCommand(dwCmdID, TRUE);
1935 return 0;
1937 case FCIDM_SHVIEW_UNDO:
1940 return OnExplorerCommand(dwCmdID, FALSE);
1941 default:
1942 // WM_COMMAND messages from file menu are routed to CDefView to let m_pFileMenu handle them
1943 if (m_pFileMenu && dwCmd == 0)
1944 {
1945 HMENU Dummy = NULL;
1946 MenuCleanup _(m_pFileMenu, Dummy);
1948 }
1949 }
1950
1951 return 0;
1952}
#define GET_WM_COMMAND_HWND(wp, lp)
Definition: CDefView.cpp:415
#define GET_WM_COMMAND_ID(wp, lp)
Definition: CDefView.cpp:414
#define GET_WM_COMMAND_CMD(wp, lp)
Definition: CDefView.cpp:416
STDMETHOD() AutoArrange() override
Definition: CDefView.cpp:3027
void _DoCopyToMoveToFolder(BOOL bCopy)
Definition: CDefView.cpp:1793
LRESULT OnExplorerCommand(UINT uCommand, BOOL bUseSelection)
Definition: CDefView.cpp:1673
STDMETHOD() ArrangeGrid() override
Definition: CDefView.cpp:3021
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:1654
DWORD WINAPI SHRestricted(RESTRICTIONS rest)
Definition: shpolicy.c:146
#define FCIDM_SHVIEW_SELECTALL
Definition: shresdef.h:832
#define FCIDM_SHVIEW_CUT
Definition: shresdef.h:825
#define FCIDM_SHVIEW_LISTVIEW
Definition: shresdef.h:837
#define FCIDM_SHVIEW_UNDO
Definition: shresdef.h:828
#define FCIDM_SHVIEW_COPY
Definition: shresdef.h:826
#define FCIDM_SHVIEW_INSERTLINK
Definition: shresdef.h:829
#define FCIDM_SHVIEW_REFRESH
Definition: shresdef.h:850
#define FCIDM_SHVIEW_NEWFOLDER
Definition: shresdef.h:848
#define FCIDM_SHVIEW_SMALLICON
Definition: shresdef.h:836
#define FCIDM_SHVIEW_PROPERTIES
Definition: shresdef.h:824
#define FCIDM_SHVIEW_SNAPTOGRID
Definition: shresdef.h:841
#define FCIDM_SHVIEW_COPYTO
Definition: shresdef.h:830
#define FCIDM_SHVIEW_MOVETO
Definition: shresdef.h:831
#define FCIDM_SHVIEW_DELETE
Definition: shresdef.h:823
#define FCIDM_SHVIEW_RENAME
Definition: shresdef.h:845
#define FCIDM_SHVIEW_REPORTVIEW
Definition: shresdef.h:838
#define FCIDM_SHVIEW_INVERTSELECTION
Definition: shresdef.h:833
#define FCIDM_SHVIEW_INSERT
Definition: shresdef.h:827
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581

◆ OnContextMenu()

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

Definition at line 1577 of file CDefView.cpp.

1578{
1579 POINT pt;
1580 UINT uCommand;
1581 HRESULT hResult;
1582
1583 TRACE("(%p)\n", this);
1584
1585 if (m_hContextMenu != NULL)
1586 {
1587 ERR("HACK: Aborting context menu in nested call\n");
1588 return 0;
1589 }
1590
1592 if (!m_hContextMenu)
1593 return E_FAIL;
1594
1595 if (lParam != ~0) // unless app key (menu key) was pressed
1596 {
1597 pt.x = GET_X_LPARAM(lParam);
1598 pt.y = GET_Y_LPARAM(lParam);
1599
1600 LV_HITTESTINFO hittest = { pt };
1601 ScreenToClient(&hittest.pt);
1602 m_ListView.HitTest(&hittest);
1603
1604 // Right-Clicked item is selected? If selected, no selection change.
1605 // If not selected, then reset the selection and select the item.
1606 if ((hittest.flags & LVHT_ONITEM) &&
1608 {
1609 SelectItem(hittest.iItem, SVSI_SELECT | SVSI_DESELECTOTHERS | SVSI_ENSUREVISIBLE);
1610 }
1611 }
1612
1614 // In case we still have this left over, clean it up
1617 if (FAILED_UNEXPECTEDLY(hResult))
1618 return 0;
1619
1620 // Use 1 as the first id we want. 0 means that user canceled the menu
1621 hResult = m_pCM->QueryContextMenu(m_hContextMenu, 0, CONTEXT_MENU_BASE_ID, FCIDM_SHVIEWLAST, CMF_NORMAL);
1622 if (FAILED_UNEXPECTEDLY(hResult))
1623 return 0;
1624
1625 // There is no position requested, so try to find one
1626 if (lParam == ~0)
1627 {
1628 HWND hFocus = ::GetFocus();
1629 int lvIndex = -1;
1630
1631 if (hFocus == m_ListView.m_hWnd || m_ListView.IsChild(hFocus))
1632 {
1633 // Is there an item focused and selected?
1635 // If not, find the first selected item
1636 if (lvIndex < 0)
1637 lvIndex = m_ListView.GetNextItem(-1, LVIS_SELECTED);
1638 }
1639
1640 // We got something
1641 if (lvIndex > -1)
1642 {
1643 // Find the center of the icon
1644 RECT rc = { LVIR_ICON };
1645 m_ListView.SendMessage(LVM_GETITEMRECT, lvIndex, (LPARAM)&rc);
1646 pt.x = (rc.right + rc.left) / 2;
1647 pt.y = (rc.bottom + rc.top) / 2;
1648 }
1649 else
1650 {
1651 // We have to drop it somewhere
1652 pt.x = pt.y = 0;
1653 }
1654
1655 m_ListView.ClientToScreen(&pt);
1656 }
1657
1658 // This runs the message loop, calling back to us with f.e. WM_INITPOPUP (hence why m_hContextMenu and m_pCM exist)
1659 uCommand = TrackPopupMenu(m_hContextMenu,
1661 pt.x, pt.y, 0, m_hWnd, NULL);
1662 if (uCommand == 0)
1663 return 0;
1664
1665 if (uCommand == FCIDM_SHVIEW_OPEN && OnDefaultCommand() == S_OK)
1666 return 0;
1667
1669
1670 return 0;
1671}
#define CONTEXT_MENU_BASE_ID
Definition: CDefView.cpp:55
CComPtr< IContextMenu > m_pCM
Definition: CDefView.cpp:144
HRESULT OnDefaultCommand()
Definition: CDefView.cpp:497
#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:852
#define GET_Y_LPARAM(lp)
Definition: windowsx.h:300
#define GET_X_LPARAM(lp)
Definition: windowsx.h:299
HWND WINAPI GetFocus(void)
Definition: window.c:1893
#define TPM_RIGHTBUTTON
Definition: winuser.h:2380
#define TPM_LEFTBUTTON
Definition: winuser.h:2379
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
#define TPM_RETURNCMD
Definition: winuser.h:2387

◆ OnCreate()

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

Definition at line 1253 of file CDefView.cpp.

1254{
1257
1258 TRACE("%p\n", this);
1259
1261 {
1262 if (FAILED(RegisterDragDrop(m_hWnd, pdt)))
1263 ERR("Error Registering DragDrop\n");
1264 }
1265
1266 /* register for receiving notifications */
1267 m_pSFParent->QueryInterface(IID_PPV_ARG(IPersistFolder2, &ppf2));
1268 if (ppf2)
1269 {
1270 ppf2->GetCurFolder(&m_pidlParent);
1271 }
1272
1273 if (CreateList())
1274 {
1275 if (InitList())
1276 {
1277 FillList();
1278 }
1279 }
1280
1282 {
1283 HWND hwndSB;
1284 m_pShellBrowser->GetWindow(&hwndSB);
1286 }
1287
1288 SHChangeNotifyEntry ntreg[1];
1289 ntreg[0].fRecursive = FALSE;
1290 ntreg[0].pidl = m_pidlParent;
1295 1, ntreg);
1296
1297 //_DoFolderViewCB(SFVM_GETNOTIFY, ?? ??)
1298
1300
1301 BOOL bPreviousParentSpecial = m_isParentFolderSpecial;
1302
1303 // A folder is special if it is the Desktop folder,
1304 // a network folder, or a Control Panel folder
1307
1308 // Only force StatusBar part refresh if the state
1309 // changed from the previous folder
1310 if (bPreviousParentSpecial != m_isParentFolderSpecial)
1311 {
1312 // This handles changing StatusBar parts
1314 }
1315
1317
1318 return S_OK;
1319}
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: CBandSite.h:24
#define SHV_CHANGE_NOTIFY
Definition: CDefView.cpp:51
EXTERN_C ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, INT fSources, LONG wEventMask, UINT uMsg, INT cItems, SHChangeNotifyEntry *lpItems)
void UpdateStatusbar()
Definition: CDefView.cpp:549
BOOL CreateList()
Definition: CDefView.cpp:629
void _ForceStatusBarResize()
Definition: CDefView.cpp:3567
BOOL InitList()
Definition: CDefView.cpp:784
HRESULT FillList()
Definition: CDefView.cpp:1034
HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
Definition: ole2.c:557
BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
Definition: pidl.c:1924
BOOL _ILIsControlPanel(LPCITEMIDLIST pidl)
Definition: pidl.c:1935
#define SHCNRF_NewDelivery
Definition: shlobj.h:1923
#define SHCNRF_ShellLevel
Definition: shlobj.h:1921
#define SHCNRF_InterruptLevel
Definition: shlobj.h:1920
#define SHCNE_ALLEVENTS
Definition: shlobj.h:1899
#define IDA_SHELLVIEW
Definition: shresdef.h:26
PCIDLIST_ABSOLUTE pidl
Definition: shlobj.h:1871
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 2328 of file CDefView.cpp.

2329{
2330 if (!m_pCM)
2331 {
2332 /* no menu */
2333 ERR("no context menu\n");
2334 return FALSE;
2335 }
2336
2337 // lParam of WM_DRAWITEM WM_MEASUREITEM contains a menu id and
2338 // this also needs to be changed to a menu identifier offset
2339 UINT CmdID;
2340 HRESULT hres = SHGetMenuIdFromMenuMsg(uMsg, lParam, &CmdID);
2341 if (SUCCEEDED(hres))
2343
2344 /* Forward the message to the IContextMenu2 */
2347
2348 return (SUCCEEDED(hres));
2349}
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 1748 of file CDefView.cpp.

1749{
1750 TRACE("%p\n", this);
1751
1753 {
1754 // TODO: cleanup menu after deactivation
1756 }
1757}

Referenced by DoActivate(), and OnNotify().

◆ OnDefaultCommand()

HRESULT CDefView::OnDefaultCommand ( )

Definition at line 497 of file CDefView.cpp.

498{
500
501 if (m_pCommDlgBrowser.p != NULL)
502 {
503 TRACE("ICommDlgBrowser::OnDefaultCommand\n");
504 ret = m_pCommDlgBrowser->OnDefaultCommand(this);
505 TRACE("-- returns 0x%08x\n", ret);
506 }
507
508 return ret;
509}

Referenced by OnContextMenu(), and OpenSelectedItems().

◆ OnDestroy()

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

Definition at line 1148 of file CDefView.cpp.

1149{
1150 if (!m_Destroyed)
1151 {
1152 m_Destroyed = TRUE;
1153 if (m_hMenu)
1154 {
1156 m_hMenu = NULL;
1157 }
1160 m_hNotify = NULL;
1163 }
1164 bHandled = FALSE;
1165 return 0;
1166}
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 1168 of file CDefView.cpp.

1169{
1170 /* redirect to parent */
1173
1174 bHandled = FALSE;
1175 return 0;
1176}
CWindow GetParent() const
Definition: atlwin.h:700
@ FWF_TRANSPARENT
Definition: shobjidl.idl:639
#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 1673 of file CDefView.cpp.

1674{
1675 HRESULT hResult;
1676 HMENU hMenu = NULL;
1677
1679 hResult = GetItemObject(bUseSelection ? SVGIO_SELECTION : SVGIO_BACKGROUND, IID_PPV_ARG(IContextMenu, &pCM));
1680 if (FAILED_UNEXPECTEDLY(hResult))
1681 return 0;
1682
1683 MenuCleanup _(pCM, hMenu);
1684
1685 if ((uCommand != FCIDM_SHVIEW_DELETE) && (uCommand != FCIDM_SHVIEW_RENAME))
1686 {
1687 hMenu = CreatePopupMenu();
1688 if (!hMenu)
1689 return 0;
1690
1691 hResult = pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_NORMAL);
1692 if (FAILED_UNEXPECTEDLY(hResult))
1693 return 0;
1694 }
1695
1696 if (bUseSelection)
1697 {
1698 // FIXME: we should cache this
1699 SFGAOF rfg = SFGAO_BROWSABLE | SFGAO_CANCOPY | SFGAO_CANLINK | SFGAO_CANMOVE | SFGAO_CANDELETE | SFGAO_CANRENAME | SFGAO_HASPROPSHEET | SFGAO_FILESYSTEM | SFGAO_FOLDER;
1700 hResult = m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &rfg);
1701 if (FAILED_UNEXPECTEDLY(hResult))
1702 return 0;
1703
1704 if (!(rfg & SFGAO_CANMOVE) && uCommand == FCIDM_SHVIEW_CUT)
1705 return 0;
1706 if (!(rfg & SFGAO_CANCOPY) && uCommand == FCIDM_SHVIEW_COPY)
1707 return 0;
1708 if (!(rfg & SFGAO_CANDELETE) && uCommand == FCIDM_SHVIEW_DELETE)
1709 return 0;
1710 if (!(rfg & SFGAO_CANRENAME) && uCommand == FCIDM_SHVIEW_RENAME)
1711 return 0;
1712 if (!(rfg & SFGAO_HASPROPSHEET) && uCommand == FCIDM_SHVIEW_PROPERTIES)
1713 return 0;
1714 }
1715
1716 // FIXME: We should probably use the objects position?
1718 return 0;
1719}

Referenced by OnCommand().

◆ OnFinalMessage()

VOID CDefView::OnFinalMessage ( HWND  )
overridevirtual

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

Definition at line 1248 of file CDefView.cpp.

1249{
1250 this->Release();
1251}
ULONG Release()

◆ OnGetDlgCode()

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

Definition at line 1143 of file CDefView.cpp.

1144{
1145 return m_ListView.SendMessageW(uMsg, 0, 0);
1146}

◆ OnGetShellBrowser()

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

Definition at line 1236 of file CDefView.cpp.

1237{
1238 return reinterpret_cast<LRESULT>(m_pShellBrowser.p);
1239}

◆ OnInitMenuPopup()

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

Definition at line 2360 of file CDefView.cpp.

2361{
2362 HMENU hmenu = (HMENU) wParam;
2363 int nPos = LOWORD(lParam);
2364 UINT menuItemId;
2365
2366 if (m_pCM)
2367 OnCustomItem(uMsg, wParam, lParam, bHandled);
2368
2370
2371 if (GetSelections() == 0)
2372 {
2379 }
2380 else
2381 {
2382 // FIXME: Check copyable
2389 }
2390
2391 /* Lets try to find out what the hell wParam is */
2392 if (hmenu == GetSubMenu(m_hMenu, nPos))
2393 menuItemId = ReallyGetMenuItemID(m_hMenu, nPos);
2394 else if (hViewMenu && hmenu == GetSubMenu(hViewMenu, nPos))
2395 menuItemId = ReallyGetMenuItemID(hViewMenu, nPos);
2396 else if (m_hContextMenu && hmenu == GetSubMenu(m_hContextMenu, nPos))
2397 menuItemId = ReallyGetMenuItemID(m_hContextMenu, nPos);
2398 else
2399 return FALSE;
2400
2401 switch (menuItemId)
2402 {
2403 case FCIDM_MENU_FILE:
2404 FillFileMenu();
2405 break;
2406 case FCIDM_MENU_VIEW:
2407 case FCIDM_SHVIEW_VIEW:
2409 break;
2412 break;
2413 }
2414
2415 return FALSE;
2416}
UINT ReallyGetMenuItemID(HMENU hmenu, int i)
Definition: CDefView.cpp:1336
HRESULT FillFileMenu()
Definition: CDefView.cpp:1345
LRESULT OnCustomItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CDefView.cpp:2328
HRESULT FillArrangeAsMenu(HMENU hmenuArrange)
Definition: CDefView.cpp:1418
#define FCIDM_SHVIEW_VIEW
Definition: shresdef.h:822
#define FCIDM_SHVIEW_ARRANGE
Definition: shresdef.h:821
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 1842 of file CDefView.cpp.

1843{
1844 TRACE("(%p) stub\n", this);
1845
1847 /* Notify the ICommDlgBrowser */
1848 OnStateChange(CDBOSC_KILLFOCUS);
1849
1850 return 0;
1851}
HRESULT OnStateChange(UINT uFlags)
Definition: CDefView.cpp:511
@ SVUIA_ACTIVATE_NOFOCUS
Definition: shobjidl.idl:743

◆ OnNCCreate()

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

Definition at line 1241 of file CDefView.cpp.

1242{
1243 this->AddRef();
1244 bHandled = FALSE;
1245 return 0;
1246}

◆ OnNotify()

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

Definition at line 1974 of file CDefView.cpp.

1975{
1976 UINT CtlID;
1977 LPNMHDR lpnmh;
1978 LPNMLISTVIEW lpnmlv;
1979 NMLVDISPINFOW *lpdi;
1980 PCUITEMID_CHILD pidl;
1981 BOOL unused;
1982
1983 CtlID = wParam;
1984 lpnmh = (LPNMHDR)lParam;
1985 lpnmlv = (LPNMLISTVIEW)lpnmh;
1986 lpdi = (NMLVDISPINFOW *)lpnmh;
1987
1988 TRACE("%p CtlID=%u lpnmh->code=%x\n", this, CtlID, lpnmh->code);
1989
1990 switch (lpnmh->code)
1991 {
1992 case NM_SETFOCUS:
1993 TRACE("-- NM_SETFOCUS %p\n", this);
1994 OnSetFocus(0, 0, 0, unused);
1995 break;
1996 case NM_KILLFOCUS:
1997 TRACE("-- NM_KILLFOCUS %p\n", this);
1998 OnDeactivate();
1999 /* Notify the ICommDlgBrowser interface */
2000 OnStateChange(CDBOSC_KILLFOCUS);
2001 break;
2002 case NM_CUSTOMDRAW:
2003 TRACE("-- NM_CUSTOMDRAW %p\n", this);
2004 return CDRF_DODEFAULT;
2005 case NM_RELEASEDCAPTURE:
2006 TRACE("-- NM_RELEASEDCAPTURE %p\n", this);
2007 break;
2008 case NM_CLICK:
2009 TRACE("-- NM_CLICK %p\n", this);
2010 break;
2011 case NM_RCLICK:
2012 TRACE("-- NM_RCLICK %p\n", this);
2013 break;
2014 case NM_DBLCLK:
2015 TRACE("-- NM_DBLCLK %p\n", this);
2017 break;
2018 case NM_RETURN:
2019 TRACE("-- NM_RETURN %p\n", this);
2021 break;
2022 case HDN_ENDTRACKW:
2023 TRACE("-- HDN_ENDTRACKW %p\n", this);
2024 //nColumn1 = m_ListView.GetColumnWidth(0);
2025 //nColumn2 = m_ListView.GetColumnWidth(1);
2026 break;
2027 case LVN_DELETEITEM:
2028 TRACE("-- LVN_DELETEITEM %p\n", this);
2029 /*delete the pidl because we made a copy of it*/
2030 SHFree(reinterpret_cast<LPVOID>(lpnmlv->lParam));
2031 break;
2032 case LVN_DELETEALLITEMS:
2033 TRACE("-- LVN_DELETEALLITEMS %p\n", this);
2034 return FALSE;
2035 case LVN_INSERTITEM:
2036 TRACE("-- LVN_INSERTITEM (STUB)%p\n", this);
2037 break;
2038 case LVN_ITEMACTIVATE:
2039 TRACE("-- LVN_ITEMACTIVATE %p\n", this);
2040 OnStateChange(CDBOSC_SELCHANGE); // browser will get the IDataObject
2041 break;
2042 case LVN_COLUMNCLICK:
2043 m_sortInfo.nHeaderID = lpnmlv->iSubItem;
2046 else
2048 _Sort();
2049 break;
2050 case LVN_GETDISPINFOA:
2051 case LVN_GETDISPINFOW:
2052 TRACE("-- LVN_GETDISPINFO %p\n", this);
2053 pidl = _PidlByItem(lpdi->item);
2054
2055 if (lpdi->item.mask & LVIF_TEXT) /* text requested */
2056 {
2057 if (m_pSF2Parent)
2058 {
2060 if (FAILED_UNEXPECTEDLY(m_pSF2Parent->GetDetailsOf(pidl, lpdi->item.iSubItem, &sd)))
2061 break;
2062
2063 if (lpnmh->code == LVN_GETDISPINFOA)
2064 {
2065 /* shouldn't happen */
2066 NMLVDISPINFOA *lpdiA = (NMLVDISPINFOA *)lpnmh;
2067 StrRetToStrNA( lpdiA->item.pszText, lpdiA->item.cchTextMax, &sd.str, NULL);
2068 TRACE("-- text=%s\n", lpdiA->item.pszText);
2069 }
2070 else /* LVN_GETDISPINFOW */
2071 {
2072 StrRetToStrNW( lpdi->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL);
2073 TRACE("-- text=%s\n", debugstr_w(lpdi->item.pszText));
2074 }
2075 }
2076 else
2077 {
2078 FIXME("no m_pSF2Parent\n");
2079 }
2080 }
2081 if(lpdi->item.mask & LVIF_IMAGE) /* image requested */
2082 {
2084 }
2085 if(lpdi->item.mask & LVIF_STATE)
2086 {
2087 ULONG attributes = SFGAO_HIDDEN;
2088 if (SUCCEEDED(m_pSFParent->GetAttributesOf(1, &pidl, &attributes)))
2089 {
2090 if (attributes & SFGAO_HIDDEN)
2091 lpdi->item.state |= LVIS_CUT;
2092 }
2093 }
2094 lpdi->item.mask |= LVIF_DI_SETITEM;
2095 break;
2096 case LVN_ITEMCHANGED:
2097 TRACE("-- LVN_ITEMCHANGED %p\n", this);
2098 OnStateChange(CDBOSC_SELCHANGE); // browser will get the IDataObject
2100 _DoFolderViewCB(SFVM_SELECTIONCHANGED, NULL/* FIXME */, NULL/* FIXME */);
2101 break;
2102 case LVN_BEGINDRAG:
2103 case LVN_BEGINRDRAG:
2104 TRACE("-- LVN_BEGINDRAG\n");
2105 if (GetSelections())
2106 {
2108 DWORD dwAttributes = SFGAO_CANCOPY | SFGAO_CANLINK;
2109 DWORD dwEffect = DROPEFFECT_MOVE;
2110
2111 if (SUCCEEDED(m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, IID_NULL_PPV_ARG(IDataObject, &pda))))
2112 {
2114
2115 if (SUCCEEDED(m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &dwAttributes)))
2116 dwEffect |= dwAttributes & (SFGAO_CANCOPY | SFGAO_CANLINK);
2117
2119 if (SUCCEEDED(pda->QueryInterface(IID_PPV_ARG(IAsyncOperation, &piaso))))
2120 piaso->SetAsyncMode(TRUE);
2121
2122 DWORD dwEffect2;
2123
2124 m_pSourceDataObject = pda;
2125 m_ptFirstMousePos = params->ptAction;
2128
2129 HIMAGELIST big_icons, small_icons;
2130 Shell_GetImageLists(&big_icons, &small_icons);
2131 PCUITEMID_CHILD pidl = _PidlByItem(params->iItem);
2132 int iIcon = SHMapPIDLToSystemImageListIndex(m_pSFParent, pidl, 0);
2133 POINT ptItem;
2134 m_ListView.GetItemPosition(params->iItem, &ptItem);
2135
2136 ImageList_BeginDrag(big_icons, iIcon, params->ptAction.x - ptItem.x, params->ptAction.y - ptItem.y);
2137 DoDragDrop(pda, this, dwEffect, &dwEffect2);
2139 }
2140 }
2141 break;
2143 {
2144 DWORD dwAttr = SFGAO_CANRENAME;
2145 pidl = _PidlByItem(lpdi->item);
2146
2147 TRACE("-- LVN_BEGINLABELEDITW %p\n", this);
2148
2149 m_pSFParent->GetAttributesOf(1, &pidl, &dwAttr);
2150 if (SFGAO_CANRENAME & dwAttr)
2151 {
2152 HWND hEdit = reinterpret_cast<HWND>(m_ListView.SendMessage(LVM_GETEDITCONTROL));
2154
2155 // smartass-renaming: See CORE-15242
2156 if (!(dwAttr & SFGAO_FOLDER) && (dwAttr & SFGAO_FILESYSTEM) &&
2157 (lpdi->item.mask & LVIF_TEXT) && !SelectExtOnRename())
2158 {
2159 WCHAR szFullPath[MAX_PATH];
2160 PIDLIST_ABSOLUTE pidlFull = ILCombine(m_pidlParent, pidl);
2161 SHGetPathFromIDListW(pidlFull, szFullPath);
2162
2163 if (!SHELL_FS_HideExtension(szFullPath))
2164 {
2165 LPWSTR pszText = lpdi->item.pszText;
2166 LPWSTR pchDotExt = PathFindExtensionW(pszText);
2167 ::PostMessageW(hEdit, EM_SETSEL, 0, pchDotExt - pszText);
2169 }
2170
2171 ILFree(pidlFull);
2172 }
2173
2174 m_isEditing = TRUE;
2175 return FALSE;
2176 }
2177 return TRUE;
2178 }
2179 case LVN_ENDLABELEDITW:
2180 {
2181 TRACE("-- LVN_ENDLABELEDITW %p\n", this);
2183
2184 if (lpdi->item.pszText)
2185 {
2186 HRESULT hr;
2187 LVITEMW lvItem;
2188
2189 pidl = _PidlByItem(lpdi->item);
2190 PITEMID_CHILD pidlNew = NULL;
2191 hr = m_pSFParent->SetNameOf(0, pidl, lpdi->item.pszText, SHGDN_INFOLDER, &pidlNew);
2192
2193 if (SUCCEEDED(hr) && pidlNew)
2194 {
2195 lvItem.mask = LVIF_PARAM|LVIF_IMAGE;
2196 lvItem.iItem = lpdi->item.iItem;
2197 lvItem.iSubItem = 0;
2198 lvItem.lParam = reinterpret_cast<LPARAM>(pidlNew);
2200 m_ListView.SetItem(&lvItem);
2201 m_ListView.Update(lpdi->item.iItem);
2202 return TRUE;
2203 }
2204 }
2205
2206 return FALSE;
2207 }
2208 default:
2209 TRACE("-- %p WM_COMMAND %x unhandled\n", this, lpnmh->code);
2210 break;
2211 }
2212
2213 return 0;
2214}
static BOOL SelectExtOnRename(void)
Definition: CDefView.cpp:1955
#define SFVM_SELECTIONCHANGED
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CDefView.cpp:1822
HRESULT OpenSelectedItems()
Definition: CDefView.cpp:1537
BOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack, INT iTrack, INT dxHotspot, INT dyHotspot)
Definition: imagelist.c:638
#define MAX_PATH
Definition: compat.h:34
HRESULT WINAPI DoDragDrop(IDataObject *pDataObject, IDropSource *pDropSource, DWORD dwOKEffect, DWORD *pdwEffect)
Definition: ole2.c:753
BOOL SHELL_FS_HideExtension(LPCWSTR szPath)
Definition: CFSFolder.cpp:1275
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:929
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:703
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1344
#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:2819
BOOL WINAPI StrRetToStrNA(LPSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
Definition: shellstring.c:54
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
LPARAM lParam
Definition: commctrl.h:3040
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)
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 1200 of file CDefView.cpp.

1201{
1202 HDC hDC = (HDC)wParam;
1203
1204 RECT rc;
1206
1208 {
1209 BITMAP bm;
1210 if (::GetObject(m_viewinfo_data.hbmBack, sizeof(BITMAP), &bm))
1211 {
1212 INT dx = -(::GetScrollPos(m_ListView, SB_HORZ) % bm.bmWidth);
1213 INT dy = -(::GetScrollPos(m_ListView, SB_VERT) % bm.bmHeight);
1214 DrawTileBitmap(hDC, &rc, m_viewinfo_data.hbmBack, bm.bmWidth, bm.bmHeight, dx, dy);
1215 }
1216 }
1217 else
1218 {
1220 }
1221
1222 bHandled = TRUE;
1223
1224 return TRUE;
1225}
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:1179
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 1822 of file CDefView.cpp.

1823{
1824 TRACE("%p\n", this);
1825
1826 /* Tell the browser one of our windows has received the focus. This
1827 should always be done before merging menus (OnActivate merges the
1828 menus) if one of our windows has the focus.*/
1829
1830 m_pShellBrowser->OnViewWindowActive(this);
1832
1833 /* Set the focus to the listview */
1834 m_ListView.SetFocus();
1835
1836 /* Notify the ICommDlgBrowser interface */
1837 OnStateChange(CDBOSC_SETFOCUS);
1838
1839 return 0;
1840}

Referenced by OnNotify().

◆ OnSettingChange()

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

Definition at line 2351 of file CDefView.cpp.

2352{
2353 /* Wallpaper setting affects drop shadows effect */
2354 if (wParam == SPI_SETDESKWALLPAPER || wParam == 0)
2356
2357 return S_OK;
2358}
#define SPI_SETDESKWALLPAPER
Definition: winuser.h:1369

◆ OnShowWindow()

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

Definition at line 1135 of file CDefView.cpp.

1136{
1137 if (m_ListView.IsWindow())
1138 m_ListView.UpdateWindow();
1139 bHandled = FALSE;
1140 return 0;
1141}

◆ OnSize()

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

Definition at line 1723 of file CDefView.cpp.

1724{
1725 WORD wWidth, wHeight;
1726
1727 wWidth = LOWORD(lParam);
1728 wHeight = HIWORD(lParam);
1729
1730 TRACE("%p width=%u height=%u\n", this, wWidth, wHeight);
1731
1732 // WM_SIZE can come before WM_CREATE
1733 if (!m_ListView)
1734 return 0;
1735
1736 /* Resize the ListView to fit our window */
1737 ::MoveWindow(m_ListView, 0, 0, wWidth, wHeight, TRUE);
1738
1740
1743
1744 return 0;
1745}
unsigned short WORD
Definition: ntddk_ex.h:93
#define SFVM_SIZE
Definition: shlobj.h:1330
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)

◆ OnStateChange()

HRESULT CDefView::OnStateChange ( UINT  uFlags)

Definition at line 511 of file CDefView.cpp.

512{
514
515 if (m_pCommDlgBrowser.p != NULL)
516 {
517 TRACE("ICommDlgBrowser::OnStateChange flags=%x\n", uFlags);
518 ret = m_pCommDlgBrowser->OnStateChange(this, uFlags);
519 TRACE("--\n");
520 }
521
522 return ret;
523}

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

◆ OnSysColorChange()

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

Definition at line 1227 of file CDefView.cpp.

1228{
1229 /* Update desktop labels color */
1231
1232 /* Forward WM_SYSCOLORCHANGE to common controls */
1233 return m_ListView.SendMessageW(uMsg, 0, 0);
1234}

◆ OpenSelectedItems()

HRESULT CDefView::OpenSelectedItems ( )

Definition at line 1537 of file CDefView.cpp.

1538{
1539 HMENU hMenu;
1540 UINT uCommand;
1541 HRESULT hResult;
1542
1544 if (m_cidl == 0)
1545 return S_OK;
1546
1547 hResult = OnDefaultCommand();
1548 if (hResult == S_OK)
1549 return hResult;
1550
1551 hMenu = CreatePopupMenu();
1552 if (!hMenu)
1553 return E_FAIL;
1554
1557 MenuCleanup _(pCM, hMenu);
1558 if (FAILED_UNEXPECTEDLY(hResult))
1559 return hResult;
1560
1561 hResult = pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_DEFAULTONLY);
1562 if (FAILED_UNEXPECTEDLY(hResult))
1563 return hResult;
1564
1565 uCommand = GetMenuDefaultItem(hMenu, FALSE, 0);
1566 if (uCommand == (UINT)-1)
1567 {
1568 ERR("GetMenuDefaultItem returned -1\n");
1569 return E_FAIL;
1570 }
1571
1573
1574 return hResult;
1575}
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 3707 of file CDefView.cpp.

3708{
3709 TRACE("(%p)\n", this);
3710
3711 if (fEscapePressed)
3712 return DRAGDROP_S_CANCEL;
3713 else if (!(grfKeyState & MK_LBUTTON) && !(grfKeyState & MK_RBUTTON))
3714 return DRAGDROP_S_DROP;
3715 else
3716 return S_OK;
3717}
#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 3781 of file CDefView.cpp.

3782{
3783 if (IsEqualIID(guidService, SID_IShellBrowser))
3784 return m_pShellBrowser->QueryInterface(riid, ppvObject);
3785 else if(IsEqualIID(guidService, SID_IFolderView))
3786 return QueryInterface(riid, ppvObject);
3787
3788 return E_NOINTERFACE;
3789}
#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 3225 of file CDefView.cpp.

3226{
3227 FIXME("(%p)->(%p(%s) 0x%08x %p %p\n",
3228 this, pguidCmdGroup, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
3229
3230 if (!prgCmds)
3231 return E_INVALIDARG;
3232
3233 for (UINT i = 0; i < cCmds; i++)
3234 {
3235 FIXME("\tprgCmds[%d].cmdID = %d\n", i, prgCmds[i].cmdID);
3236 prgCmds[i].cmdf = 0;
3237 }
3238
3239 return OLECMDERR_E_UNKNOWNGROUP;
3240}

◆ QuerySupport()

HRESULT STDMETHODCALLTYPE CDefView::QuerySupport ( UINT support)
override

Definition at line 3213 of file CDefView.cpp.

3214{
3215 TRACE("(%p)->(%p)\n", this, support);
3216 return S_OK;
3217}

◆ Rearrange()

HRESULT STDMETHODCALLTYPE CDefView::Rearrange ( LPARAM  sort)
override

Definition at line 3009 of file CDefView.cpp.

3010{
3011 FIXME("(%p)->(%ld) stub\n", this, sort);
3012 return E_NOTIMPL;
3013}

◆ Refresh()

HRESULT WINAPI CDefView::Refresh ( )
override

Implements IShellView.

Definition at line 2483 of file CDefView.cpp.

2484{
2485 TRACE("(%p)\n", this);
2486
2488
2490 FillList();
2491
2492 return S_OK;
2493}

Referenced by OnChangeNotify(), and OnCommand().

◆ RefreshObject()

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

Definition at line 3095 of file CDefView.cpp.

3096{
3097 FIXME("(%p)->(%p %p) stub\n", this, pidl, item);
3098 return E_NOTIMPL;
3099}

◆ RemoveObject()

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

Definition at line 3052 of file CDefView.cpp.

3053{
3054 TRACE("(%p)->(%p %p)\n", this, pidl, item);
3055
3056 if (!m_ListView)
3057 {
3058 ERR("!m_ListView\n");
3059 return E_FAIL;
3060 }
3061
3062 if (pidl)
3063 {
3066 }
3067 else
3068 {
3069 *item = 0;
3071 }
3072
3073 return S_OK;
3074}

◆ SaveViewState()

HRESULT WINAPI CDefView::SaveViewState ( )
override

Implements IShellView.

Definition at line 2568 of file CDefView.cpp.

2569{
2570 FIXME("(%p) stub\n", this);
2571
2572 return S_OK;
2573}

◆ Select()

HRESULT STDMETHODCALLTYPE CDefView::Select ( UINT  flags)
override

Definition at line 3207 of file CDefView.cpp.

3208{
3209 FIXME("(%p)->(%d) stub\n", this, flags);
3210 return E_NOTIMPL;
3211}

◆ SelectAndPositionItem()

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

Definition at line 3001 of file CDefView.cpp.

3002{
3003 FIXME("(%p)->(%p, %u, %p) stub\n", this, item, flags, point);
3004 return E_NOTIMPL;
3005}
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 2877 of file CDefView.cpp.

2878{
2880
2881 /* Reset the selection */
2883
2884 int lvIndex;
2885 for (UINT i = 0 ; i < m_cidl; i++)
2886 {
2887 lvIndex = LV_FindItemByPidl(apidl[i]);
2888 if (lvIndex != -1)
2889 {
2890 SelectItem(lvIndex, dwFlags);
2891 m_ListView.SetItemPosition(lvIndex, &apt[i]);
2892 }
2893 }
2894
2895 return S_OK;
2896}
_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 2846 of file CDefView.cpp.

2847{
2848 LVITEMW lvItem;
2849
2850 TRACE("(%p)->(%d, %x)\n", this, iItem, dwFlags);
2851
2852 lvItem.state = 0;
2853 lvItem.stateMask = LVIS_SELECTED;
2854
2855 if (dwFlags & SVSI_ENSUREVISIBLE)
2856 m_ListView.EnsureVisible(iItem, 0);
2857
2858 /* all items */
2859 if (dwFlags & SVSI_DESELECTOTHERS)
2861
2862 /* this item */
2863 if (dwFlags & SVSI_SELECT)
2864 lvItem.state |= LVIS_SELECTED;
2865
2866 if (dwFlags & SVSI_FOCUSED)
2867 lvItem.stateMask |= LVIS_FOCUSED;
2868
2869 m_ListView.SetItemState(iItem, lvItem.state, lvItem.stateMask);
2870
2871 if ((dwFlags & SVSI_EDIT) == SVSI_EDIT)
2872 m_ListView.EditLabel(iItem);
2873
2874 return S_OK;
2875}
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 2575 of file CDefView.cpp.

2576{
2577 int i;
2578
2579 TRACE("(%p)->(pidl=%p, 0x%08x) stub\n", this, pidl, uFlags);
2580
2581 if (!m_ListView)
2582 {
2583 ERR("!m_ListView\n");
2584 return E_FAIL;
2585 }
2586
2587 i = LV_FindItemByPidl(pidl);
2588 if (i == -1)
2589 return S_OK;
2590
2591 LVITEMW lvItem = {0};
2592 lvItem.mask = LVIF_STATE;
2594
2595 while (m_ListView.GetItem(&lvItem))
2596 {
2597 if (lvItem.iItem == i)
2598 {
2599 if (uFlags & SVSI_SELECT)
2600 lvItem.state |= LVIS_SELECTED;
2601 else
2602 lvItem.state &= ~LVIS_SELECTED;
2603
2604 if (uFlags & SVSI_FOCUSED)
2605 lvItem.state |= LVIS_FOCUSED;
2606 else
2607 lvItem.state &= ~LVIS_FOCUSED;
2608 }
2609 else
2610 {
2611 if (uFlags & SVSI_DESELECTOTHERS)
2612 {
2613 lvItem.state &= ~LVIS_SELECTED;
2614 }
2615 lvItem.state &= ~LVIS_FOCUSED;
2616 }
2617
2618 m_ListView.SetItem(&lvItem);
2619 lvItem.iItem++;
2620 }
2621
2622 if (uFlags & SVSI_ENSUREVISIBLE)
2624
2625 if((uFlags & SVSI_EDIT) == SVSI_EDIT)
2627
2628 return S_OK;
2629}

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 3750 of file CDefView.cpp.

3751{
3752 FIXME("partial stub: %p 0x%08x 0x%08x %p\n", this, aspects, advf, pAdvSink);
3753
3754 // FIXME: we set the AdviseSink, but never use it to send any advice
3755 m_pAdvSink = pAdvSink;
3756 m_dwAspects = aspects;
3757 m_dwAdvf = advf;
3758
3759 return S_OK;
3760}

◆ SetAutomationObject()

HRESULT STDMETHODCALLTYPE CDefView::SetAutomationObject ( IDispatch disp)
override

Definition at line 3219 of file CDefView.cpp.

3220{
3221 FIXME("(%p)->(%p) stub\n", this, disp);
3222 return E_NOTIMPL;
3223}

◆ SetCallback()

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

Definition at line 3198 of file CDefView.cpp.

3199{
3200 if (old_cb)
3201 *old_cb = m_pShellFolderViewCB.Detach();
3202
3203 m_pShellFolderViewCB = new_cb;
3204 return S_OK;
3205}
T * Detach()
Definition: atlcomcli.h:186

◆ SetClipboard()

HRESULT STDMETHODCALLTYPE CDefView::SetClipboard ( BOOL  move)
override

Definition at line 3180 of file CDefView.cpp.

3181{
3182 FIXME("(%p)->(%d) stub\n", this, move);
3183 return E_NOTIMPL;
3184}

◆ SetCurrentViewMode()

HRESULT STDMETHODCALLTYPE CDefView::SetCurrentViewMode ( UINT  ViewMode)
override

Implements IFolderView.

Definition at line 2692 of file CDefView.cpp.

2693{
2694 DWORD dwStyle;
2695 TRACE("(%p)->(%u), stub\n", this, ViewMode);
2696
2697 /* It's not redundant to check FVM_AUTO because it's a (UINT)-1 */
2698 if (((INT)ViewMode < FVM_FIRST || (INT)ViewMode > FVM_LAST) && ((INT)ViewMode != FVM_AUTO))
2699 return E_INVALIDARG;
2700
2701 /* Windows before Vista uses LVM_SETVIEW and possibly
2702 LVM_SETEXTENDEDLISTVIEWSTYLE to set the style of the listview,
2703 while later versions seem to accomplish this through other
2704 means. */
2705 switch (ViewMode)
2706 {
2707 case FVM_ICON:
2708 dwStyle = LVS_ICON;
2709 break;
2710 case FVM_DETAILS:
2711 dwStyle = LVS_REPORT;
2712 break;
2713 case FVM_SMALLICON:
2714 dwStyle = LVS_SMALLICON;
2715 break;
2716 case FVM_LIST:
2717 dwStyle = LVS_LIST;
2718 break;
2719 default:
2720 {
2721 FIXME("ViewMode %d not implemented\n", ViewMode);
2722 dwStyle = LVS_LIST;
2723 break;
2724 }
2725 }
2726
2727 m_ListView.ModifyStyle(LVS_TYPEMASK, dwStyle);
2728
2729 /* This will not necessarily be the actual mode set above.
2730 This mimics the behavior of Windows XP. */
2731 m_FolderSettings.ViewMode = ViewMode;
2732
2733 return S_OK;
2734}
@ FVM_AUTO
Definition: shobjidl.idl:667

◆ SetItemPos()

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

Definition at line 3168 of file CDefView.cpp.

3169{
3170 FIXME("(%p)->(%p %p) stub\n", this, pidl, pt);
3171 return E_NOTIMPL;
3172}

◆ SetObjectCount()

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

Definition at line 3083 of file CDefView.cpp.

3084{
3085 FIXME("(%p)->(%d %x) stub\n", this, count, flags);
3086 return E_NOTIMPL;
3087}

◆ SetPoints()

HRESULT STDMETHODCALLTYPE CDefView::SetPoints ( IDataObject obj)
override

Definition at line 3186 of file CDefView.cpp.

3187{
3188 FIXME("(%p)->(%p) stub\n", this, obj);
3189 return E_NOTIMPL;
3190}

◆ SetRedraw()

HRESULT STDMETHODCALLTYPE CDefView::SetRedraw ( BOOL  redraw)
override

Definition at line 3101 of file CDefView.cpp.

3102{
3103 TRACE("(%p)->(%d)\n", this, redraw);
3104 if (m_ListView)
3106 return S_OK;
3107}
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 2438 of file CDefView.cpp.

2439{
2440 if (m_isEditing)
2441 return S_FALSE;
2442
2443 if (lpmsg->message >= WM_KEYFIRST && lpmsg->message <= WM_KEYLAST)
2444 {
2445 if (::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg) != 0)
2446 return S_OK;
2447
2448 TRACE("-- key=0x%04lx\n", lpmsg->wParam);
2449 }
2450
2451 return m_pShellBrowser->TranslateAcceleratorSB(lpmsg, 0);
2452}
#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 2460 of file CDefView.cpp.

2461{
2462 TRACE("(%p)->(state=%x)\n", this, uState);
2463
2464 // don't do anything if the state isn't changing
2465 if (m_uState == uState)
2466 return S_OK;
2467
2468 // OnActivate handles the menu merging and internal state
2469 DoActivate(uState);
2470
2471 // only do this if we are active
2472 if (uState != SVUIA_DEACTIVATE)
2473 {
2475
2476 // Set the text for the status bar
2478 }
2479
2480 return S_OK;
2481}

Referenced by DestroyViewWindow().

◆ Unfreeze()

HRESULT WINAPI CDefView::Unfreeze ( DWORD  dwFreeze)
override

Implements IViewObject.

Definition at line 3744 of file CDefView.cpp.

3745{
3746 FIXME("Stub: this=%p\n", this);
3747 return E_NOTIMPL;
3748}

◆ UpdateListColors()

void CDefView::UpdateListColors ( )

Definition at line 727 of file CDefView.cpp.

728{
730 {
731 /* Check if drop shadows option is enabled */
732 BOOL bDropShadow = FALSE;
733 DWORD cbDropShadow = sizeof(bDropShadow);
734
735 /*
736 * The desktop ListView always take the default desktop colours, by
737 * remaining transparent and letting user32/win32k paint itself the
738 * desktop background color, if any.
739 */
741
742 SHGetValueW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
743 L"ListviewShadow", NULL, &bDropShadow, &cbDropShadow);
744 if (bDropShadow)
745 {
746 /* Set the icon background transparent */
748 m_ListView.SetTextColor(RGB(255, 255, 255));
749 m_ListView.SetExtendedListViewStyle(LVS_EX_TRANSPARENTSHADOWTEXT, LVS_EX_TRANSPARENTSHADOWTEXT);
750 }
751 else
752 {
753 /* Set the icon background as the same colour as the desktop */
755 m_ListView.SetTextBkColor(crDesktop);
756 if (GetRValue(crDesktop) + GetGValue(crDesktop) + GetBValue(crDesktop) > 128 * 3)
757 m_ListView.SetTextColor(RGB(0, 0, 0));
758 else
759 m_ListView.SetTextColor(RGB(255, 255, 255));
760 m_ListView.SetExtendedListViewStyle(0, LVS_EX_TRANSPARENTSHADOWTEXT);
761 }
762 }
763 else
764 {
765 // text background color
767 m_ListView.SetTextBkColor(clrTextBack);
768
769 // text color
770 COLORREF clrText;
772 clrText = m_viewinfo_data.clrText;
773 else
774 clrText = GetSysColor(COLOR_WINDOWTEXT);
775
776 m_ListView.SetTextColor(clrText);
777
778 // Background is painted by the parent via WM_PRINTCLIENT
779 m_ListView.SetExtendedListViewStyle(LVS_EX_TRANSPARENTBKGND, LVS_EX_TRANSPARENTBKGND);
780 }
781}
BOOL SetTextBkColor(COLORREF cr)
Definition: rosctrls.h:32
BOOL SetTextColor(COLORREF cr)
Definition: rosctrls.h:42
BOOL SetBkColor(COLORREF cr)
Definition: rosctrls.h:37
#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 3089 of file CDefView.cpp.

3090{
3091 FIXME("(%p)->(%p %p %p) stub\n", this, pidl_old, pidl_new, item);
3092 return E_NOTIMPL;
3093}

◆ UpdateStatusbar()

void CDefView::UpdateStatusbar ( )

Definition at line 549 of file CDefView.cpp.

550{
551 WCHAR szFormat[MAX_PATH] = {0};
552 WCHAR szPartText[MAX_PATH] = {0};
553 UINT cSelectedItems;
554
555 if (!m_ListView)
556 return;
557
558 cSelectedItems = m_ListView.GetSelectedCount();
559 if (cSelectedItems)
560 {
562 StringCchPrintfW(szPartText, _countof(szPartText), szFormat, cSelectedItems);
563 }
564 else
565 {
566 LoadStringW(shell32_hInstance, IDS_OBJECTS, szFormat, _countof(szFormat));
567 StringCchPrintfW(szPartText, _countof(szPartText), szFormat, m_ListView.GetItemCount());
568 }
569
570 LRESULT lResult;
571 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 0, (LPARAM)szPartText, &lResult);
572
573 // Don't bother with the extra processing if we only have one StatusBar part
575 {
576 DWORD uTotalFileSize = 0;
577 WORD uFileFlags = LVNI_ALL;
578 LPARAM pIcon = NULL;
579 INT nItem = -1;
580 bool bIsOnlyFoldersSelected = true;
581
582 // If we have something selected then only count selected file sizes
583 if (cSelectedItems)
584 {
585 uFileFlags = LVNI_SELECTED;
586 }
587
588 while ((nItem = m_ListView.GetNextItem(nItem, uFileFlags)) >= 0)
589 {
590 PCUITEMID_CHILD pidl = _PidlByItem(nItem);
591
592 uTotalFileSize += _ILGetFileSize(pidl, NULL, 0);
593
594 if (!_ILIsFolder(pidl))
595 {
596 bIsOnlyFoldersSelected = false;
597 }
598 }
599
600 // Don't show the file size text if there is 0 bytes in the folder
601 // OR we only have folders selected
602 if ((cSelectedItems && !bIsOnlyFoldersSelected) || uTotalFileSize)
603 {
604 StrFormatByteSizeW(uTotalFileSize, szPartText, _countof(szPartText));
605 }
606 else
607 {
608 *szPartText = 0;
609 }
610
611 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 1, (LPARAM)szPartText, &lResult);
612
613 // If we are in a Recycle Bin then show no text for the location part
615 {
616 LoadStringW(shell32_hInstance, IDS_MYCOMPUTER, szPartText, _countof(szPartText));
617 pIcon = (LPARAM)m_hMyComputerIcon;
618 }
619
620 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETICON, 2, pIcon, &lResult);
621 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 2, (LPARAM)szPartText, &lResult);
622 }
623}
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
Definition: string.c:2380
DWORD _ILGetFileSize(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
Definition: pidl.c:2481
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
Definition: pidl.c:1991
BOOL _ILIsBitBucket(LPCITEMIDLIST pidl)
Definition: pidl.c:1957
#define SB_SETICON
Definition: commctrl.h:1961
#define SB_SETTEXT
Definition: commctrl.h:1949
#define LVNI_ALL
Definition: commctrl.h:2422
#define IDS_OBJECTS_SELECTED
Definition: shresdef.h:280
#define IDS_MYCOMPUTER
Definition: shresdef.h:276
#define IDS_OBJECTS
Definition: shresdef.h:279
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 OnCreate(), OnNotify(), OnSize(), and UIActivate().

◆ WindowProc()

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

Definition at line 352 of file CDefView.cpp.

353 {
354 CDefView *pThis;
356
357 // Must hold a reference during message handling
358 pThis = reinterpret_cast<CDefView *>(hWnd);
359 pThis->AddRef();
361 pThis->Release();
362 return result;
363 }
HWND hWnd
Definition: settings.c:17

Referenced by GetWindowProc().

Member Data Documentation

◆ m_apidl

◆ m_bmenuBarInitialized

BOOL CDefView::m_bmenuBarInitialized
private

Definition at line 123 of file CDefView.cpp.

Referenced by DoActivate().

◆ m_Category

CLSID CDefView::m_Category
private

Definition at line 150 of file CDefView.cpp.

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

◆ m_cidl

◆ m_cScrollDelay

UINT CDefView::m_cScrollDelay
private

Definition at line 139 of file CDefView.cpp.

Referenced by drag_notify_subitem().

◆ m_Destroyed

BOOL CDefView::m_Destroyed
private

Definition at line 151 of file CDefView.cpp.

Referenced by OnDestroy().

◆ m_dwAdvf

DWORD CDefView::m_dwAdvf
private

Definition at line 132 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_dwAspects

DWORD CDefView::m_dwAspects
private

Definition at line 131 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_FolderSettings

◆ m_grfKeyState

DWORD CDefView::m_grfKeyState
private

Definition at line 142 of file CDefView.cpp.

Referenced by drag_notify_subitem(), and Drop().

◆ m_hAccel

HACCEL CDefView::m_hAccel
private

Definition at line 130 of file CDefView.cpp.

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

◆ m_hContextMenu

HMENU CDefView::m_hContextMenu
private

Definition at line 122 of file CDefView.cpp.

Referenced by OnContextMenu(), and OnInitMenuPopup().

◆ m_hMenu

◆ m_hMenuArrangeModes

HMENU CDefView::m_hMenuArrangeModes
private

Definition at line 120 of file CDefView.cpp.

Referenced by DestroyViewWindow(), FillArrangeAsMenu(), and InitList().

◆ m_hMenuViewModes

HMENU CDefView::m_hMenuViewModes
private

Definition at line 121 of file CDefView.cpp.

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

◆ m_hMyComputerIcon

HICON CDefView::m_hMyComputerIcon
private

Definition at line 154 of file CDefView.cpp.

Referenced by CDefView(), and UpdateStatusbar().

◆ m_hNotify

ULONG CDefView::m_hNotify
private

Definition at line 129 of file CDefView.cpp.

Referenced by OnCreate(), and OnDestroy().

◆ m_hWndParent

HWND CDefView::m_hWndParent
private

Definition at line 117 of file CDefView.cpp.

Referenced by CreateViewWindow3(), and Exec().

◆ m_iDragOverItem

LONG CDefView::m_iDragOverItem
private

Definition at line 138 of file CDefView.cpp.

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

◆ m_isEditing

BOOL CDefView::m_isEditing
private

Definition at line 147 of file CDefView.cpp.

Referenced by OnNotify(), and TranslateAccelerator().

◆ m_isParentFolderSpecial

BOOL CDefView::m_isParentFolderSpecial
private

Definition at line 148 of file CDefView.cpp.

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

◆ m_ListView

◆ m_pAdvSink

CComPtr<IAdviseSink> CDefView::m_pAdvSink
private

Definition at line 133 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_pCM

CComPtr<IContextMenu> CDefView::m_pCM
private

Definition at line 144 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 137 of file CDefView.cpp.

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

◆ m_pCurDropTarget

CComPtr<IDropTarget> CDefView::m_pCurDropTarget
private

Definition at line 136 of file CDefView.cpp.

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

◆ m_pFileMenu

CComPtr<IContextMenu> CDefView::m_pFileMenu
private

Definition at line 145 of file CDefView.cpp.

Referenced by FillFileMenu(), and OnCommand().

◆ m_pidlParent

PIDLIST_ABSOLUTE CDefView::m_pidlParent
private

Definition at line 127 of file CDefView.cpp.

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

◆ m_pSF2Parent

CComPtr<IShellFolder2> CDefView::m_pSF2Parent
private

Definition at line 111 of file CDefView.cpp.

Referenced by FillList(), GetItemObject(), Initialize(), InitList(), and OnNotify().

◆ m_pSFParent

◆ m_pShellBrowser

◆ m_pShellFolderViewCB

CComPtr<IShellFolderViewCB> CDefView::m_pShellFolderViewCB
private

Definition at line 112 of file CDefView.cpp.

Referenced by _DoFolderViewCB(), and SetCallback().

◆ m_pShellFolderViewDual

CComPtr<IShellFolderViewDual> CDefView::m_pShellFolderViewDual
private

Definition at line 115 of file CDefView.cpp.

Referenced by GetItemObject().

◆ m_pSourceDataObject

CComPtr<IDataObject> CDefView::m_pSourceDataObject
private

Definition at line 135 of file CDefView.cpp.

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

◆ m_ptFirstMousePos

POINT CDefView::m_ptFirstMousePos
private

Definition at line 141 of file CDefView.cpp.

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

◆ m_ptLastMousePos

POINT CDefView::m_ptLastMousePos
private

Definition at line 140 of file CDefView.cpp.

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

◆ m_sortInfo

LISTVIEW_SORT_INFO CDefView::m_sortInfo
private

◆ m_uState

UINT CDefView::m_uState
private

Definition at line 124 of file CDefView.cpp.

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

◆ m_viewinfo_data

SFVM_CUSTOMVIEWINFO_DATA CDefView::m_viewinfo_data
private

Definition at line 152 of file CDefView.cpp.

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


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