ReactOS 0.4.15-dev-8064-gdaf8068
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 111 of file CDefView.cpp.

Constructor & Destructor Documentation

◆ CDefView()

CDefView::CDefView ( )

Definition at line 434 of file CDefView.cpp.

434 :
435 m_ListView(),
437 m_hMenu(NULL),
442 m_uState(0),
443 m_cidl(0),
444 m_apidl(NULL),
446 m_hNotify(0),
447 m_hAccel(NULL),
448 m_dwAspects(0),
449 m_dwAdvf(0),
455{
463
465}
#define shell32_hInstance
HMENU m_hMenu
Definition: CDefView.cpp:133
HMENU m_hMenuArrangeModes
Definition: CDefView.cpp:134
HWND m_hWndParent
Definition: CDefView.cpp:131
DWORD m_dwAdvf
Definition: CDefView.cpp:146
DWORD m_dwAspects
Definition: CDefView.cpp:145
BOOL m_isParentFolderSpecial
Definition: CDefView.cpp:162
UINT m_cScrollDelay
Definition: CDefView.cpp:153
LISTVIEW_SORT_INFO m_sortInfo
Definition: CDefView.cpp:142
PIDLIST_ABSOLUTE m_pidlParent
Definition: CDefView.cpp:141
HMENU m_hContextMenu
Definition: CDefView.cpp:136
BOOL m_Destroyed
Definition: CDefView.cpp:165
PCUITEMID_CHILD * m_apidl
Definition: CDefView.cpp:140
CLSID m_Category
Definition: CDefView.cpp:164
HICON m_hMyComputerIcon
Definition: CDefView.cpp:168
BOOL m_bmenuBarInitialized
Definition: CDefView.cpp:137
UINT m_cidl
Definition: CDefView.cpp:139
UINT m_uState
Definition: CDefView.cpp:138
BOOL m_isEditing
Definition: CDefView.cpp:161
POINT m_ptLastMousePos
Definition: CDefView.cpp:154
ULONG m_hNotify
Definition: CDefView.cpp:143
LONG m_iDragOverItem
Definition: CDefView.cpp:152
HMENU m_hMenuViewModes
Definition: CDefView.cpp:135
HACCEL m_hAccel
Definition: CDefView.cpp:144
FOLDERSETTINGS m_FolderSettings
Definition: CDefView.cpp:132
CListView m_ListView
Definition: CDefView.cpp:130
SFVM_CUSTOMVIEWINFO_DATA m_viewinfo_data
Definition: CDefView.cpp:166
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define IDI_SHELL_COMPUTER_DESKTOP
Definition: shresdef.h:645
#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:2106

◆ ~CDefView()

CDefView::~CDefView ( )

Definition at line 467 of file CDefView.cpp.

468{
469 TRACE(" destroying IShellView(%p)\n", this);
470
472
474 {
477 }
478
479 if (m_hWnd)
480 {
482 }
483
485}
#define SFVM_VIEWRELEASE
HWND m_hWnd
Definition: atlwin.h:273
STDMETHOD() DestroyViewWindow() override
Definition: CDefView.cpp:2521
HRESULT _DoFolderViewCB(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CDefView.cpp:3838
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 1811 of file CDefView.cpp.

1812{
1813 if (!GetSelections())
1814 return;
1815
1816 SFGAOF rfg = SFGAO_CANCOPY | SFGAO_CANMOVE | SFGAO_FILESYSTEM;
1817 HRESULT hr = m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &rfg);
1819 return;
1820
1821 if (!bCopy && !(rfg & SFGAO_CANMOVE))
1822 return;
1823 if (bCopy && !(rfg & SFGAO_CANCOPY))
1824 return;
1825
1827 hr = m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, IID_IContextMenu, 0, (void **)&pCM);
1829 return;
1830
1831 InvokeContextMenuCommand(pCM, (bCopy ? "copyto" : "moveto"), NULL);
1832}
CComPtr< IShellFolder > m_pSFParent
Definition: CDefView.cpp:124
HRESULT InvokeContextMenuCommand(CComPtr< IContextMenu > &pCM, LPCSTR lpVerb, POINT *pt=NULL)
Definition: CDefView.cpp:1521
UINT GetSelections()
Definition: CDefView.cpp:1491
#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 3838 of file CDefView.cpp.

3839{
3841
3843 {
3844 hr = m_pShellFolderViewCB->MessageSFVCB(uMsg, wParam, lParam);
3845 }
3846
3847 return hr;
3848}
CComPtr< IShellFolderViewCB > m_pShellFolderViewCB
Definition: CDefView.cpp:126
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 3491 of file CDefView.cpp.

3492{
3493 RECT rcBound;
3494 INT i, nCount = m_ListView.GetItemCount();
3495 DWORD dwSpacing;
3496 INT dx, dy;
3497 BOOL bSmall = ((m_ListView.GetStyle() & LVS_TYPEMASK) != LVS_ICON);
3498
3499 // FIXME: LVM_GETORIGIN is broken. See CORE-17266
3500 pt.x += m_ListView.GetScrollPos(SB_HORZ);
3501 pt.y += m_ListView.GetScrollPos(SB_VERT);
3502
3503 if (m_ListView.GetStyle() & LVS_ALIGNLEFT)
3504 {
3505 // vertically
3506 for (i = 0; i < nCount; ++i)
3507 {
3508 dwSpacing = ListView_GetItemSpacing(m_ListView, bSmall);
3509 dx = LOWORD(dwSpacing);
3510 dy = HIWORD(dwSpacing);
3512 rcBound.right = rcBound.left + dx;
3513 rcBound.bottom = rcBound.top + dy;
3514 if (pt.x < rcBound.right && pt.y < (rcBound.top + rcBound.bottom) / 2)
3515 {
3516 return i;
3517 }
3518 }
3519 for (i = nCount - 1; i >= 0; --i)
3520 {
3522 if (rcBound.left < pt.x && rcBound.top < pt.y)
3523 {
3524 return i + 1;
3525 }
3526 }
3527 }
3528 else
3529 {
3530 // horizontally
3531 for (i = 0; i < nCount; ++i)
3532 {
3533 dwSpacing = ListView_GetItemSpacing(m_ListView, bSmall);
3534 dx = LOWORD(dwSpacing);
3535 dy = HIWORD(dwSpacing);
3537 rcBound.right = rcBound.left + dx;
3538 rcBound.bottom = rcBound.top + dy;
3539 if (pt.y < rcBound.bottom && pt.x < rcBound.left)
3540 {
3541 return i;
3542 }
3543 if (pt.y < rcBound.bottom && pt.x < rcBound.right)
3544 {
3545 return i + 1;
3546 }
3547 }
3548 for (i = nCount - 1; i >= 0; --i)
3549 {
3551 if (rcBound.left < pt.x && rcBound.top < pt.y)
3552 {
3553 return i + 1;
3554 }
3555 }
3556 }
3557
3558 return nCount;
3559}
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 3587 of file CDefView.cpp.

3588{
3589 // Get the handle for the status bar
3590 HWND fStatusBar;
3591 m_pShellBrowser->GetControlWindow(FCW_STATUS, &fStatusBar);
3592
3593 // Get the size of our status bar
3594 RECT statusBarSize;
3595 ::GetWindowRect(fStatusBar, &statusBarSize);
3596
3597 // Resize the status bar
3598 _HandleStatusBarResize(statusBarSize.right - statusBarSize.left);
3599}
CComPtr< IShellBrowser > m_pShellBrowser
Definition: CDefView.cpp:127
void _HandleStatusBarResize(int width)
Definition: CDefView.cpp:3561
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)

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

◆ _GetSnapToGrid()

HRESULT CDefView::_GetSnapToGrid ( )
private

Definition at line 2860 of file CDefView.cpp.

2861{
2862 DWORD dwExStyle = (DWORD)m_ListView.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
2863 return ((dwExStyle & LVS_EX_SNAPTOGRID) ? S_OK : S_FALSE);
2864}
#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 3561 of file CDefView.cpp.

3562{
3563 LRESULT lResult;
3564
3566 {
3567 int nPartArray[] = {-1};
3568 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETPARTS, _countof(nPartArray), (LPARAM)nPartArray, &lResult);
3569 return;
3570 }
3571
3572 int nFileSizePartLength = 125;
3573 const int nLocationPartLength = 150;
3574 const int nRightPartsLength = nFileSizePartLength + nLocationPartLength;
3575 int nObjectsPartLength = nWidth - nRightPartsLength;
3576
3577 // If the window is small enough just divide each part into thirds
3578 // to match the behavior of Windows Server 2003
3579 if (nObjectsPartLength <= nLocationPartLength)
3580 nObjectsPartLength = nFileSizePartLength = nWidth / 3;
3581
3582 int nPartArray[] = {nObjectsPartLength, nObjectsPartLength + nFileSizePartLength, -1};
3583
3584 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETPARTS, _countof(nPartArray), (LPARAM)nPartArray, &lResult);
3585}
#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 3811 of file CDefView.cpp.

3812{
3814 HRESULT hr = S_OK;
3815
3816 hr = IUnknown_QueryService(m_pShellBrowser, IID_IExplorerToolbar, IID_PPV_ARG(IExplorerToolbar, &ptb));
3817 if (FAILED(hr))
3818 return hr;
3819
3820 m_Category = CGID_DefViewFrame;
3821
3822 hr = ptb->SetCommandTarget(static_cast<IOleCommandTarget*>(this), &m_Category, 0);
3823 if (FAILED(hr))
3824 return hr;
3825
3826 if (hr == S_FALSE)
3827 return S_OK;
3828
3829#if 0
3830 hr = ptb->AddButtons(&m_Category, buttonsCount, buttons);
3831 if (FAILED(hr))
3832 return hr;
3833#endif
3834
3835 return S_OK;
3836}
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 3615 of file CDefView.cpp.

3616{
3617 // get insertable index from position
3619
3620 // create identity mapping of indexes
3622 INT nCount = m_ListView.GetItemCount();
3623 for (INT i = 0; i < nCount; ++i)
3624 {
3625 array.Add(i);
3626 }
3627
3628 // re-ordering mapping
3629 INT iItem = -1;
3630 while ((iItem = m_ListView.GetNextItem(iItem, LVNI_SELECTED)) >= 0)
3631 {
3632 INT iFrom = iItem, iTo = iPosition;
3633 if (iFrom < iTo)
3634 --iTo;
3635 if (iFrom >= nCount)
3636 iFrom = nCount - 1;
3637 if (iTo >= nCount)
3638 iTo = nCount - 1;
3639
3640 // shift indexes by swapping (like a bucket relay)
3641 if (iFrom < iTo)
3642 {
3643 for (INT i = iFrom; i < iTo; ++i)
3644 {
3645 // swap array[i] and array[i + 1]
3646 INT tmp = array[i];
3647 array[i] = array[i + 1];
3648 array[i + 1] = tmp;
3649 }
3650 }
3651 else
3652 {
3653 for (INT i = iFrom; i > iTo; --i)
3654 {
3655 // swap array[i] and array[i - 1]
3656 INT tmp = array[i];
3657 array[i] = array[i - 1];
3658 array[i - 1] = tmp;
3659 }
3660 }
3661 }
3662
3663 // create mapping (ListView's lParam to index) from array
3665 for (INT i = 0; i < nCount; ++i)
3666 {
3668 map.Add(lParam, i);
3669 }
3670
3671 // finally sort
3673}
static INT CALLBACK SelectionMoveCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
Definition: CDefView.cpp:3604
INT _FindInsertableIndexFromPoint(POINT pt)
Definition: CDefView.cpp:3491
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 901 of file CDefView.cpp.

902{
903 if (!m_ListView)
904 return nullptr;
905 return reinterpret_cast<PCUITEMID_CHILD>(m_ListView.GetItemData(i));
906}
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 908 of file CDefView.cpp.

909{
910 if (!m_ListView)
911 return nullptr;
912 return reinterpret_cast<PCUITEMID_CHILD>(lvItem.lParam);
913}

◆ _Sort()

BOOL CDefView::_Sort ( )
private

Definition at line 867 of file CDefView.cpp.

