所謂テキストファイルを印刷するツールです。emacsと連携しやすくなっています。
リビジョン | c4be40ec5d246e6a5b0f04681d271b3c3207e478 (tree) |
---|---|
日時 | 2005-05-12 23:39:41 |
作者 | tfuruka1 <tfuruka1> |
コミッター | tfuruka1 |
Build日時の対応
@@ -153,7 +153,7 @@ FONT 9, " | ||
153 | 153 | BEGIN |
154 | 154 | DEFPUSHBUTTON "OK",IDOK,194,56,50,14 |
155 | 155 | CONTROL 112,IDC_STATIC,"Static",SS_BITMAP,7,7,27,32 |
156 | - CTEXT "Static\nhoge",IDC_ST_VERSION,38,7,206,22 | |
156 | + CTEXT "Static\nhoge",IDC_ST_VERSION,38,7,206,29 | |
157 | 157 | CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,7,41,237,1 |
158 | 158 | LTEXT "メモリ使用率",IDC_STATIC,186,45,41,8 |
159 | 159 | LTEXT "物理メモリの総容量",IDC_STATIC,7,45,63,8 |
@@ -1,9 +1,13 @@ | ||
1 | 1 | /* -*- mode: C++; coding: sjis; -*- |
2 | + * $Id: ak2prs.h,v 1.30 2005/05/12 14:39:41 tfuruka1 Exp $ | |
3 | + * $Name: $ | |
2 | 4 | * |
3 | 5 | * 「ak2psのようなもの」のサーバ側のヘッダファイル |
4 | 6 | * |
5 | - * $Id: ak2prs.h,v 1.29 2005/05/08 12:57:24 tfuruka1 Exp $ | |
6 | 7 | * $Log: ak2prs.h,v $ |
8 | + * Revision 1.30 2005/05/12 14:39:41 tfuruka1 | |
9 | + * Build日時の対応 | |
10 | + * | |
7 | 11 | * Revision 1.29 2005/05/08 12:57:24 tfuruka1 |
8 | 12 | * X-Face関連の追加 |
9 | 13 | * |
@@ -138,7 +142,10 @@ | ||
138 | 142 | |
139 | 143 | #include "ver.h" |
140 | 144 | #define VERSION "ak2pr Version " MAKE_VERSION "($Name: $)" |
141 | -#define COPYRIGHT_STR "Copyright(C) 1997-2005 By T.Furukawa" | |
145 | +#define BUILD "Build: " __DATE__ " " __TIME__ | |
146 | +#define COPYRIGHT_STR "Copyright(C) 1997-2005 T.Furukawa" | |
147 | +#define COPYRIGHT VERSION " " COPYRIGHT_STR\ | |
148 | +"\n(tfuruka1@nifty.com) " BUILD | |
142 | 149 | |
143 | 150 | #include <windows.h> |
144 | 151 | #include <windowsx.h> |
@@ -168,9 +175,6 @@ | ||
168 | 175 | |
169 | 176 | #define SV_EXE_NAME "ak2prSV.EXE" |
170 | 177 | |
171 | -#define COPYRIGHT VERSION " " COPYRIGHT_STR\ | |
172 | -"\n(tfuruka1@nifty.com)" TIMESTAMP | |
173 | - | |
174 | 178 | // 1バイト目が漢字コードか否かチェックするマクロ |
175 | 179 | #define IsKanjiSJIS(c) (((c) >= 0x81 && (c) <= 0x9f) ||\ |
176 | 180 | ((c) >= 0xe0 && (c) <= 0xfc)) |
@@ -1,441 +1,441 @@ | ||
1 | -/* -*- mode: c++; coding: sjis; -*- | |
2 | - * Time-stamp: <2005-05-11 01:16:54 tfuruka1> | |
3 | - * | |
4 | - * ak2psのようなもののテスト印字関連 | |
5 | - * | |
6 | - * $Id: testprint.c,v 1.10 2005/05/10 16:18:07 tfuruka1 Exp $ | |
1 | +/* -*- mode: c++; coding: sjis; -*- | |
2 | + * Time-stamp: <2005-05-12 22:49:48 tfuruka1> | |
3 | + * | |
4 | + * ak2psのようなもののテスト印字関連 | |
5 | + * | |
6 | + * $Id: testprint.c,v 1.11 2005/05/12 14:39:41 tfuruka1 Exp $ | |
7 | 7 | * $Log: testprint.c,v $ |
8 | + * Revision 1.11 2005/05/12 14:39:41 tfuruka1 | |
9 | + * Build日時の対応 | |
10 | + * | |
8 | 11 | * Revision 1.10 2005/05/10 16:18:07 tfuruka1 |
9 | 12 | * 焦って修正したら、アクセスヴァイオレーションになってしまった。反省。 |
10 | - * | |
11 | - * Revision 1.9 2005/05/10 16:10:56 tfuruka1 | |
12 | - * コンパイルエラーの修正(^^; | |
13 | - * | |
14 | - * Revision 1.8 2005/05/10 16:06:52 tfuruka1 | |
15 | - * Nameキーワードの置換を追加しました。 | |
16 | - * | |
17 | - * Revision 1.7 2005/05/07 12:13:15 tfuruka1 | |
18 | - * CVSのNameキーワードを和名に変換する処理を作ってみたので、変換処理を組 | |
19 | - * み込んでみました。 | |
20 | - * | |
21 | - * Revision 1.6 2005/01/15 11:58:09 tfuruka1 | |
22 | - * 印刷タイトルのak2prが重複して表示されていた部分を修正しました。 | |
23 | - * | |
24 | - * Revision 1.5 2004/06/18 00:57:56 tfuruka1 | |
25 | - * 改行コードの修正のみです。 | |
26 | - * | |
27 | - * Revision 1.4 2004/01/19 05:39:09 tfuruka1 | |
28 | - * フォント情報を指定出来るようになった事に関する修正を行いました。 | |
29 | - * | |
30 | - * Revision 1.3 2001/12/23 10:21:43 tfuruka1 | |
31 | - * ●プレビューモードの判断方法を修正 | |
32 | - * | |
33 | - * Revision 1.2 2001/12/18 04:01:00 tfuruka1 | |
34 | - * プレビューを表示できるように修正 | |
35 | - * | |
36 | - * Revision 1.1 2001/02/05 17:42:12 tfuruka1 | |
37 | - * Initial revision | |
38 | - * | |
39 | - */ | |
40 | -// (replace-regexp "/\\*\\(.+\\)\\*/" "//\\1") | |
41 | -// (replace-regexp "[ \t]+$" "") | |
42 | - | |
43 | -#include "ak2prs.h" | |
44 | -#include "ak2pr.h" | |
45 | - | |
46 | -/* ------------------------------------------------------------------- | |
47 | - * クロスを描画する。(x, y)を中心として半径rの円の中にクロスを描画する。 | |
48 | - * デバイスコンテキストは呼び出し側で用意し, ペンがセレクトされている | |
49 | - * 状態である事。 | |
50 | - * *-----------------------------------------------------------------*/ | |
51 | -static void DrawCross( | |
52 | - HDC hDC, // デバイスコンテキスト | |
53 | - int x, | |
54 | - int y, | |
55 | - int xr, // 水平方向の半径 | |
56 | - int yr // 垂直方向の半径 | |
57 | - ) | |
58 | -{ | |
59 | - POINT pt[2]; | |
60 | - | |
61 | - Arc(g_MailBox.hDC, x - xr, y - yr, x + xr, y + yr, x + xr, y, x + xr, y); | |
62 | - | |
63 | - pt[0].x = pt[1].x = x; | |
64 | - pt[0].y = y + yr; | |
65 | - pt[1].y = y - yr; | |
66 | - Polyline(g_MailBox.hDC, &pt[0], 2); | |
67 | - | |
68 | - pt[0].y = pt[1].y = y; | |
69 | - pt[0].x = x + xr; | |
70 | - pt[1].x = x - xr; | |
71 | - Polyline(g_MailBox.hDC, &pt[0], 2); | |
72 | -} | |
73 | - | |
74 | -/* ------------------------------------------------------------------- | |
75 | - * トンボを描画する。用紙の1inchi内側にトンボを切る | |
76 | - * *-----------------------------------------------------------------*/ | |
77 | -void DrawTombow(void) | |
78 | -{ | |
79 | - HPEN hPen, hOldPen; // ペン | |
80 | - POINT pt[4]; | |
81 | - int x, y, i, nWd; // 汎用 | |
82 | - int nPaperWidth = GetPrtWd(); | |
83 | - int nPaperHeight = GetPrtHt(); | |
84 | - int nDPIW = GetPrtDpiW(); | |
85 | - int nDPIH = GetPrtDpiH(); | |
86 | - int nPaperMarginW = GetPrtMgW(); | |
87 | - int nPaperMarginH = GetPrtMgH(); | |
88 | - | |
89 | - hPen = CreatePrtPen(PS_SOLID, ConvX2Dt(0.005, nDPIW, CX_CM), RGB(0, 0, 0)); | |
90 | - hOldPen = SelectObject(g_MailBox.hDC, hPen); | |
91 | - // ------------------------------ | |
92 | - // 上と下の中央のトンボを描画する | |
93 | - // ------------------------------ | |
94 | - pt[0].x = pt[1].x = GetPrtCenter(GPC_W); | |
95 | - pt[0].y = GetPrtDpiH() - GetPrtMgH(); | |
96 | - pt[1].y = pt[0].y - ConvX2Dt(2, GetPrtDpiH(),CX_CM); | |
97 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 上の縦線 | |
98 | - | |
99 | - pt[0].y = nPaperHeight - nDPIH - nPaperMarginH; | |
100 | - pt[1].y = pt[0].y + ConvX2Dt(2, nDPIH, CX_CM); | |
101 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 上の縦線 | |
102 | - | |
103 | - pt[0].x = nPaperWidth / 2 - nDPIW / 2 - nPaperMarginW; | |
104 | - pt[1].x = pt[0].x + nDPIW; | |
105 | - pt[0].y = pt[1].y = nDPIH - nPaperMarginH; | |
106 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 上の横線 | |
107 | - | |
108 | - pt[0].y = pt[1].y = nPaperHeight - nDPIH - nPaperMarginH; | |
109 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 下の横線 | |
110 | - | |
111 | - // オフセット無しのトンボの位置 | |
112 | - DrawCross(g_MailBox.hDC, nPaperWidth / 2, nDPIH, | |
113 | - ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
114 | - DrawCross(g_MailBox.hDC, nPaperWidth / 2, nPaperHeight - nDPIH, | |
115 | - ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
116 | - | |
117 | - // ---------------------- | |
118 | - // 左右のトンボを描画する | |
119 | - // ---------------------- | |
120 | - pt[0].y = pt[1].y = nPaperHeight / 2 - nPaperMarginH; | |
121 | - pt[0].x = nDPIW - nPaperMarginW; | |
122 | - pt[1].x = pt[0].x - ConvX2Dt(2, nDPIW, CX_CM); | |
123 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 左の横線 | |
124 | - | |
125 | - pt[0].x = nPaperWidth - nDPIW - nPaperMarginW; | |
126 | - pt[1].x = pt[0].x + ConvX2Dt(2, nDPIW, CX_CM); | |
127 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 右の横線 | |
128 | - | |
129 | - pt[0].x = pt[1].x = nDPIW - nPaperMarginW; | |
130 | - pt[0].y = nPaperHeight / 2 - nDPIH / 2 - nPaperMarginH; | |
131 | - pt[1].y = pt[0].y + nDPIH; | |
132 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 左の縦線 | |
133 | - | |
134 | - pt[0].x = pt[1].x = nPaperWidth - nDPIW - nPaperMarginW; | |
135 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 右の縦線 | |
136 | - | |
137 | - // オフセット無しのトンボの位置 | |
138 | - DrawCross(g_MailBox.hDC, nDPIW, nPaperHeight / 2, | |
139 | - ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
140 | - DrawCross(g_MailBox.hDC, nPaperWidth - nDPIW, nPaperHeight / 2, | |
141 | - ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
142 | - | |
143 | - // -------------- | |
144 | - // 左上隅のトンボ | |
145 | - // -------------- | |
146 | - pt[1].x = pt[2].x = nDPIW - nPaperMarginW; | |
147 | - pt[1].y = pt[0].y = nDPIH - nPaperMarginH; | |
148 | - pt[0].x = pt[1].x - ConvX2Dt(2, nDPIW, CX_CM); | |
149 | - pt[2].y = pt[1].y - ConvX2Dt(2, nDPIH, CX_CM); | |
150 | - Polyline(g_MailBox.hDC, &pt[0], 3); | |
151 | - | |
152 | - // オフセット無しの場合 | |
153 | - DrawCross(g_MailBox.hDC, nDPIW, nDPIH, | |
154 | - ConvX2Dt(.5, nDPIW, CX_CM), | |
155 | - ConvX2Dt(.5, nDPIH, CX_CM)); | |
156 | - | |
157 | - // -------------- | |
158 | - // 右上隅のトンボ | |
159 | - // -------------- | |
160 | - pt[1].x = pt[2].x = nPaperWidth - nDPIW - nPaperMarginW; | |
161 | - pt[1].y = pt[0].y = nDPIH - nPaperMarginH; | |
162 | - pt[0].x = pt[1].x + ConvX2Dt(2, nDPIW, CX_CM); | |
163 | - pt[2].y = pt[1].y - ConvX2Dt(2, nDPIH, CX_CM); | |
164 | - Polyline(g_MailBox.hDC, &pt[0], 3); | |
165 | - | |
166 | - // オフセット無しの場合 | |
167 | - DrawCross(g_MailBox.hDC, nPaperWidth - nDPIW, nDPIH, | |
168 | - ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
169 | - | |
170 | - // 左下隅のトンボ | |
171 | - pt[1].x = pt[2].x = nDPIW - nPaperMarginW; | |
172 | - pt[1].y = pt[0].y = nPaperHeight - nDPIH - nPaperMarginH; | |
173 | - pt[0].x = pt[1].x - ConvX2Dt(2, nDPIW, CX_CM); | |
174 | - pt[2].y = pt[1].y + ConvX2Dt(2, nDPIH, CX_CM); | |
175 | - Polyline(g_MailBox.hDC, &pt[0], 3); | |
176 | - | |
177 | - // オフセット無しの場合 | |
178 | - DrawCross(g_MailBox.hDC, nDPIW, nPaperHeight - nDPIH, | |
179 | - ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
180 | - | |
181 | - // -------------- | |
182 | - // 右下隅のトンボ | |
183 | - // -------------- | |
184 | - pt[1].x = pt[2].x = nPaperWidth - nDPIW - nPaperMarginW; | |
185 | - pt[1].y = pt[0].y = nPaperHeight - nDPIH - nPaperMarginH; | |
186 | - pt[0].x = pt[1].x + ConvX2Dt(2, nDPIW, CX_CM); | |
187 | - pt[2].y = pt[1].y + ConvX2Dt(2, nDPIH, CX_CM); | |
188 | - Polyline(g_MailBox.hDC, &pt[0], 3); | |
189 | - | |
190 | - // オフセット無しの場合 | |
191 | - DrawCross(g_MailBox.hDC, nPaperWidth - nDPIW, nPaperHeight - nDPIH, | |
192 | - ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
193 | - // ---------------- | |
194 | - // 物差しの描画(横) | |
195 | - // ---------------- | |
196 | - pt[0].x = x = nDPIW - nPaperMarginW; | |
197 | - pt[1].x = nPaperWidth - nDPIW - nPaperMarginW; | |
198 | - pt[0].y = pt[1].y = y = | |
199 | - nPaperHeight - nDPIH - nPaperMarginH + ConvX2Dt(0.5, nDPIH, CX_CM); | |
200 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 横の線 | |
201 | - | |
202 | - nWd = (int)((nPaperWidth - nDPIW * 2) * (25.4 * 2) / nDPIW); | |
203 | - pt[0].y = y; | |
204 | - for (i = 0; i <= nWd; i++) { | |
205 | - pt[0].x = pt[1].x = x + ConvX2Dt(i / 20.0, nDPIW, CX_CM); | |
206 | - switch(i % 20) { | |
207 | - case 0: | |
208 | - pt[1].y = pt[0].y + ConvX2Dt(0.7, nDPIH, CX_CM); | |
209 | - break; | |
210 | - case 10: | |
211 | - pt[1].y = pt[0].y + ConvX2Dt(0.5, nDPIH, CX_CM); | |
212 | - break; | |
213 | - default: | |
214 | - if (i % 2) { | |
215 | - pt[1].y = pt[0].y + ConvX2Dt(0.15, nDPIH, CX_CM); | |
216 | - } | |
217 | - else { | |
218 | - pt[1].y = pt[0].y + ConvX2Dt(0.3, nDPIH, CX_CM); | |
219 | - } | |
220 | - break; | |
221 | - } | |
222 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 縦の線 | |
223 | - } | |
224 | - // ---------------- | |
225 | - // 物差しの描画(縦) | |
226 | - // ---------------- | |
227 | - pt[0].x = pt[1].x = x = nPaperWidth - nDPIW | |
228 | - + ConvX2Dt(.5, nDPIW, CX_CM) - nPaperMarginW; | |
229 | - pt[0].y = y = nDPIH - nPaperMarginH; | |
230 | - pt[1].y = nPaperHeight - nDPIH - nPaperMarginH; | |
231 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 縦の線 | |
232 | - | |
233 | - nWd = (int)((nPaperHeight - nDPIH * 2) * (25.4 * 2) / nDPIH); | |
234 | - pt[0].x = x; | |
235 | - for (i = 0; i <= nWd; i++) { | |
236 | - pt[0].y = pt[1].y = y + ConvX2Dt(i / 20.0, nDPIW, CX_CM); | |
237 | - switch(i % 20) { | |
238 | - case 0: | |
239 | - pt[1].x = pt[0].x + ConvX2Dt(0.7, nDPIW, CX_CM); | |
240 | - break; | |
241 | - case 10: | |
242 | - pt[1].x = pt[0].x + ConvX2Dt(0.5, nDPIW, CX_CM); | |
243 | - break; | |
244 | - default: | |
245 | - if (i % 2) { | |
246 | - pt[1].x = pt[0].x + ConvX2Dt(0.15, nDPIW, CX_CM); | |
247 | - } | |
248 | - else { | |
249 | - pt[1].x = pt[0].x + ConvX2Dt(0.3, nDPIW, CX_CM); | |
250 | - } | |
251 | - break; | |
252 | - } | |
253 | - Polyline(g_MailBox.hDC, &pt[0], 2); // 横の線 | |
254 | - } | |
255 | - | |
256 | - // 後処理 | |
257 | - SelectObject(g_MailBox.hDC, hOldPen); | |
258 | - DeleteObject(hPen); | |
259 | -} | |
260 | - | |
261 | -/* ------------------------------------------------------------------- | |
262 | - * テスト印刷を行う | |
263 | - * *-----------------------------------------------------------------*/ | |
264 | -void | |
265 | -DoTestPrint(void) | |
266 | -{ | |
267 | - HFONT hFont, hFontOld; // フォント | |
268 | - RECT rc; // 矩形 | |
269 | - TCHAR szBuf[4096], szUser[64]; | |
270 | - SYSTEMTIME st; // システム時刻 | |
271 | - int i; | |
272 | - int nPaperWidth, nPaperHeight, nDPIW, nDPIH, nPaperMarginW, nPaperMarginH; | |
273 | - | |
274 | - DbgPrint(NULL, 'I', "テスト印刷開始"); | |
275 | - | |
276 | - BeginDocument(); // プリンタ初期化 | |
277 | - | |
278 | - nPaperWidth = GetPrtWd(); | |
279 | - nPaperHeight = GetPrtHt(); | |
280 | - nDPIW = GetPrtDpiW(); | |
281 | - nDPIH = GetPrtDpiH(); | |
282 | - nPaperMarginW = GetPrtMgW(); | |
283 | - nPaperMarginH = GetPrtMgH(); | |
284 | - | |
285 | - StartPage(g_MailBox.hDC); // ページ開始 | |
286 | - | |
287 | - rc.top = rc.right = 0; | |
288 | - rc.left = nPaperWidth; | |
289 | - rc.bottom = nPaperHeight; | |
290 | - FillRect(g_MailBox.hDC, &rc, GetStockObject(WHITE_BRUSH)); | |
291 | - | |
292 | - DrawTombow(); // トンボの印刷 | |
293 | - | |
294 | - SetTextColor(g_MailBox.hDC, RGB(0, 0, 0)); | |
295 | - | |
296 | - // タイトル用フォントの作成 | |
297 | - hFont = CreatePrtFont(ConvX2Dt(20, nDPIH, CX_PT), 400, | |
298 | - TRUE, FALSE, FALSE, &g_MailBox.PrtInfo.lfPPF); | |
299 | - hFontOld = SelectObject(g_MailBox.hDC, hFont); | |
300 | - | |
301 | - // タイトルの表示領域の設定 | |
302 | - rc.top = nDPIH - nPaperMarginH; | |
303 | - rc.left = nDPIW - nPaperMarginW; | |
304 | - rc.bottom = rc.top + ConvX2Dt(20, nDPIH, CX_PT); | |
305 | - rc.right = nPaperWidth - nDPIW - nPaperMarginW; | |
306 | - | |
307 | - wsprintf(szBuf, "%s テスト印字", ReplaceNameTag(VERSION)); | |
308 | - DrawText(g_MailBox.hDC, szBuf, -1, &rc, | |
309 | - DT_NOPREFIX | DT_CENTER | DT_WORDBREAK); | |
310 | - | |
311 | - // 後処理 | |
312 | - SelectObject(g_MailBox.hDC, hFontOld); | |
313 | - DeleteObject(hFont); | |
314 | - | |
315 | - // フッダ用フォントの作成 | |
316 | - hFont = CreatePrtFont(ConvX2Dt(8, nDPIH, CX_PT), 400, | |
317 | - TRUE, FALSE, FALSE, &g_MailBox.PrtInfo.lfPPF); | |
318 | - hFontOld = SelectObject(g_MailBox.hDC, hFont); | |
319 | - | |
320 | - rc.top = nPaperHeight - nDPIH - ConvX2Dt(30, nDPIH, CX_PT) - nPaperMarginH; | |
321 | - rc.left = nDPIW - nPaperMarginW; | |
322 | - rc.bottom = rc.top + ConvX2Dt(30, nDPIH, CX_PT); | |
323 | - rc.right = nPaperWidth - nDPIW - nPaperMarginW; | |
324 | - | |
325 | - GetLocalTime(&st); | |
326 | - i = 63; | |
327 | - if (!GetUserName(szUser, &i)) { | |
328 | - strcpy(szUser, "hogehoge"); | |
329 | - } | |
330 | - | |
331 | - wsprintf(szBuf, "この用紙は%d年%d月%d日%d時%d分%d秒%dミリ秒に" | |
332 | - "%sによって印刷されました。\n%s", | |
333 | - st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, | |
334 | - st.wSecond, st. wMilliseconds, szUser, | |
335 | - ReplaceNameTag(COPYRIGHT)); | |
336 | - | |
337 | - DrawText(g_MailBox.hDC, szBuf, -1, &rc, | |
338 | - DT_NOPREFIX | DT_CENTER | DT_WORDBREAK); | |
339 | - | |
340 | - // 後処理 | |
341 | - SelectObject(g_MailBox.hDC, hFontOld); | |
342 | - DeleteObject(hFont); | |
343 | - | |
344 | - // 本文用フォントの作成 | |
345 | - hFont = CreatePrtFont(ConvX2Dt(10, nDPIH, CX_PT), 400, | |
346 | - FALSE, FALSE, FALSE, &g_MailBox.PrtInfo.lfTHF); | |
347 | - hFontOld = SelectObject(g_MailBox.hDC, hFont); | |
348 | - | |
349 | - rc.top = nDPIH + ConvX2Dt(30, nDPIH, CX_PT) - nPaperMarginH; | |
350 | - rc.left = nDPIW + ConvX2Dt(10, nDPIW, CX_PT) - nPaperMarginW; | |
351 | - rc.bottom = nPaperHeight - nDPIH + ConvX2Dt(30, nDPIH, CX_PT) | |
352 | - - nPaperMarginH; | |
353 | - rc.right = nPaperWidth - nDPIW - ConvX2Dt(10, nDPIW, CX_PT) | |
354 | - - nPaperMarginW; | |
355 | - | |
356 | - sprintf(szBuf, " この用紙のサイズがプリンタドライバで設定した用紙サイズと" | |
357 | - "一致しているならば, 1インチ(2.54cm)内側にトンボが切られている筈" | |
358 | - "です。" | |
359 | - "もしも切られていない場合は, 用紙サイズが異なっているか, " | |
360 | - "プリンタドライバ" | |
361 | - "が嘘を言っているか, 極めつけは私の計算ミスです。" | |
362 | - "因みに, プリンタドライバが認識している現在の用紙サイズは横%d" | |
363 | - "ドット, 縦%dドットです。このプリンタの解像度は横方向が%ddpi, " | |
364 | - "縦方向が%ddpiなので, " | |
365 | - "用紙サイズは横%fインチ即ち%fcm, 縦%fインチ即ち%fcmになります。\n" | |
366 | - "\n 解像度の単位dpiは1インチ当りのドット数を現わしますので" | |
367 | - "1インチ内側にトンボを切るのは複雑な計算を必要としません。" | |
368 | - "単純に解像度を加減算するだけで座標を求める事が出来ます。" | |
369 | - "このプリンタとこの用紙の組み合わせの場合は" | |
370 | - "(%d, %d)-(%d, %d)の範囲にトンボが切られている事になります。" | |
371 | - "但し, このプリンタには印刷不可能な領域として, " | |
372 | - "横方向に%dドット(%fインチ即ち%fmm), " | |
373 | - "縦方向に%dドット(%fインチ即ち%fmm)" | |
374 | - "それぞれ存在していますので, 正確な座標は" | |
375 | - "(%d, %d)-(%d, %d)になります。\n\n" | |
376 | - " また, トンボの内側のドット数は, 用紙サイズからそれぞれの方向" | |
377 | - "の解像度に2を掛けた値を減算した値になります。この用紙の場合は" | |
378 | - "横が%dドット, 縦が%dドットになります。これらの値をcmに変換" | |
379 | - "すると, 横%fcm, 縦%fcmになります。トンボの内側の長さを示す" | |
380 | - "物差しが印刷されている筈ですので, 確認してみて下さい。" | |
381 | - "\n\n ○の中に+のマークは印刷不可領域を無視した場合のトンボ" | |
382 | - "の位置です。従って, 実際のトンボの位置からこのマークの中心" | |
383 | - "迄の距離と印刷不可領域のサイズが一致している筈です。" | |
384 | - "\n\n\n\n" | |
385 | - "\t項目 \tドット\tインチ \tcm\n" | |
386 | - "\t------------------------------------------\n" | |
387 | - "\t用紙の幅 \t%d\t%09.6f\t%09.6f\n" | |
388 | - "\t用紙の高さ\t%d\t%09.6f\t%09.6f\n" | |
389 | - "\t印字不可横\t%d\t%09.6f\t%09.6f\n" | |
390 | - "\t印字不可縦\t%d\t%09.6f\t%09.6f\n" | |
391 | - "\t------------------------------------------\n" | |
392 | - "\t解像度: %d×%d\n", | |
393 | - nPaperWidth, nPaperHeight, nDPIW, nDPIH, | |
394 | - (double)nPaperWidth / nDPIW, | |
395 | - (double)nPaperWidth / nDPIW * 2.54, | |
396 | - (double)nPaperHeight / nDPIH, | |
397 | - (double)nPaperHeight / nDPIH * 2.54, | |
398 | - nDPIW, nDPIH, nPaperWidth - nDPIW, nPaperHeight - nDPIH, | |
399 | - nPaperMarginW, | |
400 | - (double)nPaperMarginW / nDPIW, | |
401 | - (double)nPaperMarginW / nDPIW * 25.4, | |
402 | - nPaperMarginH, | |
403 | - (double)nPaperMarginH /nDPIH, | |
404 | - (double)nPaperMarginH /nDPIH * 25.4, | |
405 | - nDPIW - nPaperMarginW, nDPIH - nPaperMarginH, | |
406 | - nPaperWidth - nDPIW - nPaperMarginW, | |
407 | - nPaperHeight - nDPIH - nPaperMarginH, | |
408 | - nPaperWidth - nDPIW * 2, nPaperHeight - nDPIH * 2, | |
409 | - (double)(nPaperWidth - nDPIW * 2) / nDPIW * 2.54, | |
410 | - (double)(nPaperHeight - nDPIH * 2) / nDPIH * 2.54, | |
411 | - nPaperWidth, | |
412 | - (double)nPaperWidth / nDPIW, | |
413 | - (double)nPaperWidth / nDPIW * 2.54, | |
414 | - nPaperHeight, | |
415 | - (double)nPaperHeight / nDPIH, | |
416 | - (double)nPaperHeight / nDPIH * 2.54, | |
417 | - nPaperMarginW, | |
418 | - (double)nPaperMarginW / nDPIW, | |
419 | - (double)nPaperMarginW / nDPIW * 2.54, | |
420 | - nPaperMarginH, | |
421 | - (double)nPaperMarginH /nDPIH, | |
422 | - (double)nPaperMarginH /nDPIH * 2.54, | |
423 | - nDPIW, nDPIH); | |
424 | - | |
425 | - DrawText(g_MailBox.hDC, szBuf, -1, &rc, | |
426 | - DT_EXPANDTABS | DT_NOPREFIX | DT_LEFT | DT_WORDBREAK); | |
427 | - | |
428 | - // 後処理 | |
429 | - SelectObject(g_MailBox.hDC, hFontOld); | |
430 | - DeleteObject(hFont); | |
431 | - DbgPrint(NULL, 'I', "テスト印刷終了"); | |
432 | - | |
433 | - // プレビューの場合は、プレビュー画面を表示する | |
434 | - if (g_MailBox.PrtInfo.bPreView) { | |
435 | - PrintPreview(g_MailBox.hWnd, &g_MailBox.PrevInfo); | |
436 | - } | |
437 | - else { | |
438 | - EndPage(g_MailBox.hDC); // ページ出力 | |
439 | - EndDoc(g_MailBox.hDC); // ドキュメント完了 | |
440 | - } | |
441 | -} | |
13 | + * | |
14 | + * Revision 1.9 2005/05/10 16:10:56 tfuruka1 | |
15 | + * コンパイルエラーの修正(^^; | |
16 | + * | |
17 | + * Revision 1.8 2005/05/10 16:06:52 tfuruka1 | |
18 | + * Nameキーワードの置換を追加しました。 | |
19 | + * | |
20 | + * Revision 1.7 2005/05/07 12:13:15 tfuruka1 | |
21 | + * CVSのNameキーワードを和名に変換する処理を作ってみたので、変換処理を組 | |
22 | + * み込んでみました。 | |
23 | + * | |
24 | + * Revision 1.6 2005/01/15 11:58:09 tfuruka1 | |
25 | + * 印刷タイトルのak2prが重複して表示されていた部分を修正しました。 | |
26 | + * | |
27 | + * Revision 1.5 2004/06/18 00:57:56 tfuruka1 | |
28 | + * 改行コードの修正のみです。 | |
29 | + * | |
30 | + * Revision 1.4 2004/01/19 05:39:09 tfuruka1 | |
31 | + * フォント情報を指定出来るようになった事に関する修正を行いました。 | |
32 | + * | |
33 | + * Revision 1.3 2001/12/23 10:21:43 tfuruka1 | |
34 | + * ●プレビューモードの判断方法を修正 | |
35 | + * | |
36 | + * Revision 1.2 2001/12/18 04:01:00 tfuruka1 | |
37 | + * プレビューを表示できるように修正 | |
38 | + * | |
39 | + * Revision 1.1 2001/02/05 17:42:12 tfuruka1 | |
40 | + * Initial revision | |
41 | + * | |
42 | + */ | |
43 | +// (replace-regexp "/\\*\\(.+\\)\\*/" "//\\1") | |
44 | +// (replace-regexp "[ \t]+$" "") | |
45 | + | |
46 | +#include "ak2prs.h" | |
47 | +#include "ak2pr.h" | |
48 | + | |
49 | +/* ------------------------------------------------------------------- | |
50 | + * クロスを描画する。(x, y)を中心として半径rの円の中にクロスを描画する。 | |
51 | + * デバイスコンテキストは呼び出し側で用意し, ペンがセレクトされている | |
52 | + * 状態である事。 | |
53 | + * *-----------------------------------------------------------------*/ | |
54 | +static void DrawCross( | |
55 | + HDC hDC, // デバイスコンテキスト | |
56 | + int x, | |
57 | + int y, | |
58 | + int xr, // 水平方向の半径 | |
59 | + int yr // 垂直方向の半径 | |
60 | + ) | |
61 | +{ | |
62 | + POINT pt[2]; | |
63 | + | |
64 | + Arc(g_MailBox.hDC, x - xr, y - yr, x + xr, y + yr, x + xr, y, x + xr, y); | |
65 | + | |
66 | + pt[0].x = pt[1].x = x; | |
67 | + pt[0].y = y + yr; | |
68 | + pt[1].y = y - yr; | |
69 | + Polyline(g_MailBox.hDC, &pt[0], 2); | |
70 | + | |
71 | + pt[0].y = pt[1].y = y; | |
72 | + pt[0].x = x + xr; | |
73 | + pt[1].x = x - xr; | |
74 | + Polyline(g_MailBox.hDC, &pt[0], 2); | |
75 | +} | |
76 | + | |
77 | +/* ------------------------------------------------------------------- | |
78 | + * トンボを描画する。用紙の1inchi内側にトンボを切る | |
79 | + * *-----------------------------------------------------------------*/ | |
80 | +void DrawTombow(void) | |
81 | +{ | |
82 | + HPEN hPen, hOldPen; // ペン | |
83 | + POINT pt[4]; | |
84 | + int x, y, i, nWd; // 汎用 | |
85 | + int nPaperWidth = GetPrtWd(); | |
86 | + int nPaperHeight = GetPrtHt(); | |
87 | + int nDPIW = GetPrtDpiW(); | |
88 | + int nDPIH = GetPrtDpiH(); | |
89 | + int nPaperMarginW = GetPrtMgW(); | |
90 | + int nPaperMarginH = GetPrtMgH(); | |
91 | + | |
92 | + hPen = CreatePrtPen(PS_SOLID, ConvX2Dt(0.005, nDPIW, CX_CM), RGB(0, 0, 0)); | |
93 | + hOldPen = SelectObject(g_MailBox.hDC, hPen); | |
94 | + // ------------------------------ | |
95 | + // 上と下の中央のトンボを描画する | |
96 | + // ------------------------------ | |
97 | + pt[0].x = pt[1].x = GetPrtCenter(GPC_W); | |
98 | + pt[0].y = GetPrtDpiH() - GetPrtMgH(); | |
99 | + pt[1].y = pt[0].y - ConvX2Dt(2, GetPrtDpiH(),CX_CM); | |
100 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 上の縦線 | |
101 | + | |
102 | + pt[0].y = nPaperHeight - nDPIH - nPaperMarginH; | |
103 | + pt[1].y = pt[0].y + ConvX2Dt(2, nDPIH, CX_CM); | |
104 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 上の縦線 | |
105 | + | |
106 | + pt[0].x = nPaperWidth / 2 - nDPIW / 2 - nPaperMarginW; | |
107 | + pt[1].x = pt[0].x + nDPIW; | |
108 | + pt[0].y = pt[1].y = nDPIH - nPaperMarginH; | |
109 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 上の横線 | |
110 | + | |
111 | + pt[0].y = pt[1].y = nPaperHeight - nDPIH - nPaperMarginH; | |
112 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 下の横線 | |
113 | + | |
114 | + // オフセット無しのトンボの位置 | |
115 | + DrawCross(g_MailBox.hDC, nPaperWidth / 2, nDPIH, | |
116 | + ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
117 | + DrawCross(g_MailBox.hDC, nPaperWidth / 2, nPaperHeight - nDPIH, | |
118 | + ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
119 | + | |
120 | + // ---------------------- | |
121 | + // 左右のトンボを描画する | |
122 | + // ---------------------- | |
123 | + pt[0].y = pt[1].y = nPaperHeight / 2 - nPaperMarginH; | |
124 | + pt[0].x = nDPIW - nPaperMarginW; | |
125 | + pt[1].x = pt[0].x - ConvX2Dt(2, nDPIW, CX_CM); | |
126 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 左の横線 | |
127 | + | |
128 | + pt[0].x = nPaperWidth - nDPIW - nPaperMarginW; | |
129 | + pt[1].x = pt[0].x + ConvX2Dt(2, nDPIW, CX_CM); | |
130 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 右の横線 | |
131 | + | |
132 | + pt[0].x = pt[1].x = nDPIW - nPaperMarginW; | |
133 | + pt[0].y = nPaperHeight / 2 - nDPIH / 2 - nPaperMarginH; | |
134 | + pt[1].y = pt[0].y + nDPIH; | |
135 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 左の縦線 | |
136 | + | |
137 | + pt[0].x = pt[1].x = nPaperWidth - nDPIW - nPaperMarginW; | |
138 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 右の縦線 | |
139 | + | |
140 | + // オフセット無しのトンボの位置 | |
141 | + DrawCross(g_MailBox.hDC, nDPIW, nPaperHeight / 2, | |
142 | + ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
143 | + DrawCross(g_MailBox.hDC, nPaperWidth - nDPIW, nPaperHeight / 2, | |
144 | + ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
145 | + | |
146 | + // -------------- | |
147 | + // 左上隅のトンボ | |
148 | + // -------------- | |
149 | + pt[1].x = pt[2].x = nDPIW - nPaperMarginW; | |
150 | + pt[1].y = pt[0].y = nDPIH - nPaperMarginH; | |
151 | + pt[0].x = pt[1].x - ConvX2Dt(2, nDPIW, CX_CM); | |
152 | + pt[2].y = pt[1].y - ConvX2Dt(2, nDPIH, CX_CM); | |
153 | + Polyline(g_MailBox.hDC, &pt[0], 3); | |
154 | + | |
155 | + // オフセット無しの場合 | |
156 | + DrawCross(g_MailBox.hDC, nDPIW, nDPIH, | |
157 | + ConvX2Dt(.5, nDPIW, CX_CM), | |
158 | + ConvX2Dt(.5, nDPIH, CX_CM)); | |
159 | + | |
160 | + // -------------- | |
161 | + // 右上隅のトンボ | |
162 | + // -------------- | |
163 | + pt[1].x = pt[2].x = nPaperWidth - nDPIW - nPaperMarginW; | |
164 | + pt[1].y = pt[0].y = nDPIH - nPaperMarginH; | |
165 | + pt[0].x = pt[1].x + ConvX2Dt(2, nDPIW, CX_CM); | |
166 | + pt[2].y = pt[1].y - ConvX2Dt(2, nDPIH, CX_CM); | |
167 | + Polyline(g_MailBox.hDC, &pt[0], 3); | |
168 | + | |
169 | + // オフセット無しの場合 | |
170 | + DrawCross(g_MailBox.hDC, nPaperWidth - nDPIW, nDPIH, | |
171 | + ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
172 | + | |
173 | + // 左下隅のトンボ | |
174 | + pt[1].x = pt[2].x = nDPIW - nPaperMarginW; | |
175 | + pt[1].y = pt[0].y = nPaperHeight - nDPIH - nPaperMarginH; | |
176 | + pt[0].x = pt[1].x - ConvX2Dt(2, nDPIW, CX_CM); | |
177 | + pt[2].y = pt[1].y + ConvX2Dt(2, nDPIH, CX_CM); | |
178 | + Polyline(g_MailBox.hDC, &pt[0], 3); | |
179 | + | |
180 | + // オフセット無しの場合 | |
181 | + DrawCross(g_MailBox.hDC, nDPIW, nPaperHeight - nDPIH, | |
182 | + ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
183 | + | |
184 | + // -------------- | |
185 | + // 右下隅のトンボ | |
186 | + // -------------- | |
187 | + pt[1].x = pt[2].x = nPaperWidth - nDPIW - nPaperMarginW; | |
188 | + pt[1].y = pt[0].y = nPaperHeight - nDPIH - nPaperMarginH; | |
189 | + pt[0].x = pt[1].x + ConvX2Dt(2, nDPIW, CX_CM); | |
190 | + pt[2].y = pt[1].y + ConvX2Dt(2, nDPIH, CX_CM); | |
191 | + Polyline(g_MailBox.hDC, &pt[0], 3); | |
192 | + | |
193 | + // オフセット無しの場合 | |
194 | + DrawCross(g_MailBox.hDC, nPaperWidth - nDPIW, nPaperHeight - nDPIH, | |
195 | + ConvX2Dt(.5, nDPIW, CX_CM), ConvX2Dt(.5, nDPIH, CX_CM)); | |
196 | + // ---------------- | |
197 | + // 物差しの描画(横) | |
198 | + // ---------------- | |
199 | + pt[0].x = x = nDPIW - nPaperMarginW; | |
200 | + pt[1].x = nPaperWidth - nDPIW - nPaperMarginW; | |
201 | + pt[0].y = pt[1].y = y = | |
202 | + nPaperHeight - nDPIH - nPaperMarginH + ConvX2Dt(0.5, nDPIH, CX_CM); | |
203 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 横の線 | |
204 | + | |
205 | + nWd = (int)((nPaperWidth - nDPIW * 2) * (25.4 * 2) / nDPIW); | |
206 | + pt[0].y = y; | |
207 | + for (i = 0; i <= nWd; i++) { | |
208 | + pt[0].x = pt[1].x = x + ConvX2Dt(i / 20.0, nDPIW, CX_CM); | |
209 | + switch(i % 20) { | |
210 | + case 0: | |
211 | + pt[1].y = pt[0].y + ConvX2Dt(0.7, nDPIH, CX_CM); | |
212 | + break; | |
213 | + case 10: | |
214 | + pt[1].y = pt[0].y + ConvX2Dt(0.5, nDPIH, CX_CM); | |
215 | + break; | |
216 | + default: | |
217 | + if (i % 2) { | |
218 | + pt[1].y = pt[0].y + ConvX2Dt(0.15, nDPIH, CX_CM); | |
219 | + } else { | |
220 | + pt[1].y = pt[0].y + ConvX2Dt(0.3, nDPIH, CX_CM); | |
221 | + } | |
222 | + break; | |
223 | + } | |
224 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 縦の線 | |
225 | + } | |
226 | + // ---------------- | |
227 | + // 物差しの描画(縦) | |
228 | + // ---------------- | |
229 | + pt[0].x = pt[1].x = x = nPaperWidth - nDPIW | |
230 | + + ConvX2Dt(.5, nDPIW, CX_CM) - nPaperMarginW; | |
231 | + pt[0].y = y = nDPIH - nPaperMarginH; | |
232 | + pt[1].y = nPaperHeight - nDPIH - nPaperMarginH; | |
233 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 縦の線 | |
234 | + | |
235 | + nWd = (int)((nPaperHeight - nDPIH * 2) * (25.4 * 2) / nDPIH); | |
236 | + pt[0].x = x; | |
237 | + for (i = 0; i <= nWd; i++) { | |
238 | + pt[0].y = pt[1].y = y + ConvX2Dt(i / 20.0, nDPIW, CX_CM); | |
239 | + switch(i % 20) { | |
240 | + case 0: | |
241 | + pt[1].x = pt[0].x + ConvX2Dt(0.7, nDPIW, CX_CM); | |
242 | + break; | |
243 | + case 10: | |
244 | + pt[1].x = pt[0].x + ConvX2Dt(0.5, nDPIW, CX_CM); | |
245 | + break; | |
246 | + default: | |
247 | + if (i % 2) { | |
248 | + pt[1].x = pt[0].x + ConvX2Dt(0.15, nDPIW, CX_CM); | |
249 | + } else { | |
250 | + pt[1].x = pt[0].x + ConvX2Dt(0.3, nDPIW, CX_CM); | |
251 | + } | |
252 | + break; | |
253 | + } | |
254 | + Polyline(g_MailBox.hDC, &pt[0], 2); // 横の線 | |
255 | + } | |
256 | + | |
257 | + // 後処理 | |
258 | + SelectObject(g_MailBox.hDC, hOldPen); | |
259 | + DeleteObject(hPen); | |
260 | +} | |
261 | + | |
262 | +/* ------------------------------------------------------------------- | |
263 | + * テスト印刷を行う | |
264 | + * *-----------------------------------------------------------------*/ | |
265 | +void | |
266 | +DoTestPrint(void) | |
267 | +{ | |
268 | + HFONT hFont, hFontOld; // フォント | |
269 | + RECT rc; // 矩形 | |
270 | + TCHAR szBuf[4096], szUser[64]; | |
271 | + SYSTEMTIME st; // システム時刻 | |
272 | + int i; | |
273 | + int nPaperWidth, nPaperHeight, nDPIW, nDPIH, nPaperMarginW, nPaperMarginH; | |
274 | + | |
275 | + DbgPrint(NULL, 'I', "テスト印刷開始"); | |
276 | + | |
277 | + BeginDocument(); // プリンタ初期化 | |
278 | + | |
279 | + nPaperWidth = GetPrtWd(); | |
280 | + nPaperHeight = GetPrtHt(); | |
281 | + nDPIW = GetPrtDpiW(); | |
282 | + nDPIH = GetPrtDpiH(); | |
283 | + nPaperMarginW = GetPrtMgW(); | |
284 | + nPaperMarginH = GetPrtMgH(); | |
285 | + | |
286 | + StartPage(g_MailBox.hDC); // ページ開始 | |
287 | + | |
288 | + rc.top = rc.right = 0; | |
289 | + rc.left = nPaperWidth; | |
290 | + rc.bottom = nPaperHeight; | |
291 | + FillRect(g_MailBox.hDC, &rc, GetStockObject(WHITE_BRUSH)); | |
292 | + | |
293 | + DrawTombow(); // トンボの印刷 | |
294 | + | |
295 | + SetTextColor(g_MailBox.hDC, RGB(0, 0, 0)); | |
296 | + | |
297 | + // タイトル用フォントの作成 | |
298 | + hFont = CreatePrtFont(ConvX2Dt(20, nDPIH, CX_PT), 400, | |
299 | + TRUE, FALSE, FALSE, &g_MailBox.PrtInfo.lfPPF); | |
300 | + hFontOld = SelectObject(g_MailBox.hDC, hFont); | |
301 | + | |
302 | + // タイトルの表示領域の設定 | |
303 | + rc.top = nDPIH - nPaperMarginH; | |
304 | + rc.left = nDPIW - nPaperMarginW; | |
305 | + rc.bottom = rc.top + ConvX2Dt(20, nDPIH, CX_PT); | |
306 | + rc.right = nPaperWidth - nDPIW - nPaperMarginW; | |
307 | + | |
308 | + wsprintf(szBuf, "%s テスト印字", ReplaceNameTag(VERSION)); | |
309 | + DrawText(g_MailBox.hDC, szBuf, -1, &rc, | |
310 | + DT_NOPREFIX | DT_CENTER | DT_WORDBREAK); | |
311 | + | |
312 | + // 後処理 | |
313 | + SelectObject(g_MailBox.hDC, hFontOld); | |
314 | + DeleteObject(hFont); | |
315 | + | |
316 | + // フッダ用フォントの作成 | |
317 | + hFont = CreatePrtFont(ConvX2Dt(8, nDPIH, CX_PT), 400, | |
318 | + TRUE, FALSE, FALSE, &g_MailBox.PrtInfo.lfPPF); | |
319 | + hFontOld = SelectObject(g_MailBox.hDC, hFont); | |
320 | + | |
321 | + rc.top = nPaperHeight - nDPIH - ConvX2Dt(30, nDPIH, CX_PT) - nPaperMarginH; | |
322 | + rc.left = nDPIW - nPaperMarginW; | |
323 | + rc.bottom = rc.top + ConvX2Dt(30, nDPIH, CX_PT); | |
324 | + rc.right = nPaperWidth - nDPIW - nPaperMarginW; | |
325 | + | |
326 | + GetLocalTime(&st); | |
327 | + i = 63; | |
328 | + if (!GetUserName(szUser, &i)) { | |
329 | + strcpy(szUser, "hogehoge"); | |
330 | + } | |
331 | + | |
332 | + wsprintf(szBuf, "この用紙は%d年%d月%d日%d時%d分%d秒%dミリ秒に" | |
333 | + "%sによって印刷されました。\n%s", | |
334 | + st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, | |
335 | + st.wSecond, st. wMilliseconds, szUser, | |
336 | + ReplaceNameTag(COPYRIGHT)); | |
337 | + | |
338 | + DrawText(g_MailBox.hDC, szBuf, -1, &rc, | |
339 | + DT_NOPREFIX | DT_CENTER | DT_WORDBREAK); | |
340 | + | |
341 | + // 後処理 | |
342 | + SelectObject(g_MailBox.hDC, hFontOld); | |
343 | + DeleteObject(hFont); | |
344 | + | |
345 | + // 本文用フォントの作成 | |
346 | + hFont = CreatePrtFont(ConvX2Dt(10, nDPIH, CX_PT), 400, | |
347 | + FALSE, FALSE, FALSE, &g_MailBox.PrtInfo.lfTHF); | |
348 | + hFontOld = SelectObject(g_MailBox.hDC, hFont); | |
349 | + | |
350 | + rc.top = nDPIH + ConvX2Dt(30, nDPIH, CX_PT) - nPaperMarginH; | |
351 | + rc.left = nDPIW + ConvX2Dt(10, nDPIW, CX_PT) - nPaperMarginW; | |
352 | + rc.bottom = nPaperHeight - nDPIH + ConvX2Dt(30, nDPIH, CX_PT) | |
353 | + - nPaperMarginH; | |
354 | + rc.right = nPaperWidth - nDPIW - ConvX2Dt(10, nDPIW, CX_PT) | |
355 | + - nPaperMarginW; | |
356 | + | |
357 | + sprintf(szBuf, " この用紙のサイズがプリンタドライバで設定した用紙サイズと" | |
358 | + "一致しているならば, 1インチ(2.54cm)内側にトンボが切られている筈" | |
359 | + "です。" | |
360 | + "もしも切られていない場合は, 用紙サイズが異なっているか, " | |
361 | + "プリンタドライバ" | |
362 | + "が嘘を言っているか, 極めつけは私の計算ミスです。" | |
363 | + "因みに, プリンタドライバが認識している現在の用紙サイズは横%d" | |
364 | + "ドット, 縦%dドットです。このプリンタの解像度は横方向が%ddpi, " | |
365 | + "縦方向が%ddpiなので, " | |
366 | + "用紙サイズは横%fインチ即ち%fcm, 縦%fインチ即ち%fcmになります。\n" | |
367 | + "\n 解像度の単位dpiは1インチ当りのドット数を現わしますので" | |
368 | + "1インチ内側にトンボを切るのは複雑な計算を必要としません。" | |
369 | + "単純に解像度を加減算するだけで座標を求める事が出来ます。" | |
370 | + "このプリンタとこの用紙の組み合わせの場合は" | |
371 | + "(%d, %d)-(%d, %d)の範囲にトンボが切られている事になります。" | |
372 | + "但し, このプリンタには印刷不可能な領域として, " | |
373 | + "横方向に%dドット(%fインチ即ち%fmm), " | |
374 | + "縦方向に%dドット(%fインチ即ち%fmm)" | |
375 | + "それぞれ存在していますので, 正確な座標は" | |
376 | + "(%d, %d)-(%d, %d)になります。\n\n" | |
377 | + " また, トンボの内側のドット数は, 用紙サイズからそれぞれの方向" | |
378 | + "の解像度に2を掛けた値を減算した値になります。この用紙の場合は" | |
379 | + "横が%dドット, 縦が%dドットになります。これらの値をcmに変換" | |
380 | + "すると, 横%fcm, 縦%fcmになります。トンボの内側の長さを示す" | |
381 | + "物差しが印刷されている筈ですので, 確認してみて下さい。" | |
382 | + "\n\n ○の中に+のマークは印刷不可領域を無視した場合のトンボ" | |
383 | + "の位置です。従って, 実際のトンボの位置からこのマークの中心" | |
384 | + "迄の距離と印刷不可領域のサイズが一致している筈です。" | |
385 | + "\n\n\n\n" | |
386 | + "\t項目 \tドット\tインチ \tcm\n" | |
387 | + "\t------------------------------------------\n" | |
388 | + "\t用紙の幅 \t%d\t%09.6f\t%09.6f\n" | |
389 | + "\t用紙の高さ\t%d\t%09.6f\t%09.6f\n" | |
390 | + "\t印字不可横\t%d\t%09.6f\t%09.6f\n" | |
391 | + "\t印字不可縦\t%d\t%09.6f\t%09.6f\n" | |
392 | + "\t------------------------------------------\n" | |
393 | + "\t解像度: %d×%d\n", | |
394 | + nPaperWidth, nPaperHeight, nDPIW, nDPIH, | |
395 | + (double)nPaperWidth / nDPIW, | |
396 | + (double)nPaperWidth / nDPIW * 2.54, | |
397 | + (double)nPaperHeight / nDPIH, | |
398 | + (double)nPaperHeight / nDPIH * 2.54, | |
399 | + nDPIW, nDPIH, nPaperWidth - nDPIW, nPaperHeight - nDPIH, | |
400 | + nPaperMarginW, | |
401 | + (double)nPaperMarginW / nDPIW, | |
402 | + (double)nPaperMarginW / nDPIW * 25.4, | |
403 | + nPaperMarginH, | |
404 | + (double)nPaperMarginH /nDPIH, | |
405 | + (double)nPaperMarginH /nDPIH * 25.4, | |
406 | + nDPIW - nPaperMarginW, nDPIH - nPaperMarginH, | |
407 | + nPaperWidth - nDPIW - nPaperMarginW, | |
408 | + nPaperHeight - nDPIH - nPaperMarginH, | |
409 | + nPaperWidth - nDPIW * 2, nPaperHeight - nDPIH * 2, | |
410 | + (double)(nPaperWidth - nDPIW * 2) / nDPIW * 2.54, | |
411 | + (double)(nPaperHeight - nDPIH * 2) / nDPIH * 2.54, | |
412 | + nPaperWidth, | |
413 | + (double)nPaperWidth / nDPIW, | |
414 | + (double)nPaperWidth / nDPIW * 2.54, | |
415 | + nPaperHeight, | |
416 | + (double)nPaperHeight / nDPIH, | |
417 | + (double)nPaperHeight / nDPIH * 2.54, | |
418 | + nPaperMarginW, | |
419 | + (double)nPaperMarginW / nDPIW, | |
420 | + (double)nPaperMarginW / nDPIW * 2.54, | |
421 | + nPaperMarginH, | |
422 | + (double)nPaperMarginH /nDPIH, | |
423 | + (double)nPaperMarginH /nDPIH * 2.54, | |
424 | + nDPIW, nDPIH); | |
425 | + | |
426 | + DrawText(g_MailBox.hDC, szBuf, -1, &rc, | |
427 | + DT_EXPANDTABS | DT_NOPREFIX | DT_LEFT | DT_WORDBREAK); | |
428 | + | |
429 | + // 後処理 | |
430 | + SelectObject(g_MailBox.hDC, hFontOld); | |
431 | + DeleteObject(hFont); | |
432 | + DbgPrint(NULL, 'I', "テスト印刷終了"); | |
433 | + | |
434 | + // プレビューの場合は、プレビュー画面を表示する | |
435 | + if (g_MailBox.PrtInfo.bPreView) { | |
436 | + PrintPreview(g_MailBox.hWnd, &g_MailBox.PrevInfo); | |
437 | + } else { | |
438 | + EndPage(g_MailBox.hDC); // ページ出力 | |
439 | + EndDoc(g_MailBox.hDC); // ドキュメント完了 | |
440 | + } | |
441 | +} |
@@ -1,10 +1,13 @@ | ||
1 | 1 | /* -*- mode: c; coding: sjis; -*- |
2 | - * $Id: version.c,v 1.3 2005/05/07 12:13:26 tfuruka1 Exp $ | |
2 | + * $Id: version.c,v 1.4 2005/05/12 14:39:41 tfuruka1 Exp $ | |
3 | 3 | * $Name: $ |
4 | 4 | * |
5 | 5 | * 「ak2psのようなもの」のヴァージョン情報 |
6 | 6 | * |
7 | 7 | * $Log: version.c,v $ |
8 | + * Revision 1.4 2005/05/12 14:39:41 tfuruka1 | |
9 | + * Build日時の対応 | |
10 | + * | |
8 | 11 | * Revision 1.3 2005/05/07 12:13:26 tfuruka1 |
9 | 12 | * CVSのNameキーワードを和名に変換する処理を作ってみたので、変換処理を組 |
10 | 13 | * み込んでみました。 |
@@ -54,7 +57,8 @@ DoInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) | ||
54 | 57 | { |
55 | 58 | TCHAR szBuf[1024]; |
56 | 59 | |
57 | - wsprintf(szBuf, "%s\r\n%s", ReplaceNameTag(VERSION), COPYRIGHT_STR); | |
60 | + wsprintf(szBuf, "%s\r\n%s\r\n%s", | |
61 | + ReplaceNameTag(VERSION), BUILD, COPYRIGHT_STR); | |
58 | 62 | |
59 | 63 | SetDlgItemText(hWnd, IDC_ST_VERSION, szBuf); |
60 | 64 | SetMemoryInfo(hWnd); |