Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
3.8 KiB

  1. // TaskFrame.h: Definition of the CTaskFrame class
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(__TASKFRAME_H_INCLUDED_)
  5. #define __TASKFRAME_H_INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "resource.h" // main symbols
  10. #include "TaskUI.h"
  11. #include "Page.h"
  12. #include "cdpa.h"
  13. extern HACCEL g_hAccel;
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CTaskFrame
  16. class CTaskFrame :
  17. public CComObjectRoot,
  18. public CWindowImpl<CTaskFrame, CWindow, CFrameWinTraits>,
  19. public ITaskFrame
  20. {
  21. public:
  22. CTaskFrame();
  23. virtual ~CTaskFrame();
  24. DECLARE_NOT_AGGREGATABLE(CTaskFrame)
  25. BEGIN_COM_MAP(CTaskFrame)
  26. COM_INTERFACE_ENTRY(ITaskFrame)
  27. END_COM_MAP()
  28. BEGIN_MSG_MAP(CTaskFrame)
  29. if (g_hAccel && TranslateAcceleratorW(m_hWnd, g_hAccel, (LPMSG)GetCurrentMessage()))
  30. {
  31. return TRUE;
  32. }
  33. MESSAGE_HANDLER(WM_CREATE, _OnCreate)
  34. MESSAGE_HANDLER(WM_SIZE, _OnSize)
  35. MESSAGE_HANDLER(WM_ERASEBKGND, _OnEraseBackground)
  36. COMMAND_ID_HANDLER(ID_BACK, _OnBack)
  37. COMMAND_ID_HANDLER(ID_FORWARD, _OnForward)
  38. COMMAND_ID_HANDLER(ID_HOME, _OnHome)
  39. NOTIFY_HANDLER(IDC_NAVBAR, TBN_GETINFOTIP, _OnTBGetInfoTip)
  40. NOTIFY_HANDLER(IDC_NAVBAR, NM_CUSTOMDRAW, _OnTBCustomDraw)
  41. MESSAGE_HANDLER(WM_APPCOMMAND, _OnAppCommand)
  42. MESSAGE_HANDLER(WM_GETMINMAXINFO, _OnGetMinMaxInfo)
  43. END_MSG_MAP()
  44. public:
  45. // ITaskFrame
  46. STDMETHOD(GetPropertyBag)(REFIID riid, void **ppv)
  47. {
  48. if (ppv == NULL)
  49. return E_POINTER;
  50. if (m_pPropertyBag)
  51. return m_pPropertyBag->QueryInterface(riid, ppv);
  52. return E_UNEXPECTED;
  53. }
  54. STDMETHOD(ShowPage)(REFCLSID rclsidPage, BOOL bTrimHistory);
  55. STDMETHOD(Back)(UINT cPages);
  56. STDMETHOD(Forward)();
  57. STDMETHOD(Home)();
  58. STDMETHOD(Close)()
  59. {
  60. if (IsWindow())
  61. {
  62. SendMessage(WM_CLOSE);
  63. return S_OK;
  64. }
  65. return E_UNEXPECTED;
  66. }
  67. STDMETHOD(SetStatusText)(LPCWSTR pszText);
  68. static HRESULT CreateInstance(IPropertyBag *pPropertyBag, ITaskPageFactory *pPageFactory, CComObject<CTaskFrame> **ppFrameOut);
  69. HWND CreateFrameWindow(HWND hwndOwner, UINT nID = 0, LPVOID pParam = NULL);
  70. protected:
  71. HRESULT _Init(IPropertyBag* pBag, ITaskPageFactory* pPageFact);
  72. private:
  73. IPropertyBag* m_pPropertyBag;
  74. ITaskPageFactory* m_pPageFactory;
  75. Parser *m_pUIParser;
  76. HWND m_hwndNavBar;
  77. HWND m_hwndStatusBar;
  78. HIMAGELIST m_himlNBDef;
  79. HIMAGELIST m_himlNBHot;
  80. Bitmap* m_pbmWatermark;
  81. CDpa<TaskPage, CDpaDestroyer_None> m_dpaHistory;
  82. int m_iCurrentPage;
  83. RECT m_rcPage;
  84. POINT m_ptMinSize;
  85. BOOL m_bResizable;
  86. HRESULT _ReadProp(LPCWSTR pszProp, VARTYPE vt, CComVariant& var);
  87. void _CreateNavBar();
  88. void _SetNavBarState();
  89. HRESULT _CreatePage(REFCLSID rclsidPage, TaskPage **ppPage);
  90. HRESULT _ActivatePage(int iPage, BOOL bInit = FALSE);
  91. HRESULT _DeactivateCurrentPage();
  92. void _SyncPageRect(TaskPage* pPage);
  93. void _DestroyPage(TaskPage* pPage);
  94. LRESULT _OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  95. LRESULT _OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  96. LRESULT _OnEraseBackground(UINT, WPARAM, LPARAM, BOOL&) { return 0; }
  97. LRESULT _OnBack(WORD, WORD, HWND, BOOL&) { Back(1); return 0; }
  98. LRESULT _OnForward(WORD, WORD, HWND, BOOL&) { Forward(); return 0; }
  99. LRESULT _OnHome(WORD, WORD, HWND, BOOL&) { Home(); return 0; }
  100. LRESULT _OnTBGetInfoTip(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  101. LRESULT _OnTBCustomDraw(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  102. LRESULT _OnAppCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  103. LRESULT _OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  104. };
  105. #endif // !defined(__TASKFRAME_H_INCLUDED_)