868{
869 HWND hHeader;
870 HDITEM hColumn;
871
872 if (m_ListView.GetWindowLongPtr(GWL_STYLE) & LVS_NOSORTHEADER)
873 return TRUE;
874
875 hHeader = (HWND)m_ListView.SendMessage(LVM_GETHEADER, 0, 0);
876 ZeroMemory(&hColumn, sizeof(hColumn));
877
878 // If the sorting column changed, remove sorting style from the old column
879 if ( (m_sortInfo.nLastHeaderID != -1) &&
881 {
882 hColumn.mask = HDI_FORMAT;
883 Header_GetItem(hHeader, m_sortInfo.nLastHeaderID, &hColumn);
884 hColumn.fmt &= ~(HDF_SORTUP | HDF_SORTDOWN);
885 Header_SetItem(hHeader, m_sortInfo.nLastHeaderID, &hColumn);
886 }
887
888 /* Set the sorting style to the new column */
889 hColumn.mask = HDI_FORMAT;
890 Header_GetItem(hHeader, m_sortInfo.nHeaderID, &hColumn);
891
892 hColumn.fmt &= (m_sortInfo.bIsAscending ? ~HDF_SORTDOWN : ~HDF_SORTUP );
893 hColumn.fmt |= (m_sortInfo.bIsAscending ? HDF_SORTUP : HDF_SORTDOWN);
894 Header_SetItem(hHeader, m_sortInfo.nHeaderID, &hColumn);
895
896 /* Sort the list, using the current values of nHeaderID and bIsAscending */
899}
static INT CALLBACK ListViewCompareItems(LPARAM lParam1, LPARAM lParam2, LPARAM lpData)
Definition: CDefView.cpp:851
#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 3054 of file CDefView.cpp.

3055{
3056 TRACE("(%p)->(%p %p)\n", this, pidl, item);
3057 if (!m_ListView)
3058 {
3059 ERR("!m_ListView\n");
3060 return E_FAIL;
3061 }
3062 *item = LV_AddItem(pidl);
3063 return (int)*item >= 0 ? S_OK : E_OUTOFMEMORY;
3064}
#define ERR(fmt,...)
Definition: debug.h:113
int LV_AddItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:930
#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 2581 of file CDefView.cpp.

2582{
2583 FIXME("(%p) stub\n", this);
2584
2585 return E_NOTIMPL;
2586}
#define FIXME(fmt,...)
Definition: debug.h:114

◆ ArrangeGrid()

HRESULT STDMETHODCALLTYPE CDefView::ArrangeGrid ( )
override

Definition at line 3041 of file CDefView.cpp.

3042{
3044 return S_OK;
3045}
DWORD SetExtendedListViewStyle(DWORD dw, DWORD dwMask=0)
Definition: rosctrls.h:47

Referenced by OnCommand().

◆ AutoArrange()

HRESULT STDMETHODCALLTYPE CDefView::AutoArrange ( )
override

Definition at line 3047 of file CDefView.cpp.

3048{
3049 m_ListView.ModifyStyle(0, LVS_AUTOARRANGE);
3051 return S_OK;
3052}
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 544 of file CDefView.cpp.

545{
547
548 TRACE("\n");
549
550 if (m_pCommDlgBrowser != NULL)
551 {
552 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_CHECKBUTTON,
554 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_CHECKBUTTON,
556 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON,
558 m_pShellBrowser->SendControlMsg(FCW_TOOLBAR, TB_ENABLEBUTTON,
560 }
561}
CComPtr< ICommDlgBrowser > m_pCommDlgBrowser
Definition: CDefView.cpp:128
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:677
@ FVM_DETAILS
Definition: shobjidl.idl:678
#define FCIDM_TB_SMALLICON
Definition: shresdef.h:857
#define FCIDM_TB_REPORTVIEW
Definition: shresdef.h:858

Referenced by CreateViewWindow3(), and OnCommand().

◆ CheckViewMode()

HRESULT CDefView::CheckViewMode ( HMENU  hmenuView)

Definition at line 1473 of file CDefView.cpp.

1474{
1476 {
1477 UINT iItemFirst = FCIDM_SHVIEW_BIGICON;
1478 UINT iItemLast = iItemFirst + FVM_LAST - FVM_FIRST;
1479 UINT iItem = iItemFirst + m_FolderSettings.ViewMode - FVM_FIRST;
1480 CheckMenuRadioItem(hmenuView, iItemFirst, iItemLast, iItem, MF_BYCOMMAND);
1481 }
1482
1483 return S_OK;
1484}
unsigned int UINT
Definition: ndis.h:50
@ FVM_LAST
Definition: shobjidl.idl:683
@ FVM_FIRST
Definition: shobjidl.idl:675
#define FCIDM_SHVIEW_BIGICON
Definition: shresdef.h:836
#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 2450 of file CDefView.cpp.

2451{
2452 FIXME("(%p) stub\n", this);
2453
2454 return E_NOTIMPL;
2455}

◆ CreateList()

BOOL CDefView::CreateList ( )

Definition at line 643 of file CDefView.cpp.

644{
645 HRESULT hr;
646 DWORD dwStyle, dwExStyle, ListExStyle;
647 UINT ViewMode;
648
649 TRACE("%p\n", this);
650
652 LVS_SHAREIMAGELISTS | LVS_EDITLABELS | LVS_AUTOARRANGE; // FIXME: Why is LVS_AUTOARRANGE here?
653 dwExStyle = WS_EX_CLIENTEDGE;
654 ListExStyle = 0;
655
657 {
659 dwStyle |= LVS_ALIGNLEFT;
660 }
661 else
662 {
663 dwStyle |= LVS_SHOWSELALWAYS; // MSDN says FWF_SHOWSELALWAYS is deprecated, always turn on for folders
665 ListExStyle = LVS_EX_DOUBLEBUFFER;
666 }
667
668 ViewMode = m_FolderSettings.ViewMode;
669 hr = _DoFolderViewCB(SFVM_DEFVIEWMODE, 0, (LPARAM)&ViewMode);
670 if (SUCCEEDED(hr))
671 {
672 if (ViewMode >= FVM_FIRST && ViewMode <= FVM_LAST)
673 m_FolderSettings.ViewMode = ViewMode;
674 else
675 ERR("Ignoring invalid ViewMode from SFVM_DEFVIEWMODE: %u (was: %u)\n", ViewMode, m_FolderSettings.ViewMode);
676 }
677
679 {
680 case FVM_ICON:
681 dwStyle |= LVS_ICON;
682 break;
683 case FVM_DETAILS:
684 dwStyle |= LVS_REPORT;
685 break;
686 case FVM_SMALLICON:
687 dwStyle |= LVS_SMALLICON;
688 break;
689 case FVM_LIST:
690 dwStyle |= LVS_LIST;
691 break;
692 default:
693 dwStyle |= LVS_LIST;
694 break;
695 }
696
698 dwStyle |= LVS_AUTOARRANGE;
699
701 ListExStyle |= LVS_EX_SNAPTOGRID;
702
704 dwStyle |= LVS_SINGLESEL;
705
707 ListExStyle |= LVS_EX_FULLROWSELECT;
708
711
713 dwStyle |= LVS_NOCOLUMNHEADER;
714
715#if 0
716 // FIXME: Because this is a negative, everyone gets the new flag by default unless they
717 // opt out. This code should be enabled when shell looks like Vista instead of 2003
719 ListExStyle |= LVS_EX_HEADERINALLVIEWS;
720#endif
721
723 dwExStyle &= ~WS_EX_CLIENTEDGE;
724
725 RECT rcListView = {0,0,0,0};
726 m_ListView.Create(m_hWnd, rcListView, L"FolderView", dwStyle, dwExStyle, ID_LISTVIEW);
727
728 if (!m_ListView)
729 return FALSE;
730
732
736
737 /* UpdateShellSettings(); */
738 return TRUE;
739}
#define ID_LISTVIEW
Definition: CDefView.cpp:425
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:639
@ FWF_AUTOARRANGE
Definition: shobjidl.idl:637
@ FWF_ALIGNLEFT
Definition: shobjidl.idl:648
@ FWF_NOSCROLL
Definition: shobjidl.idl:647
@ FWF_NOHEADERINALLVIEWS
Definition: shobjidl.idl:661
@ FWF_SINGLECLICKACTIVATE
Definition: shobjidl.idl:652
@ FWF_FULLROWSELECT
Definition: shobjidl.idl:658
@ FWF_NOCLIENTEDGE
Definition: shobjidl.idl:646
@ FWF_SINGLESEL
Definition: shobjidl.idl:643
@ FWF_NOCOLUMNHEADER
Definition: shobjidl.idl:660
@ FWF_DESKTOP
Definition: shobjidl.idl:642
@ FVM_SMALLICON
Definition: shobjidl.idl:676
@ FVM_ICON
Definition: shobjidl.idl:674
#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 2515 of file CDefView.cpp.

2516{
2517 return CreateViewWindow3(psb, lpPrevView, SV3CVW3_DEFAULT,
2518 (FOLDERFLAGS)lpfs->fFlags, (FOLDERFLAGS)lpfs->fFlags, (FOLDERVIEWMODE)lpfs->ViewMode, NULL, prcView, phWnd);
2519}
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:2934
FOLDERFLAGS
Definition: shobjidl.idl:636
FOLDERVIEWMODE
Definition: shobjidl.idl:672

◆ CreateViewWindow2()

HRESULT STDMETHODCALLTYPE CDefView::CreateViewWindow2 ( LPSV2CVW2_PARAMS  view_params)
override

Implements IShellView2.

Definition at line 2927 of file CDefView.cpp.

2928{
2929 return CreateViewWindow3(view_params->psbOwner, view_params->psvPrev,
2930 SV3CVW3_DEFAULT, (FOLDERFLAGS)view_params->pfs->fFlags, (FOLDERFLAGS)view_params->pfs->fFlags,
2931 (FOLDERVIEWMODE)view_params->pfs->ViewMode, view_params->pvid, view_params->prcView, &view_params->hwndView);
2932}

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

2935{
2936 OLEMENUGROUPWIDTHS omw = { { 0, 0, 0, 0, 0, 0 } };
2937
2938 *hwnd = NULL;
2939
2940 TRACE("(%p)->(shlview=%p shlbrs=%p rec=%p hwnd=%p vmode=%x flags=%x)\n", this, psvPrevious, psb, prcView, hwnd, mode, flags);
2941 if (prcView != NULL)
2942 TRACE("-- left=%i top=%i right=%i bottom=%i\n", prcView->left, prcView->top, prcView->right, prcView->bottom);
2943
2944 /* Validate the Shell Browser */
2945 if (psb == NULL || m_hWnd)
2946 return E_UNEXPECTED;
2947
2948 if (view_flags != SV3CVW3_DEFAULT)
2949 FIXME("unsupported view flags 0x%08x\n", view_flags);
2950
2951 /* Set up the member variables */
2952 m_pShellBrowser = psb;
2955
2956 if (view_id)
2957 {
2958 if (IsEqualIID(*view_id, VID_LargeIcons))
2960 else if (IsEqualIID(*view_id, VID_SmallIcons))
2962 else if (IsEqualIID(*view_id, VID_List))
2964 else if (IsEqualIID(*view_id, VID_Details))
2966 else if (IsEqualIID(*view_id, VID_Thumbnails))
2968 else if (IsEqualIID(*view_id, VID_Tile))
2970 else if (IsEqualIID(*view_id, VID_ThumbStrip))
2972 else
2973 FIXME("Ignoring unrecognized VID %s\n", debugstr_guid(view_id));
2974 }
2975
2976 /* Get our parent window */
2977 m_pShellBrowser->GetWindow(&m_hWndParent);
2978
2979 /* Try to get the ICommDlgBrowserInterface, adds a reference !!! */
2982 {
2983 TRACE("-- CommDlgBrowser\n");
2984 }
2985
2986 RECT rcView = *prcView;
2988 if (m_hWnd == NULL)
2989 return E_FAIL;
2990
2991 *hwnd = m_hWnd;
2992
2993 CheckToolbar();
2994
2995 if (!*hwnd)
2996 return E_FAIL;
2997
2999
3001 UpdateWindow();
3002
3003 if (!m_hMenu)
3004 {
3005 m_hMenu = CreateMenu();
3006 m_pShellBrowser->InsertMenusSB(m_hMenu, &omw);
3007 TRACE("-- after fnInsertMenusSB\n");
3008 }
3009
3010 _MergeToolbar();
3011
3012 return S_OK;
3013}
#define U(x)
Definition: wordpad.c:45
@ Create
Definition: registry.c:563
BOOL UpdateWindow()
Definition: atlwin.h:1345
HRESULT _MergeToolbar()
Definition: CDefView.cpp:3811
void CheckToolbar()
Definition: CDefView.cpp:544
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:680
@ FVM_THUMBNAIL
Definition: shobjidl.idl:679
@ FVM_THUMBSTRIP
Definition: shobjidl.idl:681
_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 2521 of file CDefView.cpp.

2522{
2523 TRACE("(%p)\n", this);
2524
2525 /* Make absolutely sure all our UI is cleaned up */
2527
2528 if (m_hAccel)
2529 {
2530 // MSDN: Accelerator tables loaded from resources are freed automatically when application terminates
2531 m_hAccel = NULL;
2532 }
2533
2535 {
2538 }
2539
2540 if (m_hMenuViewModes)
2541 {
2544 }
2545
2546 if (m_hMenu)
2547 {
2549 m_hMenu = NULL;
2550 }
2551
2552 if (m_ListView)
2553 {
2554 m_ListView.DestroyWindow();
2555 }
2556
2557 if (m_hWnd)
2558 {
2560 DestroyWindow();
2561 }
2562
2565
2566 return S_OK;
2567}
#define SFVM_WINDOWCLOSING
void Release()
Definition: atlcomcli.h:170
BOOL DestroyWindow()
Definition: atlwin.h:462
STDMETHOD() UIActivate(UINT uState) override
Definition: CDefView.cpp:2480
@ SVUIA_DEACTIVATE
Definition: shobjidl.idl:748
BOOL WINAPI DestroyMenu(_In_ HMENU)

Referenced by ~CDefView().

◆ DoActivate()

void CDefView::DoActivate ( UINT  uState)

Definition at line 1777 of file CDefView.cpp.

1778{
1779 TRACE("%p uState=%x\n", this, uState);
1780
1781 // don't do anything if the state isn't really changing
1782 if (m_uState == uState)
1783 {
1784 return;
1785 }
1786
1787 if (uState == SVUIA_DEACTIVATE)
1788 {
1789 OnDeactivate();
1790 }
1791 else
1792 {
1794 {
1795 FillEditMenu();
1796 FillViewMenu();
1797 m_pShellBrowser->SetMenuSB(m_hMenu, 0, m_hWnd);
1799 }
1800
1801 if (SVUIA_ACTIVATE_FOCUS == uState)
1802 {
1803 m_ListView.SetFocus();
1804 }
1805 }
1806
1807 m_uState = uState;
1808 TRACE("--\n");
1809}
HRESULT FillEditMenu()
Definition: CDefView.cpp:1401
void OnDeactivate()
Definition: CDefView.cpp:1766
HRESULT FillViewMenu()
Definition: CDefView.cpp:1418
@ SVUIA_ACTIVATE_FOCUS
Definition: shobjidl.idl:750

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

◆ drag_notify_subitem()

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

Definition at line 3329 of file CDefView.cpp.

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

3445{
3446 if (*pdwEffect == DROPEFFECT_NONE)
3447 return S_OK;
3448
3449 /* Get a hold on the data object for later calls to DragEnter on the sub-folders */
3450 m_pCurDataObject = pDataObject;
3451
3452 HRESULT hr = drag_notify_subitem(grfKeyState, pt, pdwEffect);
3453 if (SUCCEEDED(hr))
3454 {
3455 POINT ptClient = {pt.x, pt.y};
3456 ScreenToClient(&ptClient);
3457 ImageList_DragEnter(m_hWnd, ptClient.x, ptClient.y);
3458 }
3459
3460 return hr;
3461}
HRESULT drag_notify_subitem(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
Definition: CDefView.cpp:3329
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 3471 of file CDefView.cpp.

3472{
3474
3475 if (m_pCurDropTarget)
3476 {
3477 m_pCurDropTarget->DragLeave();
3479 }
3480
3481 if (m_pCurDataObject != NULL)
3482 {
3484 }
3485
3486 m_iDragOverItem = 0;
3487
3488 return S_OK;
3489}
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 3463 of file CDefView.cpp.

3464{
3465 POINT ptClient = {pt.x, pt.y};
3466 ScreenToClient(&ptClient);
3467 ImageList_DragMove(ptClient.x, ptClient.y);
3468 return drag_notify_subitem(grfKeyState, pt, pdwEffect);
3469}
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 3746 of file CDefView.cpp.

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

◆ Drop()

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

Implements IDropTarget.

Definition at line 3675 of file CDefView.cpp.

3676{
3679
3680 if ((IsDropOnSource(NULL) == S_OK) &&
3681 (*pdwEffect & DROPEFFECT_MOVE) &&
3683 {
3684 if (m_pCurDropTarget)
3685 {
3686 m_pCurDropTarget->DragLeave();
3688 }
3689
3690 POINT ptDrop = { pt.x, pt.y };
3691 ::ScreenToClient(m_ListView, &ptDrop);
3693 m_ptLastMousePos = ptDrop;
3694
3696 if (m_ListView.GetStyle() & LVS_AUTOARRANGE)
3697 {
3699 }
3700 else
3701 {
3702 POINT ptItem;
3703 INT iItem = -1;
3704 while ((iItem = m_ListView.GetNextItem(iItem, LVNI_SELECTED)) >= 0)
3705 {
3706 if (m_ListView.GetItemPosition(iItem, &ptItem))
3707 {
3710 m_ListView.SetItemPosition(iItem, &ptItem);
3711 }
3712 }
3713 }
3715 }
3716 else if (m_pCurDropTarget)
3717 {
3718 m_pCurDropTarget->Drop(pDataObject, grfKeyState, pt, pdwEffect);
3720 }
3721
3723 m_iDragOverItem = 0;
3724 return S_OK;
3725}
POINT m_ptFirstMousePos
Definition: CDefView.cpp:155
STDMETHOD() IsDropOnSource(IDropTarget *drop_target) override
Definition: CDefView.cpp:3156
void _MoveSelectionOnAutoArrange(POINT pt)
Definition: CDefView.cpp:3615
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 2474 of file CDefView.cpp.

2475{
2476 FIXME("(%p)\n", this);
2477 return E_NOTIMPL;
2478}

◆ Exec()

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

Implements IOleCommandTarget.

Definition at line 3266 of file CDefView.cpp.

3267{
3268 FIXME("(%p)->(\n\tTarget GUID:%s Command:0x%08x Opt:0x%08x %p %p)\n",
3269 this, debugstr_guid(pguidCmdGroup), nCmdID, nCmdexecopt, pvaIn, pvaOut);
3270
3271 if (!pguidCmdGroup)
3272 return OLECMDERR_E_UNKNOWNGROUP;
3273
3274 if (IsEqualCLSID(*pguidCmdGroup, m_Category))
3275 {
3276 if (nCmdID == FCIDM_SHVIEW_AUTOARRANGE)
3277 {
3278 if (V_VT(pvaIn) != VT_INT_PTR)
3279 return OLECMDERR_E_NOTSUPPORTED;
3280
3282 params.cbSize = sizeof(params);
3283 params.rcExclude = *(RECT*) V_INTREF(pvaIn);
3284
3285 if (m_hMenuViewModes)
3286 {
3287 // Duplicate all but the last two items of the view modes menu
3288 HMENU hmenuViewPopup = CreatePopupMenu();
3289 Shell_MergeMenus(hmenuViewPopup, m_hMenuViewModes, 0, 0, 0xFFFF, 0);
3290 DeleteMenu(hmenuViewPopup, GetMenuItemCount(hmenuViewPopup) - 1, MF_BYPOSITION);
3291 DeleteMenu(hmenuViewPopup, GetMenuItemCount(hmenuViewPopup) - 1, MF_BYPOSITION);
3292 CheckViewMode(hmenuViewPopup);
3293 TrackPopupMenuEx(hmenuViewPopup, TPM_LEFTALIGN | TPM_TOPALIGN, params.rcExclude.left, params.rcExclude.bottom, m_hWndParent, &params);
3294 ::DestroyMenu(hmenuViewPopup);
3295 }
3296
3297 // pvaOut is VT_I4 with value 0x403 (cmd id of the new mode maybe?)
3298 V_VT(pvaOut) = VT_I4;
3299 V_I4(pvaOut) = 0x403;
3300 }
3301 }
3302
3303 if (IsEqualIID(*pguidCmdGroup, CGID_Explorer) &&
3304 (nCmdID == 0x29) &&
3305 (nCmdexecopt == 4) && pvaOut)
3306 return S_OK;
3307
3308 if (IsEqualIID(*pguidCmdGroup, CGID_ShellDocView) &&
3309 (nCmdID == 9) &&
3310 (nCmdexecopt == 0))
3311 return 1;
3312
3313 return OLECMDERR_E_UNKNOWNGROUP;
3314}
HRESULT CheckViewMode(HMENU hmenuView)
Definition: CDefView.cpp:1473
@ 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:841
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 1031 of file CDefView.cpp.

1032{
1033 PITEMID_CHILD pidl = static_cast<PITEMID_CHILD>(ptr);
1034 CDefView *pThis = static_cast<CDefView *>(arg);
1035
1036 // in a commdlg this works as a filemask
1037 if (pThis->IncludeObject(pidl) == S_OK && pThis->m_ListView)
1038 pThis->LV_AddItem(pidl);
1039
1040 SHFree(pidl);
1041 return TRUE;
1042}
HRESULT IncludeObject(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:497
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 1434 of file CDefView.cpp.

1435{
1436 /* We only need to fill this once */
1437 if (GetMenuItemID(hmenuArrange, 0) == FCIDM_SHVIEW_AUTOARRANGE)
1438 {
1439 Shell_MergeMenus(hmenuArrange, m_hMenuArrangeModes, 0, 0, 0xFFFF,0);
1440 }
1441
1442 /* Also check the menu item according to which we sort */
1443 CheckMenuRadioItem(hmenuArrange,
1444 0x30,
1445 0x100,
1446 m_sortInfo.nHeaderID + 0x30,
1447 MF_BYCOMMAND);
1448
1450 {
1453 }
1454 else
1455 {
1458
1459 if (GetAutoArrange() == S_OK)
1461 else
1463
1464 if (_GetSnapToGrid() == S_OK)
1466 else
1468 }
1469
1470 return S_OK;
1471}
STDMETHOD() GetAutoArrange() override
Definition: CDefView.cpp:2855
HRESULT _GetSnapToGrid()
Definition: CDefView.cpp:2860
#define FCIDM_SHVIEW_ALIGNTOGRID
Definition: shresdef.h:843
#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 1401 of file CDefView.cpp.

1402{
1404 if (!hEditMenu)
1405 return E_FAIL;
1406
1407 HMENU hmenuContents = ::LoadMenuW(shell32_hInstance, L"MENU_003");
1408 if (!hmenuContents)
1409 return E_FAIL;
1410
1411 Shell_MergeMenus(hEditMenu, hmenuContents, 0, 0, 0xFFFF, 0);
1412
1413 ::DestroyMenu(hmenuContents);
1414
1415 return S_OK;
1416}
HMENU GetSubmenuByID(HMENU hmenu, UINT id)
Definition: CDefView.cpp:1339
#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 1359 of file CDefView.cpp.

1360{
1362 if (!hFileMenu)
1363 return E_FAIL;
1364
1365 /* Cleanup the items added previously */
1366 for (int i = GetMenuItemCount(hFileMenu) - 1; i >= 0; i--)
1367 {
1368 UINT id = GetMenuItemID(hFileMenu, i);
1369 if (id < FCIDM_BROWSERFIRST || id > FCIDM_BROWSERLAST)
1370 DeleteMenu(hFileMenu, i, MF_BYPOSITION);
1371 }
1372
1373 // In case we still have this left over, clean it up
1374 if (m_pFileMenu)
1375 {
1378 }
1379 UINT selcount = m_ListView.GetSelectedCount();
1380 // Store context menu in m_pFileMenu and keep it to invoke the selected command later on
1383 return hr;
1384
1386
1387 UINT cmf = GetContextMenuFlags(m_pShellBrowser, SFGAO_CANRENAME);
1388 hr = m_pFileMenu->QueryContextMenu(hmenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, cmf);
1390 return hr;
1391
1392 // TODO: filter or something
1393
1394 Shell_MergeMenus(hFileMenu, hmenu, 0, 0, 0xFFFF, MM_ADDSEPARATOR | MM_SUBMENUSHAVEIDS);
1395
1397
1398 return S_OK;
1399}
static UINT GetContextMenuFlags(IShellBrowser *pSB, SFGAOF sfgao)
Definition: CDefView.cpp:58
STDMETHOD() GetItemObject(UINT uItem, REFIID riid, void **ppv) override
Definition: CDefView.cpp:2651
CComPtr< IContextMenu > m_pFileMenu
Definition: CDefView.cpp:159
UINT GetSelectedCount()
Definition: rosctrls.h:136
@ SVGIO_SELECTION
Definition: shobjidl.idl:739
@ SVGIO_BACKGROUND
Definition: shobjidl.idl:738
#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 1048 of file CDefView.cpp.

1049{
1050 CComPtr<IEnumIDList> pEnumIDList;
1051 PITEMID_CHILD pidl;
1052 DWORD dwFetched;
1053 HRESULT hRes;
1054 HDPA hdpa;
1055 DWORD dFlags = SHCONTF_NONFOLDERS | SHCONTF_FOLDERS;
1056 DWORD dwValue, cbValue;
1057
1058 TRACE("%p\n", this);
1059
1060 // determine if there is a setting to show all the hidden files/folders
1061 dwValue = 1;
1062 cbValue = sizeof(dwValue);
1064 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
1065 L"Hidden", NULL, &dwValue, &cbValue);
1066 if (dwValue == 1)
1067 {
1068 dFlags |= SHCONTF_INCLUDEHIDDEN;
1069 m_ListView.SendMessageW(LVM_SETCALLBACKMASK, LVIS_CUT, 0);
1070 }
1071
1072 dwValue = 0;
1073 cbValue = sizeof(dwValue);
1075 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
1076 L"ShowSuperHidden", NULL, &dwValue, &cbValue);
1077 if (dwValue)
1078 {
1079 dFlags |= SHCONTF_INCLUDESUPERHIDDEN;
1080 m_ListView.SendMessageW(LVM_SETCALLBACKMASK, LVIS_CUT, 0);
1081 }
1082
1083 // get the itemlist from the shfolder
1084 hRes = m_pSFParent->EnumObjects(m_hWnd, dFlags, &pEnumIDList);
1085 if (hRes != S_OK)
1086 {
1087 if (hRes == S_FALSE)
1088 return(NOERROR);
1089 return(hRes);
1090 }
1091
1092 // create a pointer array
1093 hdpa = DPA_Create(16);
1094 if (!hdpa)
1095 return(E_OUTOFMEMORY);
1096
1097 // copy the items into the array
1098 while((S_OK == pEnumIDList->Next(1, &pidl, &dwFetched)) && dwFetched)
1099 {
1100 if (DPA_InsertPtr(hdpa, 0x7fff, pidl) == -1)
1101 {
1102 SHFree(pidl);
1103 }
1104 }
1105
1106 // turn listview's redrawing off
1108
1109 DPA_DestroyCallback( hdpa, fill_list, this);
1110
1111 /* sort the array */
1112 if (m_pSF2Parent)
1113 {
1114 m_pSF2Parent->GetDefaultColumn(NULL, (ULONG*)&m_sortInfo.nHeaderID, NULL);
1115 }
1116 else
1117 {
1118 FIXME("no m_pSF2Parent\n");
1119 }
1121 _Sort();
1122
1124 {
1127 }
1128
1129 // load custom background image and custom text color
1132
1133 // turn listview's redrawing back on and force it to draw
1135
1137
1139 {
1140 // redraw now
1141 m_ListView.InvalidateRect(NULL, TRUE);
1142 }
1143
1145
1146 return S_OK;
1147}
#define SFVM_GET_CUSTOMVIEWINFO
#define SFVM_LISTREFRESHED
static INT CALLBACK fill_list(LPVOID ptr, LPVOID arg)
Definition: CDefView.cpp:1031
void UpdateListColors()
Definition: CDefView.cpp:741
BOOL _Sort()
Definition: CDefView.cpp:867
CComPtr< IShellFolder2 > m_pSF2Parent
Definition: CDefView.cpp:125
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 1418 of file CDefView.cpp.

1419{
1421 if (!hViewMenu)
1422 return E_FAIL;
1423
1425 if (!m_hMenuViewModes)
1426 return E_FAIL;
1427
1430
1431 return S_OK;
1432}
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 3758 of file CDefView.cpp.

3759{
3760 FIXME("Stub: this=%p\n", this);
3761 return E_NOTIMPL;
3762}

◆ GetAdvise()

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

Implements IViewObject.

Definition at line 3782 of file CDefView.cpp.

3783{
3784 TRACE("this=%p pAspects=%p pAdvf=%p ppAdvSink=%p\n", this, pAspects, pAdvf, ppAdvSink);
3785
3786 if (ppAdvSink)
3787 {
3788 *ppAdvSink = m_pAdvSink;
3789 m_pAdvSink.p->AddRef();
3790 }
3791
3792 if (pAspects)
3793 *pAspects = m_dwAspects;
3794
3795 if (pAdvf)
3796 *pAdvf = m_dwAdvf;
3797
3798 return S_OK;
3799}
CComPtr< IAdviseSink > m_pAdvSink
Definition: CDefView.cpp:147
ULONG AddRef()

◆ GetArrangeParam()

HRESULT STDMETHODCALLTYPE CDefView::GetArrangeParam ( LPARAM sort)
override

Definition at line 3035 of file CDefView.cpp.

3036{
3037 FIXME("(%p)->(%p) stub\n", this, sort);
3038 return E_NOTIMPL;
3039}
_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 2855 of file CDefView.cpp.

2856{
2857 return ((m_ListView.GetStyle() & LVS_AUTOARRANGE) ? S_OK : S_FALSE);
2858}

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

3753{
3754 FIXME("Stub: this=%p\n", this);
3755 return E_NOTIMPL;
3756}

◆ GetCurrentInfo()

HRESULT WINAPI CDefView::GetCurrentInfo ( LPFOLDERSETTINGS  pfs)
override

Implements IShellView.

Definition at line 2569 of file CDefView.cpp.

2570{
2571 TRACE("(%p)->(%p) vmode=%x flags=%x\n", this, lpfs,
2573
2574 if (!lpfs)
2575 return E_INVALIDARG;
2576
2577 *lpfs = m_FolderSettings;
2578 return S_OK;
2579}
#define E_INVALIDARG
Definition: ddrawi.h:101

◆ GetCurrentViewMode()

HRESULT STDMETHODCALLTYPE CDefView::GetCurrentViewMode ( UINT pViewMode)
override

Implements IFolderView.

Definition at line 2701 of file CDefView.cpp.

2702{
2703 TRACE("(%p)->(%p), stub\n", this, pViewMode);
2704
2705 if (!pViewMode)
2706 return E_INVALIDARG;
2707
2708 *pViewMode = m_FolderSettings.ViewMode;
2709 return S_OK;
2710}

◆ GetDefaultSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetDefaultSpacing ( POINT ppt)
override

Implements IFolderView.

Definition at line 2850 of file CDefView.cpp.

2851{
2852 return E_NOTIMPL;
2853}

◆ GetDragPoint()

HRESULT STDMETHODCALLTYPE CDefView::GetDragPoint ( POINT pt)
override

Definition at line 3167 of file CDefView.cpp.

3168{
3169 if (!pt)
3170 return E_INVALIDARG;
3171
3173 return S_OK;
3174}

◆ GetDropPoint()

HRESULT STDMETHODCALLTYPE CDefView::GetDropPoint ( POINT pt)
override

Definition at line 3176 of file CDefView.cpp.

3177{
3178 FIXME("(%p)->(%p) stub\n", this, pt);
3179 return E_NOTIMPL;
3180}

◆ GetFocusedItem()

HRESULT STDMETHODCALLTYPE CDefView::GetFocusedItem ( int piItem)
override

Implements IFolderView.

Definition at line 2803 of file CDefView.cpp.

2804{
2805 TRACE("(%p)->(%p)\n", this, piItem);
2806
2807 *piItem = m_ListView.GetNextItem(-1, LVNI_FOCUSED);
2808
2809 return S_OK;
2810}
#define LVNI_FOCUSED
Definition: commctrl.h:2423

◆ GetFolder()

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

Implements IFolderView.

Definition at line 2756 of file CDefView.cpp.

2757{
2758 if (m_pSFParent == NULL)
2759 return E_FAIL;
2760
2761 return m_pSFParent->QueryInterface(riid, ppv);
2762}
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 2651 of file CDefView.cpp.

2652{
2654
2655 TRACE("(%p)->(uItem=0x%08x,\n\tIID=%s, ppv=%p)\n", this, uItem, debugstr_guid(&riid), ppvOut);
2656
2657 if (!ppvOut)
2658 return E_INVALIDARG;
2659
2660 *ppvOut = NULL;
2661
2662 switch (uItem)
2663 {
2664 case SVGIO_BACKGROUND:
2665 if (IsEqualIID(riid, IID_IContextMenu))
2666 {
2669 return hr;
2670
2671 IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
2672 }
2673 else if (IsEqualIID(riid, IID_IDispatch))
2674 {
2676 {
2679 return hr;
2680 }
2681 hr = m_pShellFolderViewDual->QueryInterface(riid, ppvOut);
2682 }
2683 break;
2684 case SVGIO_SELECTION:
2685 GetSelections();
2686 hr = m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, riid, 0, ppvOut);
2688 return hr;
2689
2690 if (IsEqualIID(riid, IID_IContextMenu))
2691 IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
2692
2693 break;
2694 }
2695
2696 TRACE("-- (%p)->(interface=%p)\n", this, *ppvOut);
2697
2698 return hr;
2699}
HRESULT CDefViewBckgrndMenu_CreateInstance(IShellFolder *psf, REFIID riid, void **ppv)
HRESULT WINAPI CDefViewDual_Constructor(REFIID riid, LPVOID *ppvOut)
CComPtr< IShellFolderViewDual > m_pShellFolderViewDual
Definition: CDefView.cpp:129
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 2812 of file CDefView.cpp.

2813{
2814 if (!m_ListView)
2815 {
2816 ERR("!m_ListView\n");
2817 return E_FAIL;
2818 }
2819
2820 int lvIndex = LV_FindItemByPidl(pidl);
2821 if (lvIndex == -1 || ppt == NULL)
2822 return E_INVALIDARG;
2823
2824 m_ListView.GetItemPosition(lvIndex, ppt);
2825 return S_OK;
2826}
int LV_FindItemByPidl(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:915

◆ GetItemSpacing()

HRESULT STDMETHODCALLTYPE CDefView::GetItemSpacing ( ITEMSPACING spacing)
override

Definition at line 3212 of file CDefView.cpp.

3213{
3214 FIXME("(%p)->(%p) stub\n", this, spacing);
3215 return E_NOTIMPL;
3216}

◆ GetObject()

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

Definition at line 3066 of file CDefView.cpp.

3067{
3068 TRACE("(%p)->(%p %d)\n", this, pidl, item);
3069 return Item(item, pidl);
3070}
_In_ WDFCOLLECTION _In_ WDFOBJECT Item

◆ GetObjectCount()

HRESULT STDMETHODCALLTYPE CDefView::GetObjectCount ( UINT count)
override

Definition at line 3096 of file CDefView.cpp.

3097{
3098 TRACE("(%p)->(%p)\n", this, count);
3100 return S_OK;
3101}
GLuint GLuint GLsizei count
Definition: gl.h:1545

◆ GetSelectedCount()

HRESULT STDMETHODCALLTYPE CDefView::GetSelectedCount ( UINT count)
override

Definition at line 3129 of file CDefView.cpp.

3130{
3131 FIXME("(%p)->(%p) stub\n", this, count);
3132 return E_NOTIMPL;
3133}

◆ GetSelectedObjects()

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

Definition at line 3135 of file CDefView.cpp.

3136{
3137 TRACE("(%p)->(%p %p)\n", this, pidl, items);
3138
3139 *items = GetSelections();
3140
3141 if (*items)
3142 {
3143 *pidl = static_cast<PCUITEMID_CHILD *>(LocalAlloc(0, *items * sizeof(PCUITEMID_CHILD)));
3144 if (!*pidl)
3145 {
3146 return E_OUTOFMEMORY;
3147 }
3148
3149 /* it's documented that caller shouldn't PIDLs, only array itself */
3150 memcpy(*pidl, m_apidl, *items * sizeof(PCUITEMID_CHILD));
3151 }
3152
3153 return S_OK;
3154}
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 2794 of file CDefView.cpp.

2795{
2796 TRACE("(%p)->(%p)\n", this, piItem);
2797
2798 *piItem = m_ListView.GetSelectionMark();
2799
2800 return S_OK;
2801}
int GetSelectionMark()
Definition: rosctrls.h:156

◆ GetSelections()

UINT CDefView::GetSelections ( )

Definition at line 1491 of file CDefView.cpp.

1492{
1493 SHFree(m_apidl);
1494
1496 m_apidl = static_cast<PCUITEMID_CHILD*>(SHAlloc(m_cidl * sizeof(PCUITEMID_CHILD)));
1497 if (!m_apidl)
1498 {
1499 m_cidl = 0;
1500 return 0;
1501 }
1502
1503 TRACE("-- Items selected =%u\n", m_cidl);
1504
1506
1507 UINT i = 0;
1508 int lvIndex = -1;
1509 while ((lvIndex = m_ListView.GetNextItem(lvIndex, LVNI_SELECTED)) > -1)
1510 {
1511 m_apidl[i] = _PidlByItem(lvIndex);
1512 i++;
1513 if (i == m_cidl)
1514 break;
1515 TRACE("-- selected Item found\n");
1516 }
1517
1518 return m_cidl;
1519}
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 2828 of file CDefView.cpp.

2829{
2830 TRACE("(%p)->(%p)\n", this, ppt);
2831
2832 if (!m_ListView)
2833 {
2834 ERR("!m_ListView\n");
2835 return S_FALSE;
2836 }
2837
2838 if (ppt)
2839 {
2840 SIZE spacing;
2841 m_ListView.GetItemSpacing(spacing);
2842
2843 ppt->x = spacing.cx;
2844 ppt->y = spacing.cy;
2845 }
2846
2847 return S_OK;
2848}
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 2921 of file CDefView.cpp.

2922{
2923 FIXME("(%p)->(%p, %lu) stub\n", this, view_guid, view_type);
2924 return E_NOTIMPL;
2925}
view_type

◆ GetWindow()

HRESULT WINAPI CDefView::GetWindow ( HWND lphwnd)
override

Implements IOleWindow.

Definition at line 2441 of file CDefView.cpp.

2442{
2443 TRACE("(%p)\n", this);
2444
2445 *phWnd = m_hWnd;
2446
2447 return S_OK;
2448}

◆ GetWindowProc()

virtual WNDPROC CDefView::GetWindowProc ( )
inlinevirtual

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

Definition at line 361 of file CDefView.cpp.

362 {
363 return WindowProc;
364 }
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CDefView.cpp:366

◆ GetWndClassInfo()

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

Definition at line 348 of file CDefView.cpp.

349 {
350 static ATL::CWndClassInfo wc =
351 {
353 0, 0, NULL, NULL,
354 LoadCursor(NULL, IDC_ARROW), NULL, NULL, L"SHELLDLL_DefView", NULL
355 },
356 NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
357 };
358 return wc;
359 }
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 3739 of file CDefView.cpp.

3740{
3741 TRACE("(%p)\n", this);
3742
3744}
#define DRAGDROP_S_USEDEFAULTCURSORS
Definition: winerror.h:2648

◆ HandleRename()

HRESULT STDMETHODCALLTYPE CDefView::HandleRename ( LPCITEMIDLIST  new_pidl)
override

Definition at line 3015 of file CDefView.cpp.

3016{
3017 FIXME("(%p)->(%p) stub\n", this, new_pidl);
3018 return E_NOTIMPL;
3019}

◆ IncludeObject()

HRESULT CDefView::IncludeObject ( PCUITEMID_CHILD  pidl)

Definition at line 497 of file CDefView.cpp.

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

Referenced by fill_list().

◆ Initialize()

HRESULT WINAPI CDefView::Initialize ( IShellFolder shellFolder)

Definition at line 487 of file CDefView.cpp.

488{
489 m_pSFParent = shellFolder;
491
492 return S_OK;
493}
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)

◆ InitList()

BOOL CDefView::InitList ( )

Definition at line 798 of file CDefView.cpp.

799{
801 WCHAR szTemp[50];
802 HIMAGELIST big_icons, small_icons;
803
804 TRACE("%p\n", this);
805
807
809
810 if (m_pSF2Parent)
811 {
812 for (int i = 0; 1; i++)
813 {
814 if (FAILED(m_pSF2Parent->GetDetailsOf(NULL, i, &sd)))
815 break;
816 StrRetToStrNW( szTemp, 50, &sd.str, NULL);
817 m_ListView.InsertColumn(i, szTemp, sd.fmt, sd.cxChar * 8);
818
819 InsertMenuW(m_hMenuArrangeModes, -1, MF_STRING, 0x30 + i, szTemp);
820 }
821
823 }
824 else
825 {
826 FIXME("no m_pSF2Parent\n");
827 }
828
829 Shell_GetImageLists(&big_icons, &small_icons);
831 m_ListView.SetImageList(small_icons, LVSIL_SMALL);
832
833 return TRUE;
834}
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 1521 of file CDefView.cpp.

1522{
1523 CMINVOKECOMMANDINFOEX cmi;
1524
1525 ZeroMemory(&cmi, sizeof(cmi));
1526 cmi.cbSize = sizeof(cmi);
1527 cmi.hwnd = m_hWnd;
1528 cmi.lpVerb = lpVerb;
1529
1530 if (GetKeyState(VK_SHIFT) < 0)
1531 cmi.fMask |= CMIC_MASK_SHIFT_DOWN;
1532
1534 cmi.fMask |= CMIC_MASK_CONTROL_DOWN;
1535
1536 if (pt)
1537 {
1538 cmi.fMask |= CMIC_MASK_PTINVOKE;
1539 cmi.ptInvoke = *pt;
1540 }
1541
1542 HRESULT hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmi);
1543 // Most of our callers will do this, but if they would forget (File menu!)
1544 IUnknown_SetSite(pCM, NULL);
1545 pCM.Release();
1546
1548 return hr;
1549
1550 return S_OK;
1551}
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 3194 of file CDefView.cpp.

3195{
3196 FIXME("(%p)->(%p) stub\n", this, drop_target);
3197 return E_NOTIMPL;
3198}

◆ IsDropOnSource()

HRESULT STDMETHODCALLTYPE CDefView::IsDropOnSource ( IDropTarget drop_target)
override

Definition at line 3156 of file CDefView.cpp.

3157{
3158 if ((m_iDragOverItem == -1 || m_pCurDropTarget == NULL) &&
3160 {
3161 return S_OK;
3162 }
3163
3164 return S_FALSE;
3165}

Referenced by Drop().

◆ Item()

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

Implements IFolderView.

Definition at line 2764 of file CDefView.cpp.

2765{
2766 PCUITEMID_CHILD pidl = _PidlByItem(iItemIndex);
2767 if (pidl)
2768 {
2769 *ppidl = ILClone(pidl);
2770 return S_OK;
2771 }
2772
2773 *ppidl = 0;
2774 return E_INVALIDARG;
2775}
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:237

◆ ItemCount()

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

Implements IFolderView.

Definition at line 2777 of file CDefView.cpp.

2778{
2779 TRACE("(%p)->(%u %p)\n", this, uFlags, pcItems);
2780
2781 if (uFlags != SVGIO_ALLVIEW)
2782 FIXME("some flags unsupported, %x\n", uFlags & ~SVGIO_ALLVIEW);
2783
2785
2786 return S_OK;
2787}
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 2789 of file CDefView.cpp.

2790{
2791 return E_NOTIMPL;
2792}

◆ ListViewCompareItems()

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

Definition at line 851 of file CDefView.cpp.

852{
853 PCUIDLIST_RELATIVE pidl1 = reinterpret_cast<PCUIDLIST_RELATIVE>(lParam1);
854 PCUIDLIST_RELATIVE pidl2 = reinterpret_cast<PCUIDLIST_RELATIVE>(lParam2);
855 CDefView *pThis = reinterpret_cast<CDefView*>(lpData);
856
857 HRESULT hres = pThis->m_pSFParent->CompareIDs(pThis->m_sortInfo.nHeaderID, pidl1, pidl2);
859 return 0;
860
861 SHORT nDiff = HRESULT_CODE(hres);
862 if (!pThis->m_sortInfo.bIsAscending)
863 nDiff = -nDiff;
864 return nDiff;
865}
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 930 of file CDefView.cpp.

931{
932 LVITEMW lvItem;
933
934 TRACE("(%p)(pidl=%p)\n", this, pidl);
935
937
939 return -1;
940
941 lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; // set mask
942 lvItem.iItem = m_ListView.GetItemCount(); // add item to lists end
943 lvItem.iSubItem = 0;
944 lvItem.lParam = reinterpret_cast<LPARAM>(ILClone(pidl)); // set item's data
945 lvItem.pszText = LPSTR_TEXTCALLBACKW; // get text on a callback basis
946 lvItem.iImage = I_IMAGECALLBACK; // get image on a callback basis
947 lvItem.stateMask = LVIS_CUT;
948
949 return m_ListView.InsertItem(&lvItem);
950}
#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 952 of file CDefView.cpp.

953{
954 int nIndex;
955
956 TRACE("(%p)(pidl=%p)\n", this, pidl);
957
959
960 nIndex = LV_FindItemByPidl(pidl);
961 if (nIndex < 0)
962 return FALSE;
963
964 return m_ListView.DeleteItem(nIndex);
965}
BOOL DeleteItem(int i)
Definition: rosctrls.h:101

Referenced by OnChangeNotify().

◆ LV_FindItemByPidl()

int CDefView::LV_FindItemByPidl ( PCUITEMID_CHILD  pidl)

Definition at line 915 of file CDefView.cpp.

916{
918
919 int cItems = m_ListView.GetItemCount();
920
921 for (int i = 0; i<cItems; i++)
922 {
923 PCUITEMID_CHILD currentpidl = _PidlByItem(i);
924 if (ILIsEqual(pidl, currentpidl))
925 return i;
926 }
927 return -1;
928}
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:548

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

1007{
1008 int nItem;
1009 LVITEMW lvItem;
1010
1011 TRACE("(%p)(pidl=%p)\n", this, pidl);
1012
1014
1015 nItem = LV_FindItemByPidl(pidl);
1016
1017 if (-1 != nItem)
1018 {
1019 lvItem.mask = LVIF_IMAGE;
1020 lvItem.iItem = nItem;
1021 lvItem.iSubItem = 0;
1023 m_ListView.SetItem(&lvItem);
1024 m_ListView.Update(nItem);
1025 return TRUE;
1026 }
1027
1028 return FALSE;
1029}
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 967 of file CDefView.cpp.

968{
969 int nItem;
970 LVITEMW lvItem;
971
972 TRACE("(%p)(pidlold=%p pidlnew=%p)\n", this, pidlOld, pidlNew);
973
975
976 nItem = LV_FindItemByPidl(pidlOld);
977
978 if (-1 != nItem)
979 {
980 lvItem.mask = LVIF_PARAM; // only the pidl
981 lvItem.iItem = nItem;
982 lvItem.iSubItem = 0;
983 m_ListView.GetItem(&lvItem);
984
985 // Store old pidl until new item is replaced
986 LPVOID oldPidl = reinterpret_cast<LPVOID>(lvItem.lParam);
987
988 lvItem.mask = LVIF_PARAM | LVIF_IMAGE | LVIF_TEXT;
989 lvItem.iItem = nItem;
990 lvItem.iSubItem = 0;
991 lvItem.lParam = reinterpret_cast<LPARAM>(ILClone(pidlNew)); // set item's data
994 m_ListView.SetItem(&lvItem);
995 m_ListView.Update(nItem);
996
997 // Now that the new item is in place, we can safely release the old pidl
998 SHFree(oldPidl);
999
1000 return TRUE; // FIXME: better handling
1001 }
1002
1003 return FALSE;
1004}
BOOL GetItem(LV_ITEM *pitem)
Definition: rosctrls.h:106

Referenced by OnChangeNotify().

◆ MoveIcons()

HRESULT STDMETHODCALLTYPE CDefView::MoveIcons ( IDataObject obj)
override

Definition at line 3182 of file CDefView.cpp.

3183{
3184 TRACE("(%p)->(%p)\n", this, obj);
3185 return E_NOTIMPL;
3186}

◆ OnActivate()

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

Definition at line 1834 of file CDefView.cpp.

1835{
1837 return 0;
1838}
void DoActivate(UINT uState)
Definition: CDefView.cpp:1777

◆ OnChangeNotify()

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

Definition at line 2281 of file CDefView.cpp.

2282{
2283 // The change notify can come before WM_CREATE
2284 if (!m_ListView)
2285 return FALSE;
2286
2287 HANDLE hChange = (HANDLE)wParam;
2288 DWORD dwProcID = (DWORD)lParam;
2289 PIDLIST_ABSOLUTE *Pidls;
2290 LONG lEvent;
2291 HANDLE hLock = SHChangeNotification_Lock(hChange, dwProcID, &Pidls, &lEvent);
2292 if (hLock == NULL)
2293 {
2294 ERR("hLock == NULL\n");
2295 return FALSE;
2296 }
2297
2298 BOOL bParent0 = ILIsParentOrSpecialParent(m_pidlParent, Pidls[0]);
2299 BOOL bParent1 = ILIsParentOrSpecialParent(m_pidlParent, Pidls[1]);
2300
2301 TRACE("(%p)(%p,%p,0x%08x)\n", this, Pidls[0], Pidls[1], lParam);
2302
2303 lEvent &= ~SHCNE_INTERRUPT;
2304 switch (lEvent)
2305 {
2306 case SHCNE_MKDIR:
2307 case SHCNE_CREATE:
2308 case SHCNE_DRIVEADD:
2309 if (bParent0)
2310 {
2311 if (LV_FindItemByPidl(ILFindLastID(Pidls[0])) == -1)
2312 LV_AddItem(ILFindLastID(Pidls[0]));
2313 else
2314 LV_ProdItem(ILFindLastID(Pidls[0]));
2315 }
2316 break;
2317 case SHCNE_RMDIR:
2318 case SHCNE_DELETE:
2319 case SHCNE_DRIVEREMOVED:
2320 if (bParent0)
2321 LV_DeleteItem(ILFindLastID(Pidls[0]));
2322 break;
2323 case SHCNE_RENAMEFOLDER:
2324 case SHCNE_RENAMEITEM:
2325 if (bParent0 && bParent1)
2326 LV_RenameItem(ILFindLastID(Pidls[0]), ILFindLastID(Pidls[1]));
2327 else if (bParent0)
2328 LV_DeleteItem(ILFindLastID(Pidls[0]));
2329 else if (bParent1)
2330 LV_AddItem(ILFindLastID(Pidls[1]));
2331 break;
2332 case SHCNE_UPDATEITEM:
2333 if (bParent0)
2334 LV_RenameItem(ILFindLastID(Pidls[0]), ILFindLastID(Pidls[0]));
2335 break;
2336 case SHCNE_UPDATEDIR:
2337 Refresh();
2338 break;
2339 }
2340
2342 return TRUE;
2343}
static BOOL ILIsParentOrSpecialParent(PCIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE pidl2)
Definition: CDefView.cpp:2238
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:952
BOOLEAN LV_ProdItem(PCUITEMID_CHILD pidl)
Definition: CDefView.cpp:1006
BOOLEAN LV_RenameItem(PCUITEMID_CHILD pidlOld, PCUITEMID_CHILD pidlNew)
Definition: CDefView.cpp:967
STDMETHOD() Refresh() override
Definition: CDefView.cpp:2503
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
Definition: pidl.c:198
#define SHCNE_DRIVEREMOVED
Definition: shlobj.h:1882
#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
#define SHCNE_DRIVEADD
Definition: shlobj.h:1883
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 1872 of file CDefView.cpp.

1873{
1874 DWORD dwCmdID;
1875 DWORD dwCmd;
1876 HWND hwndCmd;
1877 int nCount;
1878
1879 dwCmdID = GET_WM_COMMAND_ID(wParam, lParam);
1881 hwndCmd = GET_WM_COMMAND_HWND(wParam, lParam);
1882
1883 TRACE("(%p)->(0x%08x 0x%08x %p) stub\n", this, dwCmdID, dwCmd, hwndCmd);
1884
1885 switch (dwCmdID)
1886 {
1890 CheckToolbar();
1891 break;
1894 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_ICON);
1895 CheckToolbar();
1896 break;
1899 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_LIST);
1900 CheckToolbar();
1901 break;
1904 m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
1905 CheckToolbar();
1906 break;
1907 /* the menu-ID's for sorting are 0x30... see shrec.rc */
1908 case 0x30:
1909 case 0x31:
1910 case 0x32:
1911 case 0x33:
1912 m_sortInfo.nHeaderID = dwCmdID - 0x30;
1914 _Sort();
1915 break;
1918 break;
1920 if (_GetSnapToGrid() == S_OK)
1922 else
1923 ArrangeGrid();
1924 break;
1926 if (GetAutoArrange() == S_OK)
1927 m_ListView.ModifyStyle(LVS_AUTOARRANGE, 0);
1928 else
1929 AutoArrange();
1930 break;
1933 break;
1935 nCount = m_ListView.GetItemCount();
1936 for (int i=0; i < nCount; i++)
1938 break;
1940 Refresh();
1941 break;
1943 case FCIDM_SHVIEW_CUT:
1944 case FCIDM_SHVIEW_COPY:
1948 return 0;
1949 return OnExplorerCommand(dwCmdID, TRUE);
1953 return 0;
1955 case FCIDM_SHVIEW_UNDO:
1958 return OnExplorerCommand(dwCmdID, FALSE);
1959 default:
1960 // WM_COMMAND messages from file menu are routed to CDefView to let m_pFileMenu handle them
1961 if (m_pFileMenu && dwCmd == 0)
1962 {
1963 HMENU Dummy = NULL;
1964 MenuCleanup _(m_pFileMenu, Dummy);
1966 }
1967 }
1968
1969 return 0;
1970}
#define GET_WM_COMMAND_HWND(wp, lp)
Definition: CDefView.cpp:429
#define GET_WM_COMMAND_ID(wp, lp)
Definition: CDefView.cpp:428
#define GET_WM_COMMAND_CMD(wp, lp)
Definition: CDefView.cpp:430
STDMETHOD() AutoArrange() override
Definition: CDefView.cpp:3047
void _DoCopyToMoveToFolder(BOOL bCopy)
Definition: CDefView.cpp:1811
LRESULT OnExplorerCommand(UINT uCommand, BOOL bUseSelection)
Definition: CDefView.cpp:1691
STDMETHOD() ArrangeGrid() override
Definition: CDefView.cpp:3041
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:833
#define FCIDM_SHVIEW_CUT
Definition: shresdef.h:826
#define FCIDM_SHVIEW_LISTVIEW
Definition: shresdef.h:838
#define FCIDM_SHVIEW_UNDO
Definition: shresdef.h:829
#define FCIDM_SHVIEW_COPY
Definition: shresdef.h:827
#define FCIDM_SHVIEW_INSERTLINK
Definition: shresdef.h:830
#define FCIDM_SHVIEW_REFRESH
Definition: shresdef.h:851
#define FCIDM_SHVIEW_NEWFOLDER
Definition: shresdef.h:849
#define FCIDM_SHVIEW_SMALLICON
Definition: shresdef.h:837
#define FCIDM_SHVIEW_PROPERTIES
Definition: shresdef.h:825
#define FCIDM_SHVIEW_SNAPTOGRID
Definition: shresdef.h:842
#define FCIDM_SHVIEW_COPYTO
Definition: shresdef.h:831
#define FCIDM_SHVIEW_MOVETO
Definition: shresdef.h:832
#define FCIDM_SHVIEW_DELETE
Definition: shresdef.h:824
#define FCIDM_SHVIEW_RENAME
Definition: shresdef.h:846
#define FCIDM_SHVIEW_REPORTVIEW
Definition: shresdef.h:839
#define FCIDM_SHVIEW_INVERTSELECTION
Definition: shresdef.h:834
#define FCIDM_SHVIEW_INSERT
Definition: shresdef.h:828
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581

