⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cprintpreview.h

📁 日本的开源编辑器源码
💻 H
字号:
/*!	@file
	@brief 印刷プレビュー管理クラス

	@author YAZAKI
	@date 2002/1/11 新規作成
	$Revision: 1.6 $
*/
/*
	Copyright (C) 2002, YAZAKI

	This source code is designed for sakura editor.
	Please contact the copyright holder to use this code for other purpose.
*/
class CPrintPreview;

#ifndef _CPRINTPREVIEW_H_
#define _CPRINTPREVIEW_H_
#include "CShareData.h"
#include "CPrint.h" // 2002/2/10 aroka
#include <windows.h> // 2002/2/10 aroka

class CPrintPreview {
/* メンバ関数宣言 */
public:
	/*
	||  コンストラクタ
	*/
	CPrintPreview( class CEditWnd* pParentWnd );
	~CPrintPreview();
	
	/*
	||	イベント
	*/
	//	Window Messages
	LRESULT OnPaint( HWND, UINT, WPARAM, LPARAM );	/* 描画処理 */
	LRESULT OnSize( WPARAM, LPARAM );				/* WM_SIZE 処理 */
	LRESULT OnVScroll( WPARAM wParam, LPARAM lParam );
	LRESULT OnHScroll( WPARAM wParam, LPARAM lParam );
	LRESULT OnMouseMove( WPARAM wParam, LPARAM lParam );
	LRESULT OnMouseWheel( WPARAM wParam, LPARAM lParam );

	//	User Messages
	void OnChangePrintSetting( void );
	void OnPreviewGoPage( int nPage );	/* プレビュー ページ指定 */
	void OnPreviewGoPreviousPage(){ OnPreviewGoPage( m_nCurPageNum - 1 ); }		//	前のページへ
	void OnPreviewGoNextPage(){ OnPreviewGoPage( m_nCurPageNum + 1 ); }		//	前のページへ
	void OnPreviewZoom( BOOL bZoomUp );
	void OnPrint( void );	/* 印刷実行 */
	BOOL OnPrintPageSetting( void );

	/*
	||	コントロール
	*/
	//	スクロールバー
	void InitPreviewScrollBar( void );
	
	//	PrintPreviewバー(画面上部のコントロール)
	void CreatePrintPreviewControls( void );
	void DestroyPrintPreviewControls( void );

	void SetFocusToPrintPreviewBar( void );
	HWND GetPrintPreviewBarHANDLE( void ){ return m_hwndPrintPreviewBar;	}
	
	//	PrintPreviewバーのメッセージ処理。
	//	まずPrintPreviewBar_DlgProcにメッセージが届き、DispatchEvent_PPBに転送する仕組み
	static INT_PTR CALLBACK PrintPreviewBar_DlgProc(
		HWND	hwndDlg,	// handle to dialog box
		UINT	uMsg,		// message
		WPARAM	wParam,		// first message parameter
		LPARAM	lParam		// second message parameter
	);
	INT_PTR DispatchEvent_PPB(
		HWND	hwndDlg,	// handle to dialog box
		UINT	uMsg,		// message
		WPARAM	wParam,		// first message parameter
		LPARAM	lParam 		// second message parameter
	);

protected:
	/*
	||	描画。
	||	DrawXXXXX()は、現在のフォントを半角フォントに設定してから呼び出すこと。
	||	また、DrawXXXXX()から抜けてきたときは、半角フォントに設定されていることを期待してよい。
	||	フォントは、半角フォントと全角フォントしかないことも期待してよい。
	*/
	void DrawHeader( HDC hdc, RECT& rect, HFONT hFontZen );
	void DrawPageText( HDC, int, int, int, HFONT hFontZen, class CDlgCancel* );
	void DrawFooter( HDC hdc, RECT& rect, HFONT hFontZen );

	/* 印刷/プレビュー 行描画 */
	void Print_DrawLine(
		HDC			hdc,
		int			x,
		int			y,
		const char*	pLine,
		int			nLineLen,
		HFONT		hFontZen
	);

public:
	//	フォント列挙
	static int CALLBACK MyEnumFontFamProc(
		ENUMLOGFONT*	pelf,		// pointer to logical-font data
		NEWTEXTMETRIC*	pntm,		// pointer to physical-font data
		int				nFontType,	// type of font
		LPARAM			lParam 		// address of application-defined data
	);
	
