StartDoc

印刷関連では、

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を選択
Printを選択

Printを選択すると、

印刷開始
印刷開始

印刷開始。

左上に印刷された
左上に印刷された

左上に印刷された。

しかし、マゼンタがすげー漏れるなあっておもったら、プリンタが壊れた・・・。
ライトマゼンタを認識しない・・・。

カラリオプリンター EP-804A ドライバー・ソフトウェアダウンロード|サポート&ダウンロード|エプソン

もう、8、9年経つので、壊れてもしかたないが・・・。
困った・・・。

Sample/winapi/StartDoc/StartDoc/src/StartDoc at master · bg1bgst333/Sample · GitHub