◆ OnContextMenu()

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

Definition at line 1594 of file CDefView.cpp.

1595{
1596 POINT pt;
1597 UINT uCommand;
1598 HRESULT hResult;
1599
1600 TRACE("(%p)\n", this);
1601
1602 if (m_hContextMenu != NULL)
1603 {
1604 ERR("HACK: Aborting context menu in nested call\n");
1605 return 0;
1606 }
1607
1609 if (!m_hContextMenu)
1610 return E_FAIL;
1611
1612 if (lParam != ~0) // unless app key (menu key) was pressed
1613 {
1614 pt.x = GET_X_LPARAM(lParam);
1615 pt.y = GET_Y_LPARAM(lParam);
1616
1617 LV_HITTESTINFO hittest = { pt };
1618 ScreenToClient(&hittest.pt);
1619 m_ListView.HitTest(&hittest);
1620
1621 // Right-Clicked item is selected? If selected, no selection change.
1622 // If not selected, then reset the selection and select the item.
1623 if ((hittest.flags & LVHT_ONITEM) &&
1625 {
1626 SelectItem(hittest.iItem, SVSI_SELECT | SVSI_DESELECTOTHERS | SVSI_ENSUREVISIBLE);
1627 }
1628 }
1629
1631 // In case we still have this left over, clean it up
1634 if (FAILED_UNEXPECTEDLY(hResult))
1635 return 0;
1636
1637 UINT cmf = GetContextMenuFlags(m_pShellBrowser, SFGAO_CANRENAME);
1638 // Use 1 as the first id we want. 0 means that user canceled the menu
1639 hResult = m_pCM->QueryContextMenu(m_hContextMenu, 0, CONTEXT_MENU_BASE_ID, FCIDM_SHVIEWLAST, cmf);
1640 if (FAILED_UNEXPECTEDLY(hResult))
1641 return 0;
1642
1643 // There is no position requested, so try to find one
1644 if (lParam == ~0)
1645 {
1646 HWND hFocus = ::GetFocus();
1647 int lvIndex = -1;
1648
1649 if (hFocus == m_ListView.m_hWnd || m_ListView.IsChild(hFocus))
1650 {
1651 // Is there an item focused and selected?
1653 // If not, find the first selected item
1654 if (lvIndex < 0)
1655 lvIndex = m_ListView.GetNextItem(-1, LVIS_SELECTED);
1656 }
1657
1658 // We got something
1659 if (lvIndex > -1)
1660 {
1661 // Find the center of the icon
1662 RECT rc = { LVIR_ICON };
1663 m_ListView.SendMessage(LVM_GETITEMRECT, lvIndex, (LPARAM)&rc);
1664 pt.x = (rc.right + rc.left) / 2;
1665 pt.y = (rc.bottom + rc.top) / 2;
1666 }
1667 else
1668 {
1669 // We have to drop it somewhere
1670 pt.x = pt.y = 0;
1671 }
1672
1673 m_ListView.ClientToScreen(&pt);
1674 }
1675
1676 // This runs the message loop, calling back to us with f.e. WM_INITPOPUP (hence why m_hContextMenu and m_pCM exist)
1677 uCommand = TrackPopupMenu(m_hContextMenu,
1679 pt.x, pt.y, 0, m_hWnd, NULL);
1680 if (uCommand == 0)
1681 return 0;
1682
1683 if (uCommand == FCIDM_SHVIEW_OPEN && OnDefaultCommand() == S_OK)
1684 return 0;
1685
1687
1688 return 0;
1689}
#define CONTEXT_MENU_BASE_ID
Definition: CDefView.cpp:55
CComPtr< IContextMenu > m_pCM
Definition: CDefView.cpp:158
HRESULT OnDefaultCommand()
Definition: CDefView.cpp:511
#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:853
#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 1267 of file CDefView.cpp.

1268{
1271
1272 TRACE("%p\n", this);
1273
1275 {
1276 if (FAILED(RegisterDragDrop(m_hWnd, pdt)))
1277 ERR("Error Registering DragDrop\n");
1278 }
1279
1280 /* register for receiving notifications */
1281 m_pSFParent->QueryInterface(IID_PPV_ARG(IPersistFolder2, &ppf2));
1282 if (ppf2)
1283 {
1284 ppf2->GetCurFolder(&m_pidlParent);
1285 }
1286
1287 if (CreateList())
1288 {
1289 if (InitList())
1290 {
1291 FillList();
1292 }
1293 }
1294
1296 {
1297 HWND hwndSB;
1298 m_pShellBrowser->GetWindow(&hwndSB);
1300 }
1301
1302 SHChangeNotifyEntry ntreg[1];
1303 ntreg[0].fRecursive = FALSE;
1304 ntreg[0].pidl = m_pidlParent;
1309 1, ntreg);
1310
1311 //_DoFolderViewCB(SFVM_GETNOTIFY, ?? ??)
1312
1314
1315 BOOL bPreviousParentSpecial = m_isParentFolderSpecial;
1316
1317 // A folder is special if it is the Desktop folder,
1318 // a network folder, or a Control Panel folder
1321
1322 // Only force StatusBar part refresh if the state
1323 // changed from the previous folder
1324 if (bPreviousParentSpecial != m_isParentFolderSpecial)
1325 {
1326 // This handles changing StatusBar parts
1328 }
1329
1331
1332 return S_OK;
1333}
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:563
BOOL CreateList()
Definition: CDefView.cpp:643
void _ForceStatusBarResize()
Definition: CDefView.cpp:3587
BOOL InitList()
Definition: CDefView.cpp:798
HRESULT FillList()
Definition: CDefView.cpp:1048
HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
Definition: ole2.c:557
BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
Definition: pidl.c:1953
BOOL _ILIsControlPanel(LPCITEMIDLIST pidl)
Definition: pidl.c:1964
#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 2348 of file CDefView.cpp.

