エディットボックスの改行通りに印刷するには?

解決


猫団長  2003-03-04 13:07:00  No: 51181  IP: [192.*.*.*]

VC++6.0のWin32Applicationでメールを表示して印刷するプログラムを
作っているのですが、本文(エディットボックスに表示している)だけ
改行されずに一直線に文章が印刷されてしまいます。

これをエディットボックスと同じ改行でメールを印刷するには
どうしたらよいのでしょうか?(ソースは一部猫でもの本から流用しました)

//////////////////////////////////////////////////////////////////////////
// MPrint(Mail Print)
// 内容  :メールの内容を印刷する(簡易印刷)
//////////////////////////////////////////////////////////////////////////
int MPrint(HWND hWnd){
          PRINTDLG   pd;
          DOCINFO    di;
          TEXTMETRIC tm;

          char szPrnDat1[TEMP_MAX], szPrnDat2[TEMP_MAX], szPrnDat3[TEMP_MAX], szPrnDat4[TEMP_MAX], szPrnDat5[TEMP_MAX];

          memset(&pd, 0, sizeof(PRINTDLG));

          pd.lStructSize = sizeof(PRINTDLG);
          pd.hwndOwner   = hWnd;
          pd.hDevMode    = NULL;
          pd.hDevNames   = NULL;
          pd.Flags       = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC | PD_NOPAGENUMS | PD_NOSELECTION | PD_HIDEPRINTTOFILE;

          pd.nMinPage    = 1;
          pd.nMaxPage    = 1;
          pd.nToPage     = 1;
          pd.nCopies     = 1;

          if(PrintDlg(&pd) == 0){
                    return -1;
          }

          memset(&di, 0, sizeof(DOCINFO));

          di.cbSize       = sizeof(DOCINFO);
          di.lpszDocName = RepSubject;

          StartDoc(pd.hDC, &di);
          StartPage(pd.hDC);
          GetTextMetrics(pd.hDC, &tm);

          sprintf(szPrnDat1, "送信時刻:%s", RepDate);
          sprintf(szPrnDat2, "送信者:%s", RepFrom);
          sprintf(szPrnDat3, "件名:%s", RepSubject);
          sprintf(szPrnDat4, "------------------------------------------------------------");
          sprintf(szPrnDat5, "%s", strText);    // 本文出力部分

          TextOut(pd.hDC, 10, 10 + (tm.tmHeight * 1 + 20), szPrnDat1, (int)strlen(szPrnDat1));
          TextOut(pd.hDC, 10, 10 + (tm.tmHeight * 2 + 20), szPrnDat2, (int)strlen(szPrnDat2));
          TextOut(pd.hDC, 10, 10 + (tm.tmHeight * 3 + 20), szPrnDat3, (int)strlen(szPrnDat3));
          TextOut(pd.hDC, 10, 10 + (tm.tmHeight * 4 + 20), szPrnDat4, (int)strlen(szPrnDat4));
          TextOut(pd.hDC, 10, 10 + (tm.tmHeight * 5 + 20), szPrnDat5, (int)strlen(szPrnDat5));

          EndPage(pd.hDC);
          EndDoc(pd.hDC);
          DeleteDC(pd.hDC);

          return(0);

}

編集 削除
みるく32  2003-03-04 13:25:18  No: 51182  IP: [192.*.*.*]

TextOut関数 を DrawText関数 に代えましょう。

編集 削除
猫団長  2003-03-04 14:13:44  No: 51183  IP: [192.*.*.*]

具体的な使用法をお願いします。

編集 削除
瀬戸っぷ  2003-03-04 14:56:28  No: 51184  IP: [192.*.*.*]

MSDNで調べるか、API名が掲示されているのですからGoogleで調べるとか可能だと思いますが…

http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_drawtext.htm
に書かれています。
MSDNが無いのでしたら、
http://www.microsoft.com/japan/developer/library/
をブックマークしておけばよろしいかと。
(サイト内検索(?)らしきモノが見あたりませんが(^_^;))

編集 削除
みるく32  2003-03-04 14:57:37  No: 51185  IP: [192.*.*.*]

そんなものは自分で調べてください。「DrawText」をキーワードにして
goo あたりで検索すりゃ、用例なんぞいくつでもでてくるでしょうが。

編集 削除
猫団長  2003-03-04 17:24:54  No: 51186  IP: [192.*.*.*]

ごめんなさいです。
なんとかMSDNのページを見て解決しました。
本当にありがとうございました。

編集 削除