ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

desktop.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2003, 2004 Martin Fuchs
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00017  */
00018 
00019 
00020  //
00021  // Explorer clone
00022  //
00023  // desktop.h
00024  //
00025  // Martin Fuchs, 09.08.2003
00026  //
00027 
00028 
00029 #define PM_SET_ICON_ALGORITHM   (WM_APP+0x19)
00030 #define PM_GET_ICON_ALGORITHM   (WM_APP+0x1A)
00031 #define PM_DISPLAY_VERSION      (WM_APP+0x24)
00032 
00033 
00035 struct BackgroundWindow : public SubclassedWindow
00036 {
00037     typedef SubclassedWindow super;
00038 
00039     BackgroundWindow(HWND hwnd);
00040 
00041 protected:
00042     LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
00043 
00044     void    DrawDesktopBkgnd(HDC hdc);
00045 
00046     int     _display_version;
00047 };
00048 
00049 
00051 struct DesktopWindow : public Window, public IShellBrowserImpl
00052 {
00053     typedef Window super;
00054 
00055     DesktopWindow(HWND hwnd);
00056     ~DesktopWindow();
00057 
00058     static HWND Create();
00059 
00060     virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND* lphwnd)
00061     {
00062         *lphwnd = _hwnd;
00063         return S_OK;
00064     }
00065 
00066     virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(IShellView** ppshv)
00067     {
00068         _pShellView->AddRef();
00069         *ppshv = _pShellView;
00070         return S_OK;
00071     }
00072 
00073     virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND* lphwnd)
00074     {
00075         return E_NOTIMPL;
00076     }
00077 
00078     virtual HRESULT STDMETHODCALLTYPE SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pret)
00079     {
00080         return E_NOTIMPL;
00081     }
00082 
00083 protected:
00084     LRESULT Init(LPCREATESTRUCT pcs);
00085     LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
00086 
00087     IShellView* _pShellView;
00088     WindowHandle _desktopBar;
00089 
00090     virtual HRESULT OnDefaultCommand(LPIDA pida);
00091 };
00092 
00093 
00095 class DesktopDropTarget : public IDropTargetImpl
00096 {
00097     typedef IDropTargetImpl super;
00098 
00099 public:
00100     DesktopDropTarget(HWND hTargetWnd) : super(hTargetWnd) {}
00101 
00102     virtual bool OnDrop(FORMATETC* pFmtEtc, STGMEDIUM& medium, DWORD *pdwEffect)
00103     {
00104         if (pFmtEtc->cfFormat==CF_HDROP && medium.tymed==TYMED_HGLOBAL) {
00105             HDROP hDrop = (HDROP)GlobalLock(medium.hGlobal);
00106 
00107             if (hDrop) {
00108                 TCHAR szFileName[MAX_PATH];
00109 
00110                 UINT cFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
00111 
00112                 for(UINT i=0; i<cFiles; ++i) {
00113                     DragQueryFile(hDrop, i, szFileName, sizeof(szFileName));
00114 
00115                     if (DROPEFFECT_COPY & *pdwEffect) {
00116                          // copy the file or dir
00117 
00119 
00120                     } else if (DROPEFFECT_MOVE & *pdwEffect) {
00121                          // move the file or dir
00122 
00124 
00125                     }
00126                 }
00127                 //DragFinish(hDrop); // base class calls ReleaseStgMedium
00128             }
00129 
00130             GlobalUnlock(medium.hGlobal);
00131         }
00132 
00133         //@@TreeView_SelectDropTarget(m_hTargetWnd, NULL);
00134 
00135         return true; //let base free the medium
00136     }
00137 
00138     virtual HRESULT STDMETHODCALLTYPE DragOver(
00139         /* [in] */ DWORD grfKeyState,
00140         /* [in] */ POINTL pt,
00141         /* [out][in] */ DWORD __RPC_FAR *pdwEffect)
00142     {
00143         TVHITTESTINFO hit;
00144         hit.pt = (POINT&)pt;
00145         ScreenToClient(m_hTargetWnd, &hit.pt);
00146         hit.flags = TVHT_ONITEM;
00147 
00148         /*@@
00149         HTREEITEM hItem = TreeView_HitTest(m_hTargetWnd,&hit);
00150 
00151         if (hItem != NULL)
00152             TreeView_SelectDropTarget(m_hTargetWnd, hItem);
00153         */
00154 
00155         return super::DragOver(grfKeyState, pt, pdwEffect);
00156     }
00157 
00158     virtual HRESULT STDMETHODCALLTYPE DragLeave(void)
00159     {
00160         //@@ TreeView_SelectDropTarget(m_hTargetWnd, NULL);
00161 
00162         return super::DragLeave();
00163     }
00164 };
00165 
00166 
00168 struct DesktopShellView : public ExtContextMenuHandlerT<SubclassedWindow>
00169 {
00170     typedef ExtContextMenuHandlerT<SubclassedWindow> super;
00171 
00172     DesktopShellView(HWND hwnd, IShellView* pShellView);
00173     ~DesktopShellView();
00174 
00175     bool    InitDragDrop();
00176 
00177 protected:
00178     IShellView* _pShellView;
00179 
00180     LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
00181     int     Command(int id, int code);
00182     int     Notify(int id, NMHDR* pnmh);
00183 
00184     bool    DoContextMenu(int x, int y);
00185     HRESULT DoDesktopContextMenu(int x, int y);
00186     void    PositionIcons(int dir=1);
00187 
00188     void    refresh();
00189 
00190     HWND    _hwndListView;
00191     int     _icon_algo;
00192 };

Generated on Mon May 28 2012 04:18:10 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.