2349{
2350 if (!m_pCM)
2351 {
2352 /* no menu */
2353 ERR("no context menu\n");
2354 return FALSE;
2355 }
2356
2357 // lParam of WM_DRAWITEM WM_MEASUREITEM contains a menu id and
2358 // this also needs to be changed to a menu identifier offset
2359 UINT CmdID;
2360 HRESULT hres = SHGetMenuIdFromMenuMsg(uMsg, lParam, &CmdID);
2361 if (SUCCEEDED(hres))
2363
2364 /* Forward the message to the IContextMenu2 */
2367
2368 return (SUCCEEDED(hres));
2369}
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 1766 of file CDefView.cpp.

1767{
1768 TRACE("%p\n", this);
1769
1771 {
1772 // TODO: cleanup menu after deactivation
1774 }
1775}

Referenced by DoActivate(), and OnNotify().

◆ OnDefaultCommand()

HRESULT CDefView::OnDefaultCommand ( )

Definition at line 511 of file CDefView.cpp.

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

Referenced by OnContextMenu(), and OpenSelectedItems().

◆ OnDestroy()

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

Definition at line 1162 of file CDefView.cpp.

1163{
1164 if (!m_Destroyed)
1165 {
1166 m_Destroyed = TRUE;
1167 if (m_hMenu)
1168 {
1170 m_hMenu = NULL;
1171 }
1174 m_hNotify = NULL;
1177 }
1178 bHandled = FALSE;
1179 return 0;
1180}
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 1182 of file CDefView.cpp.

