印刷関連では、
Printing (Documents and Printing) - Win32 apps | Microsoft Docs
GDI Print APIとPrint Spooler APIがあるが、最初はGDIのほうから。
StartDocで、印刷ジョブを開始する。
StartDocA function (wingdi.h) - Win32 apps | Microsoft Docs
プリンタ出力
resource.hで、
StartDoc.rcで、
印刷を実行するメニューアイテムとプリンタ名を入力するエディットコントロール。
StartDoc.cppは、
WM_CREATEで、プリンタ名を入力するエディットコントロールの生成。
ID_ITEM_PRINTが選択されたら、エディットコントロールのプリンタ名を取得し、CreateDCの第2引数にセット、それ以外はNULLでいい。
取得したhPrinterDCをStartDocに渡す。
DOCINFOも一緒に渡すのだが、lpszDocNameに適当にドキュメント名を指定。
(ファイル名である必要はなく、今回は"StartDoc"というタイトルに。)
StartDocが成功すると、印刷ジョブ開始となる。
次に、StartPageを実行して、成功したら、hPrinterDCに印刷するものを描画していく。
TextOutで(0, 0)の位置に"ABCDE"を描画するだけ。
ページの終わりにEndPage、印刷ジョブの終わりにEndDoc。
最後にDeleteDCでhPrinterDCを削除。
起動時はこう。
[デバイスとプリンター]から印刷するプリンタを見つけて、
オブライン(グレーアウトされちゃう)でなければ、右クリックしてプロパティに書いてあるプリンタ名を入れる。
Printを選択すると、
印刷開始。
左上に印刷された。
しかし、マゼンタがすげー漏れるなあっておもったら、プリンタが壊れた・・・。
ライトマゼンタを認識しない・・・。
カラリオプリンター EP-804A ドライバー・ソフトウェアダウンロード|サポート&ダウンロード|エプソン
もう、8、9年経つので、壊れてもしかたないが・・・。
困った・・・。
Sample/winapi/StartDoc/StartDoc/src/StartDoc at master · bg1bgst333/Sample · GitHub