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|