1183{
1184 /* redirect to parent */
1187
1188 bHandled = FALSE;
1189 return 0;
1190}
CWindow GetParent() const
Definition: atlwin.h:700
@ FWF_TRANSPARENT
Definition: shobjidl.idl:645
#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 1691 of file CDefView.cpp.

1692{
1693 HRESULT hResult;
1694 HMENU hMenu = NULL;
1695
1697 hResult = GetItemObject(bUseSelection ? SVGIO_SELECTION : SVGIO_BACKGROUND, IID_PPV_ARG(IContextMenu, &pCM));
1698 if (FAILED_UNEXPECTEDLY(hResult))
1699 return 0;
1700
1701 MenuCleanup _(pCM, hMenu);
1702
1703 if ((uCommand != FCIDM_SHVIEW_DELETE) && (uCommand != FCIDM_SHVIEW_RENAME))
1704 {
1705 hMenu = CreatePopupMenu();
1706 if (!hMenu)
1707 return 0;
1708
1709 hResult = pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_NORMAL);
1710 if (FAILED_UNEXPECTEDLY(hResult))
1711 return 0;
1712 }
1713
1714 if (bUseSelection)
1715 {
1716 // FIXME: we should cache this
1717 SFGAOF rfg = SFGAO_BROWSABLE | SFGAO_CANCOPY | SFGAO_CANLINK | SFGAO_CANMOVE | SFGAO_CANDELETE | SFGAO_CANRENAME | SFGAO_HASPROPSHEET | SFGAO_FILESYSTEM | SFGAO_FOLDER;
1718 hResult = m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &rfg);
1719 if (FAILED_UNEXPECTEDLY(hResult))
1720 return 0;
1721
1722 if (!(rfg & SFGAO_CANMOVE) && uCommand == FCIDM_SHVIEW_CUT)
1723 return 0;
1724 if (!(rfg & SFGAO_CANCOPY) && uCommand == FCIDM_SHVIEW_COPY)
1725 return 0;
1726 if (!(rfg & SFGAO_CANDELETE) && uCommand == FCIDM_SHVIEW_DELETE)
1727 return 0;
1728 if (!(rfg & SFGAO_CANRENAME) && uCommand == FCIDM_SHVIEW_RENAME)
1729 return 0;
1730 if (!(rfg & SFGAO_HASPROPSHEET) && uCommand == FCIDM_SHVIEW_PROPERTIES)
1731 return 0;
1732 }
1733
1734 // FIXME: We should probably use the objects position?
1736 return 0;
1737}

