ChildView.h

C:\home\SVGCats_src\src\ChildView.h

[目次 | 型・クラス・構造体 | マクロ]

目次

型・クラス・構造体一覧

マクロ一覧


   1|// ChildView.h : CChildView クラスのインターフェイスの定義をします。 
   2|//
   3|/////////////////////////////////////////////////////////////////////////////
   4|
   5|#if !defined(AFX_CHILDVIEW_H__46044A28_C587_45EB_807A_795614534A2F__INCLUDED_)
   6|#define AFX_CHILDVIEW_H__46044A28_C587_45EB_807A_795614534A2F__INCLUDED_
   7|
   8|#if _MSC_VER > 1000
   9|#pragma once
  10|#endif // _MSC_VER > 1000
  11|
  12|#include <ddraw.h>
  13|
  14|#define  USES_InkOverlay
  15|class  InkOverlayEvents;
  16|typedef  struct _SVGCat_Page  SVGCat_Page;
  17|
  18|#define  CChildView_Err_NoTabletModule  0x80040154
  19|
  20|
  21|/////////////////////////////////////////////////////////////////////////////
  22|// CChildView ウィンドウ
  23|
  24|class CChildView : public CScrollView
  25|{
  26|    // 1. <<< 手で作成したメンバ変数 >>>
  27|public:
  28|    DECLARE_DYNCREATE(CChildView)
  29|
  30|    /* キャンバス */
  31|    bool     m_bEnableOnPaint;
  32|    bool     m_bFirstPainted;
  33|    CDC      m_BitmapDC;
  34|    CBitmap* m_Bitmap;
  35|    WinX_DDBmp  m_HatchedCanvas;
  36|    CDC      m_MinBitmapDC;
  37|    CBitmap* m_MinBitmap;  /* SetDrawnParam 用 */
  38|    BOOL     m_bBitmap;
  39|    int      m_BitmapWidth;
  40|    int      m_BitmapHeight;
  41|
  42|    #ifdef  SVGCAT_USES_BACKBUF
  43|    WinX_DDBmp  m_BackBmp;
  44|    BOOL     m_bBackBitmap; /* false=非表示 */
  45|    CDC      m_BackBitmapDC;
  46|    CBitmap* m_BackBitmap;
  47|    CPoint   m_BackBitmapOffset;
  48|    int      m_BackBitmapWidth;
  49|    int      m_BackBitmapHeight;
  50|    #endif
  51|
  52|    LPDIRECTDRAW         m_ddraw;
  53|    LPDIRECTDRAWSURFACE  m_priSurf;
  54|    LPDIRECTDRAWSURFACE  m_backSurf;
  55|
  56|    HMENU    m_PrimRightMenu;
  57|    HMENU    m_DragMenu;
  58|
  59|    /* 描画属性 */
  60|    int      m_PrevCreateMode;
  61|    BOOL     m_bWhiteToBGColor;
  62|    POINT    m_MinusOffset;  /* マイナス方向のスクロール */
  63|    bool     m_bExistOutOfCanvas;
  64|    bool     m_bPrinting;
  65|    int      m_Zoom;  /* 倍率(%)*/
  66|    int      m_ZoomNext;  /* 次にしようとしている倍率(%) */
  67|    int      m_ModeBeforeZoom;
  68|    int      m_ZoomMode;
  69|    int      m_ZoomSwitchZoom;    /* スイッチ先の倍率(%)*/
  70|    CPoint   m_ZoomSwitchOffset;  /* スイッチ先の表示オフセット */
  71|    int      m_ZoomSwitchMode;
  72|    int      m_ZoomSwitchPage;
  73|    bool     m_bDisableSwapRec;
  74|
  75|    /* マウスボタン */
  76|    int      m_ClickUpTime1;
  77|    int      m_ClickUpTime2;
  78|    HANDLE   m_DragScroller;
  79|    volatile int      m_MsgToDragScroller;
  80|    HANDLE   m_Blinker;
  81|    volatile int      m_MsgToBlinker;
  82|    int      m_Hold_dx;
  83|    int      m_Hold_dy;
  84|    int      m_DownX;  /* ドラッグを開始した位置(キャンバス座標)、前回のMove位置 */
  85|    int      m_DownY;
  86|    CPoint   m_DownS; /* ドラッグを開始した位置(キャンバス座標) */
  87|    CPoint   m_UpS;   /* ドラッグを終了した位置(キャンバス座標) */
  88|    HCURSOR  m_Cursor;
  89|
  90|    /* デジタルインク */
  91|    #ifdef  USES_InkOverlay
  92|      IInkTablets*    m_InkTablets;    /* SDK keyword = "InkTablets collection", "Tablet object" */
  93|      IInkOverlay*    m_InkOverlay;     /* SDK keyword = "InkOverlay object" */
  94|      IInkRectangle*  m_InkRectangle;
  95|      IPenInputPanel* m_PenInputPanel;  /* SDK keyword = "PenInputPanel object" */
  96|      IInkDrawingAttributes*  m_PenAttr;
  97|      IInkDrawingAttributes*  m_RedPenAttr;
  98|      IInkDrawingAttributes*  m_BluePenAttr;
  99|      IInkDrawingAttributes*  m_MarkerAttr;
 100|      IInkDrawingAttributes*  m_RedMarkerAttr;
 101|      IInkDrawingAttributes*  m_YellowMarkerAttr;
 102|      IInkDrawingAttributes*  m_SelectPenAttr;
 103|      IInkDrawingAttributes*  m_WorkDrawAttr;
 104|      IInkStrokeDisp*  m_DrawingStroke;
 105|      VARIANT  m_PointsOnStroke;
 106|      IInkStrokes*  m_HoldStrokes;  /* m_InkOverlay::Selection と同期を取ること */
 107|      POINT  m_InkResizeHandlePos;  /* m_HoldStrokes == NULL のとき無効 */
 108|      POINT  m_RopeLeaderPos;
 109|      POINT* m_RopePoints;
 110|      int    m_RopeNPoint;
 111|      UINT   m_RopeTimer;
 112|      bool   m_bHitInk;  /* ドラッグ開始時にインクの上かどうか */
 113|      bool   m_bRightTap;
 114|      IInkStrokes*  m_DeletedStrokes;  /* m_InkOverlay::Selection と同期を取ること */
 115|      InkOverlayEvents*  m_InkEvents;
 116|      IInkDisp*  m_Ink;
 117|      IInkStrokes*  m_EmptyStrokes;  /* 空の集合 */
 118|
 119|      float  m_prevX0, m_prevY0;  /* CChildView::OnPaint IInkRenderer::Move に渡した値を戻すため */
 120|      CPoint m_prevScrollPos;  /* 同上 */
 121|      int    m_prevZoom;  /* 同上 */
 122|      bool   m_bMyInkSelectMode;  /* Inkイベント用, Copy of (CMainFrame::m_mode == CMainFrame_UseRope) */
 123|    #endif
 124|    #ifdef  USES_INK
 125|      Ink_Line*  m_HoldInk;
 126|    #endif
 127|
 128|    /* 図形選択状態 */
 129|    BOOL     m_bDrag;
 130|    BOOL     m_bDblDrag;
 131|    bool     m_bRightDrag;
 132|    bool     m_bRightMenuAble;
 133|    BOOL     m_bSelectedClick;  /* 選択中の図形をクリックしたかどうか */
 134|    UINT     m_SingleDblClickTimer;
 135|    BOOL     m_bInDragPlay;  /* ドラッグを開始するまでの遊びの中かどうか */
 136|    int      m_PrevCanvasHeight;  /* 行操作用, -1=行操作していない */
 137|    BOOL     m_bDragGrided;
 138|    CInputML*   m_InputML;  /* 自動保存用 */
 139|    CInputML1*  m_InputML1;  /* 自動保存用 */
 140|    bool     m_bInputML_bDispPenPanel;
 141|    BOOL     m_bCreate;
 142|    BOOL     m_bFirstCreate;
 143|    CadPrim* m_HoldPrim;
 144|    CadPrim* m_DragPrim;  /* ドラッグを始めたときの図形 */
 145|    int      m_iHoldHandle;  /* m_HoldPrim == NULL のときは、1=キャンパスサイズ、2=複数選択 */
 146|                             /* -1=移動、-2=複数移動, -3=リサイズ */
 147|    CadPrim* m_BeforePrim;  /* アンドゥバッファ用図形データ */
 148|    int      m_TextCreateX, m_TextCreateY;
 149|    Text_Editor*  m_Editor;
 150|    bool     m_bEditorEnable;
 151|    bool     m_bUnholdable;
 152|
 153|    ListX    m_MultiHolds;  /* 複数選択: m_HoldPrim も含む */
 154|                            /* ListX_ElemX:CadPrim* 型 */
 155|    ListX    m_MultiBefore;  /* 複数選択: アンドゥバッファ用図形データ、m_MultiHoldsと対応 */
 156|
 157|    ListX    m_MultiSelects;  /* 複数選択: リンクしている図形も含む */
 158|                     /* ListX_ElemX:CadPrim* 型,クリップボード用,複数選択時の移動用 */
 159|
 160|
 161|    // 2. <<< 手で作成したメンバ関数 >>>
 162|    void     SetMultiSelect();
 163|    void     ResetSelect( bool bUpdatePropBox = true );
 164|    void     SyncHoldStrokes();
 165|    void     SelectInkToEmpty();
 166|    int      GetStrokeCount();
 167|    int      GetSelectedStrokeCount();
 168|    void     OnSetPropMulti();
 169|
 170|    /* 描画する */
 171|    void     PrintSub( CDC* dc, SVGCat_Page* page, int pageNum, int zoom_ras, int horizontal, int vertical );
 172|    void     PaintToImage( int iPage, const char* path );
 173|    void     Redraw( bool bAll );
 174|    void     RedrawWidthArea( CDC* dc, int x1, int y1, int x2, int y2 );
 175|    void     RedrawZoomArea( CDC*, int x, int y );
 176|    void     DrawAll( CDC* dc, bool bClip, bool bSrolll = true, bool bDisableDrawingHandle = false,
 177|               bool bDisableGrid = false );
 178|    void     ResetScrollAndScale();
 179|    void     DrawOutOfCanvas( CDC* dc );
 180|    void     GetDrawParam( CadPrim_DrawParam* );
 181|    void     OnDraw(CDC* pDC);
 182|    void     DrawBackBitmap();
 183|    #ifndef  NDEBUG
 184|    void     DebugDrawStrokes( IInkStrokes* strokes );
 185|    void     DebugPrintStrokes( IInkStrokes* strokes );
 186|    #endif
 187|    void     SetDrawnParam( ListX* prims );
 188|
 189|    /* インク */
 190|    void     OnStroke( IInkCursor* Cursor, IInkStrokeDisp* Stroke,
 191|              VARIANT_BOOL* Cancel );
 192|    void     OnNewPackets( IInkCursor* Cursor, IInkStrokeDisp* Stroke,
 193|               long PacketCount, VARIANT* PacketData );
 194|    void     OnDrawRopeTiming();
 195|    void     OnCursorDown( IInkCursor* Cursor, IInkStrokeDisp* Stroke );
 196|    void     OnSystemGesture( IInkCursor* Cursor, InkSystemGesture Id,
 197|               long X, long Y, long Modifier, BSTR Character, long CursorMode );
 198|    void     OnStrokesDeleting( IInkStrokes* Strokes );
 199|    void     OutInkSVG( FILE* f, InkRasterOperation outRaster );
 200|    void     InInkSVG( FILE* f );
 201|    WCHAR*   InInkRawData( FILE* f );
 202|    bool     IsDirty();
 203|    void     NewInkOverlay();
 204|    bool     IsHitSelectedInk( long x, long y );
 205|    IInkStrokes*  DuplicateStrokes( IInkStrokes* src );
 206|    void     SetResizeHandle();
 207|
 208|    #ifndef  NDEBUG
 209|      int     GetInkCount();
 210|    #endif
 211|
 212|    /* その他 */
 213|    int      GetClipSize( bool bPageCopy );
 214|    void     GetClipData( void* p, bool bPageCopy );
 215|    void     Paste( void* p, int count, RECT* pasteArea );
 216|    void     PasteAdjust( ListX* ids, int dx, int dy );
 217|    void     PasteText( void* data, bool bMultiText, RECT* pasteArea );
 218|    void     AnimateOnPaste();
 219|
 220|    void     SetCursorSVGCats( CPoint& point );
 221|    void     OnDel_setUndoBuf( CadPrim* prim );
 222|    void     OnDel_sub( CadPrim* );
 223|    void     OnClose2();
 224|
 225|    Text_Box*  NewTextOnEditPaste();
 226|    void     SetBeforePrim();
 227|    void     OnFinishPrimMove();
 228|    void     AutoAdjustXY( long* x, long* y, bool bAutoAdjust, bool bHoriVert );
 229|    void     Zoom( int zoom );
 230|    void     SetZoomByCulc();
 231|    void     SetScrollSize();
 232|    void     ResetScrollPos();
 233|    void     StartCountForDragScroll();
 234|    void     EndDragScroll();
 235|    void     OnDragScrollTiming();
 236|    void     ZBottom( CadPrim* target );
 237|
 238|
 239|    afx_msg void OnDel();
 240|
 241|    void OnLButtonUp_Create(UINT nFlags, CPoint point);
 242|    void OnLButtonUp_DlagPrim(UINT nFlags, CPoint point);
 243|    void OnLButtonUp_DlagCanvas(UINT nFlags, CPoint point);
 244|    void OnLButtonUp_DblDlagPrim(UINT nFlags, CPoint point);
 245|
 246|
 247|// コンストラクタ
 248|public:
 249|    CChildView();
 250|
 251|// アトリビュート
 252|public:
 253|
 254|// オペレーション
 255|public:
 256|
 257|// オーバーライド
 258|    // ClassWizard は仮想関数のオーバーライドを生成します。
 259|    //{{AFX_VIRTUAL(CChildView)
 260|	public:
 261|	virtual BOOL PreTranslateMessage(MSG* pMsg);
 262|	protected:
 263|    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
 264|	//}}AFX_VIRTUAL
 265|
 266|// インプリメンテーション
 267|public:
 268|
 269|    // 3. <<< 生成されたメッセージ マップ関数 >>>
 270|
 271|    //{{AFX_MSG(CChildView)
 272|    afx_msg int  OnCreate(LPCREATESTRUCT lpCreateStruct);
 273|    afx_msg void OnPaint();
 274|    afx_msg void OnPrint();
 275|	afx_msg void OnSize(UINT nType, int cx, int cy);
 276|    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
 277|    afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
 278|    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
 279|    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
 280|    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
 281|    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
 282|    afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
 283|    afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
 284|    afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
 285|    afx_msg void OnSelectAll();
 286|    afx_msg void OnDragCopy();
 287|    afx_msg void OnDragMove();
 288|    afx_msg void OnDragCancel();
 289|    afx_msg void OnEditUndo();
 290|    afx_msg void OnEditRedo();
 291|    afx_msg void OnRetKey();
 292|    afx_msg void OnSpcKey();
 293|    afx_msg void OnZBottom();
 294|    afx_msg void OnZDown();
 295|    afx_msg void OnZTop();
 296|    afx_msg void OnZUp();
 297|    afx_msg void OnPrimDown();
 298|    afx_msg void OnPrimLeft();
 299|    afx_msg void OnPrimRight();
 300|    afx_msg void OnPrimUp();
 301|    afx_msg void OnZoom();
 302|    afx_msg void OnZoom100();
 303|    afx_msg void OnZoom200();
 304|    afx_msg void OnZoom400();
 305|    afx_msg void OnZoom800();
 306|	afx_msg void OnZoomWhole();
 307|	afx_msg void OnZoomWidth();
 308|	afx_msg void OnZoomSwap();
 309|	afx_msg void OnZoomIn();
 310|	afx_msg void OnZoomOut();
 311|    afx_msg void OnCatchGrid();
 312|    afx_msg void OnDisplayGrid();
 313|    afx_msg void OnUpdateCatchGrid(CCmdUI* pCmdUI);
 314|    afx_msg void OnUpdateDisplayGrid(CCmdUI* pCmdUI);
 315|    afx_msg void OnSetStdGrid();
 316|	afx_msg void OnSetPageButton();
 317|	afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
 318|	afx_msg void OnTimer(UINT nIDEvent);
 319|	afx_msg void OnNextPageScroll();
 320|	afx_msg void OnPrevPageScroll();
 321|	//}}AFX_MSG
 322|
 323|    afx_msg void OnGridSizeMeter();
 324|    afx_msg void OnUpdateGridSizeMeter(CCmdUI* pCmdUI);
 325|    afx_msg void OnGridSizePixel();
 326|    afx_msg void OnUpdateGridSizePixel(CCmdUI* pCmdUI);
 327|    DECLARE_MESSAGE_MAP()
 328|};
 329|
 330|DWORD WINAPI CChildView_DragScroller( CChildView* m );
 331|DWORD WINAPI CChildView_Blinker( CChildView* m );
 332|
 333|/////////////////////////////////////////////////////////////////////////////
 334|
 335|void  CChildView_saveOnEditing( CChildView* m, CInputML* dlg );
 336|void  CChildView_saveOnEditing1( CChildView* m, CInputML1* dlg );
 337|
 338|#define  CChildView_ZoomNormal 1
 339|#define  CChildView_ZoomWhole  2
 340|#define  CChildView_ZoomWidth  3
 341|
 342|
 343|#define  CChildView_RopeMPoint  1024
 344|
 345|
 346|//{{AFX_INSERT_LOCATION}}
 347|// Microsoft Visual C++ が新しい定義を加える場合には、この行よりも前に追加します。
 348|
 349|#endif // !defined(AFX_CHILDVIEW_H__46044A28_C587_45EB_807A_795614534A2F__INCLUDED_)
 350| 
 351|