• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

所謂テキストファイルを印刷するツールです。emacsと連携しやすくなっています。


コミットメタ情報

リビジョンc4be40ec5d246e6a5b0f04681d271b3c3207e478 (tree)
日時2005-05-12 23:39:41
作者tfuruka1 <tfuruka1>
コミッターtfuruka1

ログメッセージ

Build日時の対応

変更サマリ

差分

--- a/src/ak2pr.rc
+++ b/src/ak2pr.rc
@@ -153,7 +153,7 @@ FONT 9, "
153153 BEGIN
154154 DEFPUSHBUTTON "OK",IDOK,194,56,50,14
155155 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
157157 CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,7,41,237,1
158158 LTEXT "メモリ使用率",IDC_STATIC,186,45,41,8
159159 LTEXT "物理メモリの総容量",IDC_STATIC,7,45,63,8
--- a/src/ak2prs.h
+++ b/src/ak2prs.h
@@ -1,9 +1,13 @@
11 /* -*- mode: C++; coding: sjis; -*-
2+ * $Id: ak2prs.h,v 1.30 2005/05/12 14:39:41 tfuruka1 Exp $
3+ * $Name: $
24 *
35 * 「ak2psのようなもの」のサーバ側のヘッダファイル
46 *
5- * $Id: ak2prs.h,v 1.29 2005/05/08 12:57:24 tfuruka1 Exp $
67 * $Log: ak2prs.h,v $
8+ * Revision 1.30 2005/05/12 14:39:41 tfuruka1
9+ * Build日時の対応
10+ *
711 * Revision 1.29 2005/05/08 12:57:24 tfuruka1
812 * X-Face関連の追加
913 *
@@ -138,7 +142,10 @@
138142
139143 #include "ver.h"
140144 #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
142149
143150 #include <windows.h>
144151 #include <windowsx.h>
@@ -168,9 +175,6 @@
168175
169176 #define SV_EXE_NAME "ak2prSV.EXE"
170177
171-#define COPYRIGHT VERSION " " COPYRIGHT_STR\
172-"\n(tfuruka1@nifty.com)" TIMESTAMP
173-
174178 // 1バイト目が漢字コードか否かチェックするマクロ
175179 #define IsKanjiSJIS(c) (((c) >= 0x81 && (c) <= 0x9f) ||\
176180 ((c) >= 0xe0 && (c) <= 0xfc))
--- a/src/testprint.c
+++ b/src/testprint.c
@@ -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 $
77 * $Log: testprint.c,v $
8+ * Revision 1.11 2005/05/12 14:39:41 tfuruka1
9+ * Build日時の対応
10+ *
811 * Revision 1.10 2005/05/10 16:18:07 tfuruka1
912 * 焦って修正したら、アクセスヴァイオレーションになってしまった。反省。
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+}
--- a/src/version.c
+++ b/src/version.c
@@ -1,10 +1,13 @@
11 /* -*- 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 $
33 * $Name: $
44 *
55 * 「ak2psのようなもの」のヴァージョン情報
66 *
77 * $Log: version.c,v $
8+ * Revision 1.4 2005/05/12 14:39:41 tfuruka1
9+ * Build日時の対応
10+ *
811 * Revision 1.3 2005/05/07 12:13:26 tfuruka1
912 * CVSのNameキーワードを和名に変換する処理を作ってみたので、変換処理を組
1013 * み込んでみました。
@@ -54,7 +57,8 @@ DoInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam)
5457 {
5558 TCHAR szBuf[1024];
5659
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);
5862
5963 SetDlgItemText(hWnd, IDC_ST_VERSION, szBuf);
6064 SetMemoryInfo(hWnd);