Referenced by OnCommand().

◆ OnFinalMessage()

VOID CDefView::OnFinalMessage ( HWND  )
overridevirtual

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

Definition at line 1262 of file CDefView.cpp.

1263{
1264 this->Release();
1265}
ULONG Release()

◆ OnGetDlgCode()

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

Definition at line 1157 of file CDefView.cpp.

1158{
1159 return m_ListView.SendMessageW(uMsg, 0, 0);
1160}

◆ OnGetShellBrowser()

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

Definition at line 1250 of file CDefView.cpp.

1251{
1252 return reinterpret_cast<LRESULT>(m_pShellBrowser.p);
1253}

◆ OnInitMenuPopup()

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

Definition at line 2380 of file CDefView.cpp.

2381{
2382 HMENU hmenu = (HMENU) wParam;
2383 int nPos = LOWORD(lParam);
2384 UINT menuItemId;
2385
2386 if (m_pCM)
2387 OnCustomItem(uMsg, wParam, lParam, bHandled);
2388
2390
2391 if (GetSelections() == 0)
2392 {
2399 }
2400 else
2401 {
2402 // FIXME: Check copyable
2409 }
2410
2411 /* Lets try to find out what the hell wParam is */
2412 if (hmenu == GetSubMenu(m_hMenu, nPos))
2413 menuItemId = ReallyGetMenuItemID(m_hMenu, nPos);
2414 else if (hViewMenu && hmenu == GetSubMenu(hViewMenu, nPos))
2415 menuItemId = ReallyGetMenuItemID(hViewMenu, nPos);
2416 else if (m_hContextMenu && hmenu == GetSubMenu(m_hContextMenu, nPos))
2417 menuItemId = ReallyGetMenuItemID(m_hContextMenu, nPos);
2418 else
2419 return FALSE;
2420
2421 switch (menuItemId)
2422 {
2423 case FCIDM_MENU_FILE:
2424 FillFileMenu();
2425 break;
2426 case FCIDM_MENU_VIEW:
2427 case FCIDM_SHVIEW_VIEW:
2429 break;
2432 break;
2433 }
2434
2435 return FALSE;
2436}
UINT ReallyGetMenuItemID(HMENU hmenu, int i)
Definition: CDefView.cpp:1350
HRESULT FillFileMenu()
Definition: CDefView.cpp:1359
LRESULT OnCustomItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CDefView.cpp:2348
HRESULT FillArrangeAsMenu(HMENU hmenuArrange)
Definition: CDefView.cpp:1434
#define FCIDM_SHVIEW_VIEW
Definition: shresdef.h:823
#define FCIDM_SHVIEW_ARRANGE
Definition: shresdef.h:822
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 1860 of file CDefView.cpp.

1861{
1862 TRACE("(%p) stub\n", this);
1863
1865 /* Notify the ICommDlgBrowser */
1866 OnStateChange(CDBOSC_KILLFOCUS);
1867
1868 return 0;
1869}
HRESULT OnStateChange(UINT uFlags)
Definition: CDefView.cpp:525
@ SVUIA_ACTIVATE_NOFOCUS
Definition: shobjidl.idl:749

◆ OnNCCreate()

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

Definition at line 1255 of file CDefView.cpp.

1256{
1257 this->AddRef();
1258 bHandled = FALSE;
1259 return 0;
1260}

◆ OnNotify()

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

Definition at line 1992 of file CDefView.cpp.

1993{
1994 UINT CtlID;
1995 LPNMHDR lpnmh;
1996 LPNMLISTVIEW lpnmlv;
1997 NMLVDISPINFOW *lpdi;
1998 PCUITEMID_CHILD pidl;
1999 BOOL unused;
2000
2001 CtlID = wParam;
2002 lpnmh = (LPNMHDR)lParam;
2003 lpnmlv = (LPNMLISTVIEW)lpnmh;
2004 lpdi = (NMLVDISPINFOW *)lpnmh;
2005
2006 TRACE("%p CtlID=%u lpnmh->code=%x\n", this, CtlID, lpnmh->code);
2007
2008 switch (lpnmh->code)
2009 {
2010 case NM_SETFOCUS:
2011 TRACE("-- NM_SETFOCUS %p\n", this);
2012 OnSetFocus(0, 0, 0, unused);
2013 break;
2014 case NM_KILLFOCUS:
2015 TRACE("-- NM_KILLFOCUS %p\n", this);
2016 OnDeactivate();
2017 /* Notify the ICommDlgBrowser interface */
2018 OnStateChange(CDBOSC_KILLFOCUS);
2019 break;
2020 case NM_CUSTOMDRAW:
2021 TRACE("-- NM_CUSTOMDRAW %p\n", this);
2022 return CDRF_DODEFAULT;
2023 case NM_RELEASEDCAPTURE:
2024 TRACE("-- NM_RELEASEDCAPTURE %p\n", this);
2025 break;
2026 case NM_CLICK:
2027 TRACE("-- NM_CLICK %p\n", this);
2028 break;
2029 case NM_RCLICK:
2030 TRACE("-- NM_RCLICK %p\n", this);
2031 break;
2032 case NM_DBLCLK:
2033 TRACE("-- NM_DBLCLK %p\n", this);
2035 break;
2036 case NM_RETURN:
2037 TRACE("-- NM_RETURN %p\n", this);
2039 break;
2040 case HDN_ENDTRACKW:
2041 TRACE("-- HDN_ENDTRACKW %p\n", this);
2042 //nColumn1 = m_ListView.GetColumnWidth(0);
2043 //nColumn2 = m_ListView.GetColumnWidth(1);
2044 break;
2045 case LVN_DELETEITEM:
2046 TRACE("-- LVN_DELETEITEM %p\n", this);
2047 /*delete the pidl because we made a copy of it*/
2048 SHFree(reinterpret_cast<LPVOID>(lpnmlv->lParam));
2049 break;
2050 case LVN_DELETEALLITEMS:
2051 TRACE("-- LVN_DELETEALLITEMS %p\n", this);
2052 return FALSE;
2053 case LVN_INSERTITEM:
2054 TRACE("-- LVN_INSERTITEM (STUB)%p\n", this);
2055 break;
2056 case LVN_ITEMACTIVATE:
2057 TRACE("-- LVN_ITEMACTIVATE %p\n", this);
2058 OnStateChange(CDBOSC_SELCHANGE); // browser will get the IDataObject
2059 break;
2060 case LVN_COLUMNCLICK:
2061 m_sortInfo.nHeaderID = lpnmlv->iSubItem;
2064 else
2066 _Sort();
2067 break;
2068 case LVN_GETDISPINFOA:
2069 case LVN_GETDISPINFOW:
2070 TRACE("-- LVN_GETDISPINFO %p\n", this);
2071 pidl = _PidlByItem(lpdi->item);
2072
2073 if (lpdi->item.mask & LVIF_TEXT) /* text requested */
2074 {
2075 if (m_pSF2Parent)
2076 {
2078 if (FAILED_UNEXPECTEDLY(m_pSF2Parent->GetDetailsOf(pidl, lpdi->item.iSubItem, &sd)))
2079 break;
2080
2081 if (lpnmh->code == LVN_GETDISPINFOA)
2082 {
2083 /* shouldn't happen */
2084 NMLVDISPINFOA *lpdiA = (NMLVDISPINFOA *)lpnmh;
2085 StrRetToStrNA( lpdiA->item.pszText, lpdiA->item.cchTextMax, &sd.str, NULL);
2086 TRACE("-- text=%s\n", lpdiA->item.pszText);
2087 }
2088 else /* LVN_GETDISPINFOW */
2089 {
2090 StrRetToStrNW( lpdi->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL);
2091 TRACE("-- text=%s\n", debugstr_w(lpdi->item.pszText));
2092 }
2093 }
2094 else
2095 {
2096 FIXME("no m_pSF2Parent\n");
2097 }
2098 }
2099 if(lpdi->item.mask & LVIF_IMAGE) /* image requested */
2100 {
2102 }
2103 if(lpdi->item.mask & LVIF_STATE)
2104 {
2105 ULONG attributes = SFGAO_HIDDEN;
2106 if (SUCCEEDED(m_pSFParent->GetAttributesOf(1, &pidl, &attributes)))
2107 {
2108 if (attributes & SFGAO_HIDDEN)
2109 lpdi->item.state |= LVIS_CUT;
2110 }
2111 }
2112 lpdi->item.mask |= LVIF_DI_SETITEM;
2113 break;
2114 case LVN_ITEMCHANGED:
2115 TRACE("-- LVN_ITEMCHANGED %p\n", this);
2116 OnStateChange(CDBOSC_SELCHANGE); // browser will get the IDataObject
2118 _DoFolderViewCB(SFVM_SELECTIONCHANGED, NULL/* FIXME */, NULL/* FIXME */);
2119 break;
2120 case LVN_BEGINDRAG:
2121 case LVN_BEGINRDRAG:
2122 TRACE("-- LVN_BEGINDRAG\n");
2123 if (GetSelections())
2124 {
2126 DWORD dwAttributes = SFGAO_CANCOPY | SFGAO_CANLINK;
2127 DWORD dwEffect = DROPEFFECT_MOVE;
2128
2129 if (SUCCEEDED(m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, IID_NULL_PPV_ARG(IDataObject, &pda))))
2130 {
2132
2133 if (SUCCEEDED(m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &dwAttributes)))
2134 dwEffect |= dwAttributes & (SFGAO_CANCOPY | SFGAO_CANLINK);
2135
2137 if (SUCCEEDED(pda->QueryInterface(IID_PPV_ARG(IAsyncOperation, &piaso))))
2138 piaso->SetAsyncMode(TRUE);
2139
2140 DWORD dwEffect2;
2141
2142 m_pSourceDataObject = pda;
2143 m_ptFirstMousePos = params->ptAction;
2146
2147 HIMAGELIST big_icons, small_icons;
2148 Shell_GetImageLists(&big_icons, &small_icons);
2149 PCUITEMID_CHILD pidl = _PidlByItem(params->iItem);
2150 int iIcon = SHMapPIDLToSystemImageListIndex(m_pSFParent, pidl, 0);
2151 POINT ptItem;
2152 m_ListView.GetItemPosition(params->iItem, &ptItem);
2153
2154 ImageList_BeginDrag(big_icons, iIcon, params->ptAction.x - ptItem.x, params->ptAction.y - ptItem.y);
2155 DoDragDrop(pda, this, dwEffect, &dwEffect2);
2157 }
2158 }
2159 break;
2161 {
2162 DWORD dwAttr = SFGAO_CANRENAME;
2163 pidl = _PidlByItem(lpdi->item);
2164
2165 TRACE("-- LVN_BEGINLABELEDITW %p\n", this);
2166
2167 m_pSFParent->GetAttributesOf(1, &pidl, &dwAttr);
2168 if (SFGAO_CANRENAME & dwAttr)
2169 {
2170 HWND hEdit = reinterpret_cast<HWND>(m_ListView.SendMessage(LVM_GETEDITCONTROL));
2172
2173 // smartass-renaming: See CORE-15242
2174 if (!(dwAttr & SFGAO_FOLDER) && (dwAttr & SFGAO_FILESYSTEM) &&
2175 (lpdi->item.mask & LVIF_TEXT) && !SelectExtOnRename())
2176 {
2177 WCHAR szFullPath[MAX_PATH];
2178 PIDLIST_ABSOLUTE pidlFull = ILCombine(m_pidlParent, pidl);
2179 SHGetPathFromIDListW(pidlFull, szFullPath);
2180
2181 if (!SHELL_FS_HideExtension(szFullPath))
2182 {
2183 LPWSTR pszText = lpdi->item.pszText;
2184 LPWSTR pchDotExt = PathFindExtensionW(pszText);
2185 ::PostMessageW(hEdit, EM_SETSEL, 0, pchDotExt - pszText);
2187 }
2188
2189 ILFree(pidlFull);
2190 }
2191
2192 m_isEditing = TRUE;
2193 return FALSE;
2194 }
2195 return TRUE;
2196 }
2197 case LVN_ENDLABELEDITW:
2198 {
2199 TRACE("-- LVN_ENDLABELEDITW %p\n", this);
2201
2202 if (lpdi->item.pszText)
2203 {
2204 HRESULT hr;
2205 LVITEMW lvItem;
2206
2207 pidl = _PidlByItem(lpdi->item);
2208 PITEMID_CHILD pidlNew = NULL;
2209 hr = m_pSFParent->SetNameOf(0, pidl, lpdi->item.pszText, SHGDN_INFOLDER, &pidlNew);
2210
2211 if (SUCCEEDED(hr) && pidlNew)
2212 {
2213 lvItem.mask = LVIF_PARAM|LVIF_IMAGE;
2214 lvItem.iItem = lpdi->item.iItem;
2215 lvItem.iSubItem = 0;
2216 lvItem.lParam = reinterpret_cast<LPARAM>(pidlNew);
2218 m_ListView.SetItem(&lvItem);
2219 m_ListView.Update(lpdi->item.iItem);
2220 return TRUE;
2221 }
2222 }
2223
2224 return FALSE;
2225 }
2226 default:
2227 TRACE("-- %p WM_COMMAND %x unhandled\n", this, lpnmh->code);
2228 break;
2229 }
2230
2231 return 0;
2232}
static BOOL SelectExtOnRename(void)
Definition: CDefView.cpp:1973
#define SFVM_SELECTIONCHANGED
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CDefView.cpp:1840
HRESULT OpenSelectedItems()
Definition: CDefView.cpp:1553
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:1354
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:938
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:712
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1353
#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:2826
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 1214 of file CDefView.cpp.

