1 // MainFrm.h : interface of the CMainFrame class
3 /////////////////////////////////////////////////////////////////////////////
19 #include "explorercombo.h"
23 class CMyPaneContainer
: public CPaneContainerImpl
<CMyPaneContainer
>
26 DECLARE_WND_CLASS_EX(_T("WtlExplorer_PaneContainer"), 0, -1)
28 void DrawPaneTitle(CDCHandle dc
)
35 rect
.right
= rect
.left
+ m_cxyHeader
;
36 dc
.DrawEdge(&rect
, EDGE_ETCHED
, BF_LEFT
| BF_TOP
| BF_BOTTOM
| BF_ADJUST
);
37 dc
.FillRect(&rect
, COLOR_3DFACE
);
41 rect
.bottom
= rect
.top
+ m_cxyHeader
;
42 // we don't want this edge
43 // dc.DrawEdge(&rect, EDGE_ETCHED, BF_LEFT | BF_TOP | BF_RIGHT | BF_ADJUST);
44 dc
.FillRect(&rect
, COLOR_3DFACE
);
45 // draw title only for horizontal pane container
46 dc
.SetTextColor(::GetSysColor(COLOR_WINDOWTEXT
));
47 dc
.SetBkMode(TRANSPARENT
);
48 HFONT hFontOld
= dc
.SelectFont(GetTitleFont());
49 rect
.left
+= m_cxyTextOffset
;
50 rect
.right
-= m_cxyTextOffset
;
51 if(m_tb
.m_hWnd
!= NULL
)
52 rect
.right
-= m_cxToolBar
;;
54 dc
.DrawText(m_szTitle
, -1, &rect
, DT_LEFT
| DT_SINGLELINE
| DT_VCENTER
| DT_END_ELLIPSIS
);
56 dc
.DrawText(m_szTitle
, -1, &rect
, DT_LEFT
| DT_SINGLELINE
| DT_VCENTER
);
58 dc
.SelectFont(hFontOld
);
64 class CMainFrame
: public CFrameWindowImpl
<CMainFrame
>,
65 public CUpdateUI
<CMainFrame
>,
66 public CMessageFilter
,
72 SortData(int nSortNum
, bool bReverse
) : nSort(nSortNum
), bReverseSort(bReverse
)
79 CCommandBarCtrl m_wndCmdBar
;
80 CSplitterWindow m_wndSplitter
;
81 /// CPaneContainer m_wndFolderTree;
82 CMyPaneContainer m_wndFolderTree
;
83 CTreeViewCtrlEx m_wndTreeView
;
84 CListViewCtrl m_wndListView
;
85 CExplorerCombo m_wndCombo
;
94 // Buffer for OnLVGetDispInfo
95 TCHAR m_szListViewBuffer
[MAX_PATH
];
97 DECLARE_FRAME_WND_CLASS(NULL
, IDR_MAINFRAME
)
99 CMainFrame() : m_nSort(0), m_bReverseSort(false), m_bFirstIdle(true)
102 virtual BOOL
PreTranslateMessage(MSG
* pMsg
)
104 return CFrameWindowImpl
<CMainFrame
>::PreTranslateMessage(pMsg
);
107 virtual BOOL
OnIdle()
111 CComPtr
<IShellFolder
> spFolder
;
112 HRESULT hr
= ::SHGetDesktopFolder(&spFolder
);
117 m_bFirstIdle
= false;
119 FillTreeView(spFolder
, NULL
, TVI_ROOT
);
120 m_wndTreeView
.Expand(m_wndTreeView
.GetRootItem());
121 m_wndTreeView
.SelectItem(m_wndTreeView
.GetRootItem());
130 HWND
CreateAddressBarCtrl(HWND hWndParent
);
134 HRESULT
FillTreeView(LPSHELLFOLDER lpsf
, LPITEMIDLIST lpifq
, HTREEITEM hParent
);
135 static int CALLBACK
CMainFrame::TreeViewCompareProc(LPARAM lparam1
, LPARAM lparam2
, LPARAM lparamSort
);
137 BOOL
FillListView(LPTVITEMDATA lptvid
, LPSHELLFOLDER pShellFolder
);
138 static int CALLBACK
ListViewCompareProc(LPARAM lparam1
, LPARAM lparam2
, LPARAM lparamSort
);
140 BEGIN_MSG_MAP(CMainFrame
)
141 MESSAGE_HANDLER(WM_CREATE
, OnCreate
)
142 COMMAND_RANGE_HANDLER(ID_VIEW_ICONS
, ID_VIEW_LIST
, OnViewChange
)
143 COMMAND_RANGE_HANDLER(ID_VIEW_SORT_NAME
, ID_VIEW_SORT_ATTR
, OnViewSort
)
144 COMMAND_ID_HANDLER(ID_COMBO_GO
, OnComboGo
)
145 COMMAND_ID_HANDLER(ID_VIEW_REFRESH
, OnViewRefresh
)
147 NOTIFY_CODE_HANDLER(NM_RCLICK
, OnNMRClick
)
149 NOTIFY_CODE_HANDLER(TVN_SELCHANGED
, OnTVSelChanged
)
150 NOTIFY_CODE_HANDLER(TVN_ITEMEXPANDING
, OnTVItemExpanding
)
151 NOTIFY_CODE_HANDLER(TVN_DELETEITEM
, OnTVDeleteItem
)
153 NOTIFY_CODE_HANDLER(LVN_GETDISPINFO
, OnLVGetDispInfo
)
154 NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK
, OnLVColumnClick
)
155 NOTIFY_CODE_HANDLER(LVN_DELETEITEM
, OnLVDeleteItem
)
156 NOTIFY_CODE_HANDLER(NM_CLICK
, OnLVItemClick
)
157 NOTIFY_CODE_HANDLER(NM_DBLCLK
, OnLVItemClick
)
159 COMMAND_ID_HANDLER(ID_APP_EXIT
, OnFileExit
)
160 COMMAND_ID_HANDLER(ID_FILE_NEW
, OnFileNew
)
161 COMMAND_ID_HANDLER(ID_FILE_NEW_WINDOW
, OnFileNewWindow
)
162 COMMAND_ID_HANDLER(ID_VIEW_TOOLBAR
, OnViewToolBar
)
163 COMMAND_ID_HANDLER(ID_VIEW_ADDRESS_BAR
, OnViewAddressBar
)
164 COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR
, OnViewStatusBar
)
165 COMMAND_ID_HANDLER(ID_APP_ABOUT
, OnAppAbout
)
166 CHAIN_MSG_MAP(CUpdateUI
<CMainFrame
>)
167 CHAIN_MSG_MAP(CFrameWindowImpl
<CMainFrame
>)
170 BEGIN_UPDATE_UI_MAP(CMainFrame
)
171 UPDATE_ELEMENT(ID_VIEW_TOOLBAR
, UPDUI_MENUPOPUP
)
172 UPDATE_ELEMENT(ID_VIEW_ADDRESS_BAR
, UPDUI_MENUPOPUP
)
173 UPDATE_ELEMENT(ID_VIEW_STATUS_BAR
, UPDUI_MENUPOPUP
)
175 UPDATE_ELEMENT(ID_VIEW_ICONS
, UPDUI_MENUPOPUP
)
176 UPDATE_ELEMENT(ID_VIEW_SMALL_ICONS
, UPDUI_MENUPOPUP
)
177 UPDATE_ELEMENT(ID_VIEW_LIST
, UPDUI_MENUPOPUP
)
178 UPDATE_ELEMENT(ID_VIEW_DETAILS
, UPDUI_MENUPOPUP
)
180 UPDATE_ELEMENT(ID_VIEW_SORT_NAME
, UPDUI_MENUPOPUP
)
181 UPDATE_ELEMENT(ID_VIEW_SORT_SIZE
, UPDUI_MENUPOPUP
)
182 UPDATE_ELEMENT(ID_VIEW_SORT_TYPE
, UPDUI_MENUPOPUP
)
183 UPDATE_ELEMENT(ID_VIEW_SORT_TIME
, UPDUI_MENUPOPUP
)
184 UPDATE_ELEMENT(ID_VIEW_SORT_ATTR
, UPDUI_MENUPOPUP
)
187 LRESULT
OnCreate(UINT
/*uMsg*/, WPARAM
/*wParam*/, LPARAM
/*lParam*/, BOOL
& /*bHandled*/);
188 LRESULT
OnViewChange(WORD
/*wNotifyCode*/, WORD wID
, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
189 LRESULT
OnComboGo(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
190 LRESULT
OnViewRefresh(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
191 LRESULT
OnViewSort(WORD
/*wNotifyCode*/, WORD wID
, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
192 LRESULT
OnNMRClick(int , LPNMHDR pnmh
, BOOL
& );
193 LRESULT
OnTVSelChanged(int /*idCtrl*/, LPNMHDR pnmh
, BOOL
& /*bHandled*/);
194 LRESULT
OnTVItemExpanding(int /*idCtrl*/, LPNMHDR pnmh
, BOOL
& /*bHandled*/);
195 LRESULT
OnTVDeleteItem(int /*idCtrl*/, LPNMHDR pnmh
, BOOL
& /*bHandled*/);
196 LRESULT
OnLVGetDispInfo(int /*idCtrl*/, LPNMHDR pnmh
, BOOL
& /*bHandled*/);
197 LRESULT
OnLVColumnClick(int /*idCtrl*/, LPNMHDR pnmh
, BOOL
& /*bHandled*/);
198 LRESULT
OnLVDeleteItem(int /*idCtrl*/, LPNMHDR pnmh
, BOOL
& /*bHandled*/);
199 LRESULT
OnLVItemClick(int , LPNMHDR pnmh
, BOOL
& );
200 LRESULT
OnFileExit(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
201 LRESULT
OnFileNew(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
202 LRESULT
OnFileNewWindow(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
203 LRESULT
OnViewToolBar(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
204 LRESULT
OnViewAddressBar(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
205 LRESULT
OnViewStatusBar(WORD
/*wNotifyCode*/, WORD
/*wID*/, HWND
/*hWndCtl*/, BOOL
& /*bHandled*/);
206 LRESULT
OnAppAbout(WORD
, WORD
, HWND
, BOOL
& );
209 #endif //__MAINFRM_H__