prevwnd.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 7k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef __PREVIEWWND_H_
  2. #define __PREVIEWWND_H_
  3. #include "resource.h"       // main symbols
  4. #include "ZoomWnd.h"
  5. #include <wininet.h>
  6. // forward declaration
  7. class CPreview;
  8. // messages for the Preview Window
  9. #define IV_SETBITMAP    (WM_USER+99)
  10. #define IV_SETIMGCTX    (WM_USER+100)   // PRIVATE
  11. #define IV_SHOWFILEA    (WM_USER+101)
  12. #define IV_SHOWFILEW    (WM_USER+102)
  13. #define IV_ZOOM         (WM_USER+103)
  14. #define IV_SCROLL       (WM_USER+104)
  15. #define IV_BESTFIT      (WM_USER+105)
  16. #define IV_ACTUALSIZE   (WM_USER+106)
  17. #define IV_SETOPTIONS   (WM_USER+107)
  18. #define IV_GETOPTIONS   (WM_USER+108)
  19. #ifdef UNICODE
  20. #define IV_SHOWFILE IV_SHOWFILEW
  21. #else
  22. #define IV_SHOWFILE IV_SHOWFILEA
  23. #endif
  24. // IV_SCROLL message parameters
  25. #define IVS_LEFT        (SB_LEFT)
  26. #define IVS_RIGHT       (SB_RIGHT)
  27. #define IVS_LINELEFT    (SB_LINELEFT)
  28. #define IVS_LINERIGHT   (SB_LINERIGHT)
  29. #define IVS_PAGELEFT    (SB_PAGELEFT)
  30. #define IVS_PAGERIGHT   (SB_PAGERIGHT)
  31. #define IVS_UP          (SB_LEFT<<16)
  32. #define IVS_DOWN        (SB_RIGHT<<16)
  33. #define IVS_LINEUP      (SB_LINELEFT<<16)
  34. #define IVS_LINEDOWN    (SB_LINERIGHT<<16)
  35. #define IVS_PAGEUP      (SB_PAGELEFT<<16)
  36. #define IVS_PAGEDOWN    (SB_PAGERIGHT<<16)
  37. // IV_ZOOM messages
  38. #define IVZ_CENTER  0
  39. #define IVZ_POINT   1
  40. #define IVZ_RECT    2
  41. #define IVZ_ZOOMIN  0x00000000
  42. #define IVZ_ZOOMOUT 0x00010000
  43. // IV_SETOPTIONS and IV_GETOPTIONS messages
  44. #define IVO_TOOLBAR         0
  45. #define IVO_PRINTBTN        1
  46. #define IVO_FULLSCREENBTN   2
  47. #define IVO_CONTEXTMENU     3
  48. #define IVO_PRINTABLE       4
  49. #define IVO_ALLOWGOONLINE   5
  50. // some typedefs for WinInet functions
  51. typedef BOOL (* IQOFN)(HINTERNET, DWORD, LPVOID, LPDWORD);
  52. typedef BOOL (* IGCSFN)(LPDWORD, DWORD);
  53. /////////////////////////////////////////////////////////////////////////////
  54. // CPreviewWnd
  55. class CPreviewWnd :
  56. public CWindowImpl<CPreviewWnd>
  57. {
  58. public:
  59.     CContainedWindow m_ctlToolbar;
  60.     CZoomWnd         m_ctlPreview;
  61.     CPreviewWnd *    m_pcwndDetachedPreview;
  62.     CPreviewWnd(bool bShowToolbar=true);
  63.     CPreviewWnd(CPreviewWnd & other);
  64.     ~CPreviewWnd();
  65.     void SetNotify( CPreview * pControl );
  66.     BOOL GetPrintable( );
  67.     int  TranslateAccelerator( LPMSG lpmsg );
  68.     void StatusUpdate( int iStatus );   // used to set m_ctlPreview.m_iStrID to display correct status message
  69.     DECLARE_WND_CLASS( TEXT("ShImgVw:CPreviewWnd") );
  70. BEGIN_MSG_MAP(CPreviewWnd)
  71.     MESSAGE_HANDLER(WM_CREATE, OnCreate)
  72.     MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
  73.     MESSAGE_HANDLER(WM_SIZE, OnSize)
  74.     COMMAND_RANGE_HANDLER(ID_ZOOMINCMD, ID_PRINTCMD, OnToolbarCommand)
  75.     MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
  76.     NOTIFY_CODE_HANDLER(TTN_NEEDTEXT, OnNeedText)
  77.     MESSAGE_HANDLER(WM_MOUSEWHEEL, OnWheelTurn)
  78.     MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
  79.     MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
  80.     MESSAGE_HANDLER(IV_SETBITMAP, IV_OnSetBitmap)
  81.     MESSAGE_HANDLER(IV_SETIMGCTX, IV_OnSetImgCtx)
  82.     MESSAGE_HANDLER(IV_SHOWFILEA, IV_OnShowFileA)
  83.     MESSAGE_HANDLER(IV_SHOWFILEW, IV_OnShowFileW)
  84.     MESSAGE_HANDLER(IV_ZOOM, IV_OnZoom)
  85.     MESSAGE_HANDLER(IV_SCROLL, IV_OnIVScroll)
  86.     MESSAGE_HANDLER(IV_BESTFIT, IV_OnBestFit)
  87.     MESSAGE_HANDLER(IV_ACTUALSIZE, IV_OnActualSize)
  88.     MESSAGE_HANDLER(IV_SETOPTIONS, IV_OnSetOptions)
  89. ALT_MSG_MAP(1)
  90.     // messages for the toolbar
  91.     MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseToolbar)
  92.     MESSAGE_HANDLER(WM_KEYDOWN, OnKeyEvent)
  93.     MESSAGE_HANDLER(WM_KEYUP, OnKeyEvent)
  94. END_MSG_MAP()
  95. protected:
  96.     /////////////////////////////////////////////////////////////////////////
  97.     // Preview Window Message Handlers (PV_*)
  98.     //
  99.     LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  100.     LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  101.     LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  102.     LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  103.     LRESULT OnWheelTurn(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  104.     LRESULT OnNeedText(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  105.     LRESULT OnToolbarCommand(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  106.     LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  107.     LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  108.     // Image generation message handlers and functions
  109.     LRESULT IV_OnSetBitmap(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  110.     LRESULT IV_OnShowFileA(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  111.     LRESULT IV_OnShowFileW(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  112.     LRESULT IV_OnZoom(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  113.     LRESULT IV_OnIVScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  114.     LRESULT IV_OnBestFit(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  115.     LRESULT IV_OnActualSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  116.     LRESULT IV_OnSetImgCtx(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  117. public:
  118.     LRESULT IV_OnSetOptions(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  119. protected:
  120.     // Toolbar message handlers (both toolbars)
  121.     LRESULT OnEraseToolbar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  122.     LRESULT OnKeyEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  123.     bool CreateToolbar();
  124.     TCHAR * GetFSPTitle( TCHAR * szTitle, int cchMax );
  125.     LRESULT OnShowFile(LPTSTR szFilename, WPARAM iCount);
  126.     HRESULT PreviewFromFile(LPCTSTR bstrFilename, INT * iResultReturnCode);
  127.     void FlushBitmapMessages();
  128.     BOOL m_fHidePrintBtn;
  129.     BOOL m_fHideFullscreen;
  130.     BOOL m_fAllowContextMenu;
  131.     BOOL m_fAllowGoOnline;      // if true, we'll go "online" (i.e. dial the modem) if needed, defaults to FALSE
  132.     BOOL m_fShowToolbar;
  133.     BOOL m_fPrintable;      // Stupid printing crap that LarryE wanted
  134.     BOOL m_fOwnsHandles;    // if true then we own m_hbitmap and should delete it when no longer used
  135.     
  136.     HACCEL      m_haccel;
  137.     CPreview *  m_pControl;  // pointer to our parent control.  NULL if we aren't running as a control.
  138.     LPTSTR      m_pszFilename;  // The filename
  139.     HBITMAP     m_hbitmap;      // The bitmap handle if the user set this directly
  140.     IImgCtx *   m_pImgCtx;      // Used when decoding the interface
  141.     IImgCtx *   m_pImgCtxReady; // Used once the interface is already decoded
  142.     
  143.     HPALETTE    m_hpal;         // the palette to use if in palette mode.
  144.     HINSTANCE   m_hWininet;
  145.     IQOFN       m_pfnInternetQueryOptionA;
  146.     IGCSFN      m_pfnInternetGetConnectedState;
  147. };
  148. #endif