1215{
1216 HDC hDC = (HDC)wParam;
1217
1218 RECT rc;
1220
1222 {
1223 BITMAP bm;
1224 if (::GetObject(m_viewinfo_data.hbmBack, sizeof(BITMAP), &bm))
1225 {
1226 INT dx = -(::GetScrollPos(m_ListView, SB_HORZ) % bm.bmWidth);
1227 INT dy = -(::GetScrollPos(m_ListView, SB_VERT) % bm.bmHeight);
1228 DrawTileBitmap(hDC, &rc, m_viewinfo_data.hbmBack, bm.bmWidth, bm.bmHeight, dx, dy);
1229 }
1230 }
1231 else
1232 {
1234 }
1235
1236 bHandled = TRUE;
1237
1238 return TRUE;
1239}
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:1193
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 1840 of file CDefView.cpp.

1841{
1842 TRACE("%p\n", this);
1843
1844 /* Tell the browser one of our windows has received the focus. This
1845 should always be done before merging menus (OnActivate merges the
1846 menus) if one of our windows has the focus.*/
1847
1848 m_pShellBrowser->OnViewWindowActive(this);
1850
1851 /* Set the focus to the listview */
1852 m_ListView.SetFocus();
1853
1854 /* Notify the ICommDlgBrowser interface */
1855 OnStateChange(CDBOSC_SETFOCUS);
1856
1857 return 0;
1858}

Referenced by OnNotify().

◆ OnSettingChange()

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

Definition at line 2371 of file CDefView.cpp.

2372{
2373 /* Wallpaper setting affects drop shadows effect */
2374 if (wParam == SPI_SETDESKWALLPAPER || wParam == 0)
2376
2377 return S_OK;
2378}
#define SPI_SETDESKWALLPAPER
Definition: winuser.h:1369

◆ OnShowWindow()

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

Definition at line 1149 of file CDefView.cpp.

1150{
1151 if (m_ListView.IsWindow())
1152 m_ListView.UpdateWindow();
1153 bHandled = FALSE;
1154 return 0;
1155}

◆ OnSize()

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

Definition at line 1741 of file CDefView.cpp.

1742{
1743 WORD wWidth, wHeight;
1744
1745 wWidth = LOWORD(lParam);
1746 wHeight = HIWORD(lParam);
1747
1748 TRACE("%p width=%u height=%u\n", this, wWidth, wHeight);
1749
1750 // WM_SIZE can come before WM_CREATE
1751 if (!m_ListView)
1752 return 0;
1753
1754 /* Resize the ListView to fit our window */
1755 ::MoveWindow(m_ListView, 0, 0, wWidth, wHeight, TRUE);
1756
1758
1761
1762 return 0;
1763}
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 525 of file CDefView.cpp.

526{
528
529 if (m_pCommDlgBrowser.p != NULL)
530 {
531 TRACE("ICommDlgBrowser::OnStateChange flags=%x\n", uFlags);
532 ret = m_pCommDlgBrowser->OnStateChange(this, uFlags);
533 TRACE("--\n");
534 }
535
536 return ret;
537}

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

◆ OnSysColorChange()

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

Definition at line 1241 of file CDefView.cpp.

1242{
1243 /* Update desktop labels color */
1245
1246 /* Forward WM_SYSCOLORCHANGE to common controls */
1247 return m_ListView.SendMessageW(uMsg, 0, 0);
1248}

◆ OpenSelectedItems()

HRESULT CDefView::OpenSelectedItems ( )

Definition at line 1553 of file CDefView.cpp.

1554{
1555 HMENU hMenu;
1556 UINT uCommand;
1557 HRESULT hResult;
1558
1560 if (m_cidl == 0)
1561 return S_OK;
1562
1563 hResult = OnDefaultCommand();
1564 if (hResult == S_OK)
1565 return hResult;
1566
1567 hMenu = CreatePopupMenu();
1568 if (!hMenu)
1569 return E_FAIL;
1570
1573 MenuCleanup _(pCM, hMenu);
1574 if (FAILED_UNEXPECTEDLY(hResult))
1575 return hResult;
1576
1577 UINT cmf = CMF_DEFAULTONLY | GetContextMenuFlags(m_pShellBrowser, 0);
1578 hResult = pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, cmf);
1579 if (FAILED_UNEXPECTEDLY(hResult))
1580 return hResult;
1581
1582 uCommand = GetMenuDefaultItem(hMenu, FALSE, 0);
1583 if (uCommand == (UINT)-1)
1584 {
1585 ERR("GetMenuDefaultItem returned -1\n");
1586 return E_FAIL;
1587 }
1588
1590
1591 return hResult;
1592}
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 3727 of file CDefView.cpp.

3728{
3729 TRACE("(%p)\n", this);
3730
3731 if (fEscapePressed)
3732 return DRAGDROP_S_CANCEL;
3733 else if (!(grfKeyState & MK_LBUTTON) && !(grfKeyState & MK_RBUTTON))
3734 return DRAGDROP_S_DROP;
3735 else
3736 return S_OK;
3737}
#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 3801 of file CDefView.cpp.

3802{
3803 if (IsEqualIID(guidService, SID_IShellBrowser))
3804 return m_pShellBrowser->QueryInterface(riid, ppvObject);
3805 else if(IsEqualIID(guidService, SID_IFolderView))
3806 return QueryInterface(riid, ppvObject);
3807
3808 return E_NOINTERFACE;
3809}
#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 3245 of file CDefView.cpp.

3246{
3247 FIXME("(%p)->(%p(%s) 0x%08x %p %p\n",
3248 this, pguidCmdGroup, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
3249
3250 if (!prgCmds)
3251 return E_INVALIDARG;
3252
3253 for (UINT i = 0; i < cCmds; i++)
3254 {
3255 FIXME("\tprgCmds[%d].cmdID = %d\n", i, prgCmds[i].cmdID);
3256 prgCmds[i].cmdf = 0;
3257 }
3258
3259 return OLECMDERR_E_UNKNOWNGROUP;
3260}

◆ QuerySupport()

HRESULT STDMETHODCALLTYPE CDefView::QuerySupport ( UINT support)
override

Definition at line 3233 of file CDefView.cpp.

3234{
3235 TRACE("(%p)->(%p)\n", this, support);
3236 return S_OK;
3237}

◆ Rearrange()

HRESULT STDMETHODCALLTYPE CDefView::Rearrange ( LPARAM  sort)
override

Definition at line 3029 of file CDefView.cpp.

3030{
3031 FIXME("(%p)->(%ld) stub\n", this, sort);
3032 return E_NOTIMPL;
3033}

◆ Refresh()

HRESULT WINAPI CDefView::Refresh ( )
override

Implements IShellView.

Definition at line 2503 of file CDefView.cpp.

2504{
2505 TRACE("(%p)\n", this);
2506
2508
2510 FillList();
2511
2512 return S_OK;
2513}

Referenced by OnChangeNotify(), and OnCommand().

◆ RefreshObject()

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

Definition at line 3115 of file CDefView.cpp.

3116{
3117 FIXME("(%p)->(%p %p) stub\n", this, pidl, item);
3118 return E_NOTIMPL;
3119}

◆ RemoveObject()

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

Definition at line 3072 of file CDefView.cpp.

3073{
3074 TRACE("(%p)->(%p %p)\n", this, pidl, item);
3075
3076 if (!m_ListView)
3077 {
3078 ERR("!m_ListView\n");
3079 return E_FAIL;
3080 }
3081
3082 if (pidl)
3083 {
3086 }
3087 else
3088 {
3089 *item = 0;
3091 }
3092
3093 return S_OK;
3094}

◆ SaveViewState()

HRESULT WINAPI CDefView::SaveViewState ( )
override

Implements IShellView.

Definition at line 2588 of file CDefView.cpp.

2589{
2590 FIXME("(%p) stub\n", this);
2591
2592 return S_OK;
2593}

◆ Select()

HRESULT STDMETHODCALLTYPE CDefView::Select ( UINT  flags)
override

Definition at line 3227 of file CDefView.cpp.

3228{
3229 FIXME("(%p)->(%d) stub\n", this, flags);
3230 return E_NOTIMPL;
3231}

◆ SelectAndPositionItem()

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

Definition at line 3021 of file CDefView.cpp.

3022{
3023 FIXME("(%p)->(%p, %u, %p) stub\n", this, item, flags, point);
3024 return E_NOTIMPL;
3025}
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 2897 of file CDefView.cpp.

2898{
2900
2901 /* Reset the selection */
2903
2904 int lvIndex;
2905 for (UINT i = 0 ; i < m_cidl; i++)
2906 {
2907 lvIndex = LV_FindItemByPidl(apidl[i]);
2908 if (lvIndex != -1)
2909 {
2910 SelectItem(lvIndex, dwFlags);
2911 m_ListView.SetItemPosition(lvIndex, &apt[i]);
2912 }
2913 }
2914
2915 return S_OK;
2916}
_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 2866 of file CDefView.cpp.

2867{
2868 LVITEMW lvItem;
2869
2870 TRACE("(%p)->(%d, %x)\n", this, iItem, dwFlags);
2871
2872 lvItem.state = 0;
2873 lvItem.stateMask = LVIS_SELECTED;
2874
2875 if (dwFlags & SVSI_ENSUREVISIBLE)
2876 m_ListView.EnsureVisible(iItem, 0);
2877
2878 /* all items */
2879 if (dwFlags & SVSI_DESELECTOTHERS)
2881
2882 /* this item */
2883 if (dwFlags & SVSI_SELECT)
2884 lvItem.state |= LVIS_SELECTED;
2885
2886 if (dwFlags & SVSI_FOCUSED)
2887 lvItem.stateMask |= LVIS_FOCUSED;
2888
2889 m_ListView.SetItemState(iItem, lvItem.state, lvItem.stateMask);
2890
2891 if ((dwFlags & SVSI_EDIT) == SVSI_EDIT)
2892 m_ListView.EditLabel(iItem);
2893
2894 return S_OK;
2895}
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 2595 of file CDefView.cpp.

2596{
2597 int i;
2598
2599 TRACE("(%p)->(pidl=%p, 0x%08x) stub\n", this, pidl, uFlags);
2600
2601 if (!m_ListView)
2602 {
2603 ERR("!m_ListView\n");
2604 return E_FAIL;
2605 }
2606
2607 i = LV_FindItemByPidl(pidl);
2608 if (i == -1)
2609 return S_OK;
2610
2611 LVITEMW lvItem = {0};
2612 lvItem.mask = LVIF_STATE;
2614
2615 while (m_ListView.GetItem(&lvItem))
2616 {
2617 if (lvItem.iItem == i)
2618 {
2619 if (uFlags & SVSI_SELECT)
2620 lvItem.state |= LVIS_SELECTED;
2621 else
2622 lvItem.state &= ~LVIS_SELECTED;
2623
2624 if (uFlags & SVSI_FOCUSED)
2625 lvItem.state |= LVIS_FOCUSED;
2626 else
2627 lvItem.state &= ~LVIS_FOCUSED;
2628 }
2629 else
2630 {
2631 if (uFlags & SVSI_DESELECTOTHERS)
2632 {
2633 lvItem.state &= ~LVIS_SELECTED;
2634 }
2635 lvItem.state &= ~LVIS_FOCUSED;
2636 }
2637
2638 m_ListView.SetItem(&lvItem);
2639 lvItem.iItem++;
2640 }
2641
2642 if (uFlags & SVSI_ENSUREVISIBLE)
2644
2645 if((uFlags & SVSI_EDIT) == SVSI_EDIT)
2647
2648 return S_OK;
2649}

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

3771{
3772 FIXME("partial stub: %p 0x%08x 0x%08x %p\n", this, aspects, advf, pAdvSink);
3773
3774 // FIXME: we set the AdviseSink, but never use it to send any advice
3775 m_pAdvSink = pAdvSink;
3776 m_dwAspects = aspects;
3777 m_dwAdvf = advf;
3778
3779 return S_OK;
3780}

◆ SetAutomationObject()

HRESULT STDMETHODCALLTYPE CDefView::SetAutomationObject ( IDispatch disp)
override

Definition at line 3239 of file CDefView.cpp.

3240{
3241 FIXME("(%p)->(%p) stub\n", this, disp);
3242 return E_NOTIMPL;
3243}

◆ SetCallback()

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

Definition at line 3218 of file CDefView.cpp.

3219{
3220 if (old_cb)
3221 *old_cb = m_pShellFolderViewCB.Detach();
3222
3223 m_pShellFolderViewCB = new_cb;
3224 return S_OK;
3225}
T * Detach()
Definition: atlcomcli.h:186

◆ SetClipboard()

HRESULT STDMETHODCALLTYPE CDefView::SetClipboard ( BOOL  move)
override

Definition at line 3200 of file CDefView.cpp.

3201{
3202 FIXME("(%p)->(%d) stub\n", this, move);
3203 return E_NOTIMPL;
3204}

◆ SetCurrentViewMode()

HRESULT STDMETHODCALLTYPE CDefView::SetCurrentViewMode ( UINT  ViewMode)
override

Implements IFolderView.

Definition at line 2712 of file CDefView.cpp.

2713{
2714 DWORD dwStyle;
2715 TRACE("(%p)->(%u), stub\n", this, ViewMode);
2716
2717 /* It's not redundant to check FVM_AUTO because it's a (UINT)-1 */
2718 if (((INT)ViewMode < FVM_FIRST || (INT)ViewMode > FVM_LAST) && ((INT)ViewMode != FVM_AUTO))
2719 return E_INVALIDARG;
2720
2721 /* Windows before Vista uses LVM_SETVIEW and possibly
2722 LVM_SETEXTENDEDLISTVIEWSTYLE to set the style of the listview,
2723 while later versions seem to accomplish this through other
2724 means. */
2725 switch (ViewMode)
2726 {
2727 case FVM_ICON:
2728 dwStyle = LVS_ICON;
2729 break;
2730 case FVM_DETAILS:
2731 dwStyle = LVS_REPORT;
2732 break;
2733 case FVM_SMALLICON:
2734 dwStyle = LVS_SMALLICON;
2735 break;
2736 case FVM_LIST:
2737 dwStyle = LVS_LIST;
2738 break;
2739 default:
2740 {
2741 FIXME("ViewMode %d not implemented\n", ViewMode);
2742 dwStyle = LVS_LIST;
2743 break;
2744 }
2745 }
2746
2747 m_ListView.ModifyStyle(LVS_TYPEMASK, dwStyle);
2748
2749 /* This will not necessarily be the actual mode set above.
2750 This mimics the behavior of Windows XP. */
2751 m_FolderSettings.ViewMode = ViewMode;
2752
2753 return S_OK;
2754}
@ FVM_AUTO
Definition: shobjidl.idl:673

◆ SetItemPos()

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

Definition at line 3188 of file CDefView.cpp.

3189{
3190 FIXME("(%p)->(%p %p) stub\n", this, pidl, pt);
3191 return E_NOTIMPL;
3192}

◆ SetObjectCount()

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

Definition at line 3103 of file CDefView.cpp.

3104{
3105 FIXME("(%p)->(%d %x) stub\n", this, count, flags);
3106 return E_NOTIMPL;
3107}

◆ SetPoints()

HRESULT STDMETHODCALLTYPE CDefView::SetPoints ( IDataObject obj)
override

Definition at line 3206 of file CDefView.cpp.

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

◆ SetRedraw()

HRESULT STDMETHODCALLTYPE CDefView::SetRedraw ( BOOL  redraw)
override

Definition at line 3121 of file CDefView.cpp.

3122{
3123 TRACE("(%p)->(%d)\n", this, redraw);
3124 if (m_ListView)
3126 return S_OK;
3127}
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 2458 of file CDefView.cpp.

2459{
2460 if (m_isEditing)
2461 return S_FALSE;
2462
2463 if (lpmsg->message >= WM_KEYFIRST && lpmsg->message <= WM_KEYLAST)
2464 {
2465 if (::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg) != 0)
2466 return S_OK;
2467
2468 TRACE("-- key=0x%04lx\n", lpmsg->wParam);
2469 }
2470
2471 return m_pShellBrowser->TranslateAcceleratorSB(lpmsg, 0);
2472}
#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 2480 of file CDefView.cpp.