	/*
	||	アクセサ
	*/
	void SetPrintSetting( PRINTSETTING* pPrintSetting ){ m_pPrintSetting = pPrintSetting; }
	BOOL GetDefaultPrinterInfo(){ return m_cPrint.GetDefaultPrinter( &m_pPrintSetting->m_mdmDevMode ); };
	int  GetCurPageNum(){ return m_nCurPageNum; }	/* 現在のページ */
	int  GetAllPageNum(){ return m_nAllPageNum; }	/* 現在のページ */

	
	/*
	||	ヘッダ?フッタ
	*/
	void SetHeader(char* pszWork[]);	//	&fなどを登録
	void SetFooter(char* pszWork[]);	//	&p/&Pなどを登録

protected:
	void SetPreviewFontHan( LOGFONT* lf );
	void SetPreviewFontZen( LOGFONT* lf );

/* メンバ変数宣言 */
public:
	/* none */

protected:
	CEditWnd*		m_pParentWnd;	//	親のCEditDoc*。
	
	/*	コントロール制御用	*/
	//	操作バー
	HWND			m_hwndPrintPreviewBar;	/* 印刷プレビュー 操作バー */
	//	スクロールバー
	int				m_nPreviewVScrollPos;	/* 印刷プレビュー:スクロール位置縦 */
	int				m_nPreviewHScrollPos;	/* 印刷プレビュー:スクロール位置横 */
	BOOL			m_SCROLLBAR_HORZ;
	BOOL			m_SCROLLBAR_VERT;
	HWND			m_hwndVScrollBar;	/* 垂直スクロールバーウィンドウハンドル */
	HWND			m_hwndHScrollBar;	/* 水平スクロールバーウィンドウハンドル */
	//	サイズボックス
	HWND			m_hwndSizeBox;		/* サイズボックスウィンドウハンドル */
	BOOL			m_SizeBoxCanMove;	/* サイズボックスウィンドウハンドルを動かせるかどうか */
	
	//	表示
	int				m_nPreview_Zoom;	/* 印刷プレビュー:倍率 */
	
	//	印刷位置を決定するための変数
	int				m_nPreview_ViewWidth;		/* 印刷プレビュー:ビュー幅(ピクセル) */
	int				m_nPreview_ViewHeight;		/* 印刷プレビュー:ビュー高さ(ピクセル) */
	int				m_nPreview_ViewMarginLeft;	/* 印刷プレビュー:ビュー左端と用紙の間隔(1/10mm単位) */
	int				m_nPreview_ViewMarginTop;	/* 印刷プレビュー:ビュー左端と用紙の間隔(1/10mm単位) */
	int				m_nPreview_PaperAllWidth;	/* 用紙幅(1/10mm単位) */
	int				m_nPreview_PaperAllHeight;	/* 用紙高さ(1/10mm単位) */
	int				m_nPreview_PaperWidth;	/* 用紙印刷有効幅(1/10mm単位) */
	int				m_nPreview_PaperHeight;	/* 用紙印刷有効高さ(1/10mm単位) */
	int				m_nPreview_PaperOffsetLeft;	/* 用紙余白左端(1/10mm単位) */
	int				m_nPreview_PaperOffsetTop;	/* 用紙余白上端(1/10mm単位) */
//	int				m_nPreview_PaperOffsetRight;	/* 用紙余白右端(1/10mm単位) */
//	int				m_nPreview_PaperOffsetBottom;	/* 用紙余白下端(1/10mm単位) */
	int				m_bPreview_EnableColms;	/* 印字可能桁数/ページ */
	int				m_bPreview_EnableLines;	/* 印字可能行数/ページ */
	int				m_nPreview_LineNumberColmns;	/* 行番号エリアの幅(文字数) */
	int				m_nAllPageNum;	/* 全ページ数 */
	int				m_nCurPageNum;	/* 現在のページ */

	PRINTSETTING*	m_pPrintSetting;	/* 現在の印刷設定 */
	LOGFONT			m_lfPreviewHan;	/* プレビュー用フォント */
	LOGFONT			m_lfPreviewZen;	/* プレビュー用フォント */

	class CLayoutMgr*	m_pLayoutMgr_Print;	/* 印刷用のレイアウト管理情報 */

	int				m_pnDx[10240 + 10];	/* 文字列描画用文字幅配列 */
	// プレビューから出ても現在のプリンタ情報を記憶しておけるようにstaticにする 2003.05.02 かろと 
	static CPrint	m_cPrint;		//!< 現在のプリンタ情報
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -