私は、デバイスコンテキストの作成に関するMicrosoftのチュートリアルに従いました。インターネットを見渡すようにしてみましたが、まあまあです(MFCは神秘的なものです)。以下は正常に "Hello、World!"を表示します。非常に小さいことを除いて。MFCを使用したプリンタDCへの印刷
テキストではなく、プリンタにCImageを送信するにはどうすればよいですか? テキストのサイズを数ミリメートル以上にするにはどうすればいいですか? 私はMSDNを精査しましたが、すべてが古くなっています(使用しているサンプルコードのようなものです)。ここで
// get the default printer
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
//MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
//MessageBox(_T("Printer wouldn't initalize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
//MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
// actually do some printing
//CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
dcPrinter.SetMapMode(MM_HIENGLISH);
auto font = CreateFont(
3'000, // nHeight
1'500, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial")); // lpszFacename
dcPrinter.SelectObject(&font);
dcPrinter.TextOut(450, 450, _T("Hello World!"), 12);
dcPrinter.EndPage();
dcPrinter.EndDoc();
//dcPrinter.SelectObject(pOldFont);
}
}
}
これは一般的なwin32印刷の最初の問題です。印刷サポートを追加するのに数時間以上を費やしているのであれば、Petzoldの関連する章を1時間ほど読むことをお勧めします。それは手によってあなたを連れてきて、そこにあるすべてを非常にはっきりと説明します。後で行う必要があるのは、それをMFCの概念にマップすることです。これは簡単です。使用済みのコピーを数ドルで購入したり、ダウンロードしたりすることができます。私はまだハードコピーを取得することをお勧めします - それはあなたがそれらの小さな細部のために頻繁に戻っていく少数の本の1つです。 – Roel
金曜日の朝に2冊の本を注文しましたが、別の本を追加することは何もありません! 私は「Petzold MFC」と[これは何が来たのですか?](http://www.microsoft.com/mspress/books/1431.aspx)を検索しました。これは "ペッツォールド"ですか? – Acorn
いいえ、実際はこれです:http://www.charlespetzold.com/pw5/これはMFC用ではなく、win32ですが、あなたの質問は本質的にwin32の概念に関するものです。 MFCの印刷サポートは、その上にある薄いOOレイヤーです。この本は印刷に関する全章(第13章、厳密に言えば)です:印刷装置のコンテキスト、DEVCAPS、印刷ダイアログなどは何ですか?Adrianはこの問題を説明しました。 – Roel