2481{
2482 TRACE("(%p)->(state=%x)\n", this, uState);
2483
2484 // don't do anything if the state isn't changing
2485 if (m_uState == uState)
2486 return S_OK;
2487
2488 // OnActivate handles the menu merging and internal state
2489 DoActivate(uState);
2490
2491 // only do this if we are active
2492 if (uState != SVUIA_DEACTIVATE)
2493 {
2495
2496 // Set the text for the status bar
2498 }
2499
2500 return S_OK;
2501}

Referenced by DestroyViewWindow().

◆ Unfreeze()

HRESULT WINAPI CDefView::Unfreeze ( DWORD  dwFreeze)
override

Implements IViewObject.

Definition at line 3764 of file CDefView.cpp.

3765{
3766 FIXME("Stub: this=%p\n", this);
3767 return E_NOTIMPL;
3768}

◆ UpdateListColors()

void CDefView::UpdateListColors ( )

Definition at line 741 of file CDefView.cpp.

742{
744 {
745 /* Check if drop shadows option is enabled */
746 BOOL bDropShadow = FALSE;
747 DWORD cbDropShadow = sizeof(bDropShadow);
748
749 /*
750 * The desktop ListView always take the default desktop colours, by
751 * remaining transparent and letting user32/win32k paint itself the
752 * desktop background color, if any.
753 */
755
756 SHGetValueW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
757 L"ListviewShadow", NULL, &bDropShadow, &cbDropShadow);
758 if (bDropShadow)
759 {
760 /* Set the icon background transparent */
762 m_ListView.SetTextColor(RGB(255, 255, 255));
763 m_ListView.SetExtendedListViewStyle(LVS_EX_TRANSPARENTSHADOWTEXT, LVS_EX_TRANSPARENTSHADOWTEXT);
764 }
765 else
766 {
767 /* Set the icon background as the same colour as the desktop */
769 m_ListView.SetTextBkColor(crDesktop);
770 if (GetRValue(crDesktop) + GetGValue(crDesktop) + GetBValue(crDesktop) > 128 * 3)
771 m_ListView.SetTextColor(RGB(0, 0, 0));
772 else
773 m_ListView.SetTextColor(RGB(255, 255, 255));
774 m_ListView.SetExtendedListViewStyle(0, LVS_EX_TRANSPARENTSHADOWTEXT);
775 }
776 }
777 else
778 {
779 // text background color
781 m_ListView.SetTextBkColor(clrTextBack);
782
783 // text color
784 COLORREF clrText;
786 clrText = m_viewinfo_data.clrText;
787 else
788 clrText = GetSysColor(COLOR_WINDOWTEXT);
789
790 m_ListView.SetTextColor(clrText);
791
792 // Background is painted by the parent via WM_PRINTCLIENT
793 m_ListView.SetExtendedListViewStyle(LVS_EX_TRANSPARENTBKGND, LVS_EX_TRANSPARENTBKGND);
794 }
795}
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 3109 of file CDefView.cpp.

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

◆ UpdateStatusbar()

void CDefView::UpdateStatusbar ( )

Definition at line 563 of file CDefView.cpp.

564{
565 WCHAR szFormat[MAX_PATH] = {0};
566 WCHAR szPartText[MAX_PATH] = {0};
567 UINT cSelectedItems;
568
569 if (!m_ListView)
570 return;
571
572 cSelectedItems = m_ListView.GetSelectedCount();
573 if (cSelectedItems)
574 {
576 StringCchPrintfW(szPartText, _countof(szPartText), szFormat, cSelectedItems);
577 }
578 else
579 {
580 LoadStringW(shell32_hInstance, IDS_OBJECTS, szFormat, _countof(szFormat));
581 StringCchPrintfW(szPartText, _countof(szPartText), szFormat, m_ListView.GetItemCount());
582 }
583
584 LRESULT lResult;
585 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 0, (LPARAM)szPartText, &lResult);
586
587 // Don't bother with the extra processing if we only have one StatusBar part
589 {
590 DWORD uTotalFileSize = 0;
591 WORD uFileFlags = LVNI_ALL;
592 LPARAM pIcon = NULL;
593 INT nItem = -1;
594 bool bIsOnlyFoldersSelected = true;
595
596 // If we have something selected then only count selected file sizes
597 if (cSelectedItems)
598 {
599 uFileFlags = LVNI_SELECTED;
600 }
601
602 while ((nItem = m_ListView.GetNextItem(nItem, uFileFlags)) >= 0)
603 {
604 PCUITEMID_CHILD pidl = _PidlByItem(nItem);
605
606 uTotalFileSize += _ILGetFileSize(pidl, NULL, 0);
607
608 if (!_ILIsFolder(pidl))
609 {
610 bIsOnlyFoldersSelected = false;
611 }
612 }
613
614 // Don't show the file size text if there is 0 bytes in the folder
615 // OR we only have folders selected
616 if ((cSelectedItems && !bIsOnlyFoldersSelected) || uTotalFileSize)
617 {
618 StrFormatByteSizeW(uTotalFileSize, szPartText, _countof(szPartText));
619 }
620 else
621 {
622 *szPartText = 0;
623 }
624
625 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 1, (LPARAM)szPartText, &lResult);
626
627 // If we are in a Recycle Bin then show no text for the location part
629 {
630 LoadStringW(shell32_hInstance, IDS_MYCOMPUTER, szPartText, _countof(szPartText));
631 pIcon = (LPARAM)m_hMyComputerIcon;
632 }
633
634 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETICON, 2, pIcon, &lResult);
635 m_pShellBrowser->SendControlMsg(FCW_STATUS, SB_SETTEXT, 2, (LPARAM)szPartText, &lResult);
636 }
637}
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
Definition: string.c:2388
DWORD _ILGetFileSize(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
Definition: pidl.c:2510
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
Definition: pidl.c:2020
BOOL _ILIsBitBucket(LPCITEMIDLIST pidl)
Definition: pidl.c:1986
#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:281
#define IDS_MYCOMPUTER
Definition: shresdef.h:277
#define IDS_OBJECTS
Definition: shresdef.h:280
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 366 of file CDefView.cpp.

367 {
368 CDefView *pThis;
370
371 // Must hold a reference during message handling
372 pThis = reinterpret_cast<CDefView *>(hWnd);
373 pThis->AddRef();
375 pThis->Release();
376 return result;
377 }
HWND hWnd
Definition: settings.c:17

Referenced by GetWindowProc().

Member Data Documentation

◆ m_apidl

◆ m_bmenuBarInitialized

BOOL CDefView::m_bmenuBarInitialized
private

Definition at line 137 of file CDefView.cpp.

Referenced by DoActivate().

◆ m_Category

CLSID CDefView::m_Category
private

Definition at line 164 of file CDefView.cpp.

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

◆ m_cidl

◆ m_cScrollDelay

UINT CDefView::m_cScrollDelay
private

Definition at line 153 of file CDefView.cpp.

Referenced by drag_notify_subitem().

◆ m_Destroyed

BOOL CDefView::m_Destroyed
private

Definition at line 165 of file CDefView.cpp.

Referenced by OnDestroy().

◆ m_dwAdvf

DWORD CDefView::m_dwAdvf
private

Definition at line 146 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_dwAspects

DWORD CDefView::m_dwAspects
private

Definition at line 145 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_FolderSettings

◆ m_grfKeyState

DWORD CDefView::m_grfKeyState
private

Definition at line 156 of file CDefView.cpp.

Referenced by drag_notify_subitem(), and Drop().

◆ m_hAccel

HACCEL CDefView::m_hAccel
private

Definition at line 144 of file CDefView.cpp.

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

◆ m_hContextMenu

HMENU CDefView::m_hContextMenu
private

Definition at line 136 of file CDefView.cpp.

Referenced by OnContextMenu(), and OnInitMenuPopup().

◆ m_hMenu

◆ m_hMenuArrangeModes

HMENU CDefView::m_hMenuArrangeModes
private

Definition at line 134 of file CDefView.cpp.

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

◆ m_hMenuViewModes

HMENU CDefView::m_hMenuViewModes
private

Definition at line 135 of file CDefView.cpp.

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

◆ m_hMyComputerIcon

HICON CDefView::m_hMyComputerIcon
private

Definition at line 168 of file CDefView.cpp.

Referenced by CDefView(), and UpdateStatusbar().

◆ m_hNotify

ULONG CDefView::m_hNotify
private

Definition at line 143 of file CDefView.cpp.

Referenced by OnCreate(), and OnDestroy().

◆ m_hWndParent

HWND CDefView::m_hWndParent
private

Definition at line 131 of file CDefView.cpp.

Referenced by CreateViewWindow3(), and Exec().

◆ m_iDragOverItem

LONG CDefView::m_iDragOverItem
private

Definition at line 152 of file CDefView.cpp.

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

◆ m_isEditing

BOOL CDefView::m_isEditing
private

Definition at line 161 of file CDefView.cpp.

Referenced by OnNotify(), and TranslateAccelerator().

◆ m_isParentFolderSpecial

BOOL CDefView::m_isParentFolderSpecial
private

Definition at line 162 of file CDefView.cpp.

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

◆ m_ListView

◆ m_pAdvSink

CComPtr<IAdviseSink> CDefView::m_pAdvSink
private

Definition at line 147 of file CDefView.cpp.

Referenced by GetAdvise(), and SetAdvise().

◆ m_pCM

CComPtr<IContextMenu> CDefView::m_pCM
private

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

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

◆ m_pCurDropTarget

CComPtr<IDropTarget> CDefView::m_pCurDropTarget
private

Definition at line 150 of file CDefView.cpp.

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

◆ m_pFileMenu

CComPtr<IContextMenu> CDefView::m_pFileMenu
private

Definition at line 159 of file CDefView.cpp.

Referenced by FillFileMenu(), and OnCommand().

◆ m_pidlParent

PIDLIST_ABSOLUTE CDefView::m_pidlParent
private

Definition at line 141 of file CDefView.cpp.

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

◆ m_pSF2Parent

CComPtr<IShellFolder2> CDefView::m_pSF2Parent
private

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

Referenced by _DoFolderViewCB(), and SetCallback().

◆ m_pShellFolderViewDual

CComPtr<IShellFolderViewDual> CDefView::m_pShellFolderViewDual
private

Definition at line 129 of file CDefView.cpp.

Referenced by GetItemObject().

◆ m_pSourceDataObject

CComPtr<IDataObject> CDefView::m_pSourceDataObject
private

Definition at line 149 of file CDefView.cpp.

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

◆ m_ptFirstMousePos

POINT CDefView::m_ptFirstMousePos
private

Definition at line 155 of file CDefView.cpp.

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

◆ m_ptLastMousePos

POINT CDefView::m_ptLastMousePos
private

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

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

◆ m_viewinfo_data

SFVM_CUSTOMVIEWINFO_DATA CDefView::m_viewinfo_data
private

Definition at line 166 of file CDefView.cpp.

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


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