WindowsAPI

PRINTER_DEFAULTS

PRINTER_DEFAULTSも、プリンタの設定の一つだが、特に気になるのはアクセス属性。PRINTER_DEFAULTS structure (Winspool.h) - Win32 apps | Microsoft Docs前回、設定変更で、pd.DesiredAccessをPRINTER_ALL_ACCESSにしたけど、常にそれでいいのではとおもう…

SetPrinter

SetPrinterで、プリンタの設定をする。SetPrinter function (WinSpool.h) - Win32 apps | Microsoft Docs https://support.microsoft.com/ja-jp/help/140285/how-to-modify-printer-settings-by-using-setprinterこれで、プリンタ設定の変更が完了する。 // …

DocumentProperties

DocumentPropertiesは、プリンタ情報の取得、変更、プリンタ構成プロパティシートの表示、とあるけど、よくあるのは、あるプリンタの設定を変更した時に、依存している部分の設定も更新するということらしい。DocumentProperties function (Winspool.h) - Wi…

PRINTER_INFO_2

PRINTER_INFO_2は、PRINTER_INFO_1より詳細なプリンタ情報を持っている。PRINTER_INFO_2 structure (Winspool.h) - Win32 apps | Microsoft Docsわかりやすいものを出力してみた。実行すると、 C:\Users\bg1\Documents\test>PRINTER_INFO_2.exe Default Prin…

GetPrinter

GetPrinterで、プリンタ情報を取得する。GetPrinter function (Winspool.h) - Win32 apps | Microsoft Docs https://support.microsoft.com/ja-jp/help/140285/how-to-modify-printer-settings-by-using-setprinterプリンタの設定変更となると、DEVMODEが必…

StartPagePrinter

StartPagePrinterで、印刷するページの開始を通知する。StartPagePrinter function (Winspool.h) - Win32 apps | Microsoft Docstest_text.txtを、2ページ分の量に増やした2ページ分の量に増やした。 しかし、複数ページある場合、ページごとに複数回呼び出…

WritePrinter

WritePrinterで、印刷データを送って、印刷する。WritePrinter function (Winspool.h) - Win32 apps | Microsoft Docs コンソールアプリケーションで標準印刷出力を使う方法 https://support.microsoft.com/ja-jp/help/138594/howto-send-raw-data-to-a-prin…

StartDocPrinter

StartDocPrinterで、印刷するドキュメントの開始を通知する。StartDocPrinter function (Winspool.h) - Win32 apps | Microsoft DocsGDI Print APIのStartDocに相当する。 印刷ジョブIDを返す。DOC_INFO_1で、ドキュメント情報を渡す。 C:\Users\bg1\Documen…

OpenPrinter

OpenPrinterで、プリンタのハンドルを取得する。OpenPrinter function (Winspool.h) - Win32 apps | Microsoft Docs既定のプリンタのハンドルを取得する。 C:\Users\bg1\Documents\test>OpenPrinter.exe Default Printer: EPSON PX-S06 Series hPrinter = 0x…

SetDefaultPrinter

SetDefaultPrinterで、指定したプリンタを既定のプリンタにセットする。SetDefaultPrinter function (Winspool.h) - Win32 apps | Microsoft Docs既定のプリンタ名を取得して、その後入力フォームを出力して、そこにプリンタ名を入力すると、その後、既定の…

GetDefaultPrinter

GetDefaultPrinterで、既定のプリンタ名を取得する。GetDefaultPrinter function (Winspool.h) - Win32 apps | Microsoft Docs Win32API 既定のプリンタのプリンタ名を取得する - s-kita’s blogこれもNULLでサイズを確保してから、バッファを用意して、改め…

PRINTER_INFO_1

PRINTER_INFO_1は、プリンタ名の他に、プリンタの説明文、プリンタに残せるコメント、などが格納されている。PRINTER_INFO_1 structure (Winspool.h) - Win32 apps | Microsoft Docs今回は、説明文も出力する。実行すると、 C:\Users\bg1\Documents\test>PRI…

EnumPrinters

EnumPrintersで、プリンタ名を列挙する。EnumPrinters function (Winspool.h) - Win32 apps | Microsoft Docs Win32API 利用可能なプリンタを列挙する - s-kita’s blog今回からコンソール今回からコンソール。空のコンソール空のコンソール。1回NULLを渡して…

ResetDC

ダイアログを使わずに、設定変更を反映するには、ResetDCでプリンタ用デバイスコンテキストを更新する。ResetDCA function (wingdi.h) - Win32 apps | Microsoft Docs プリンタの情報普通に、 // 取得したIDごとに処理を分岐. // Printが選択された時. case …

DEVNAMES

DEVNAMES構造体は、デバイス情報、ドライバ情報、既定のプリンタかどうかのフラグなどを持つ。DEVNAMES (commdlg.h) - Win32 apps | Microsoft Docs DEVNAMES 構造体あまり、こちらから設定変更することは無い気がする。GlobalAllocしない場合は、PageSetupD…

DEVMODE

DEVMODE構造体で、より詳細な設定変更を行うことが出来る。DEVMODEA (wingdi.h) - Win32 apps | Microsoft Docs プリンタドライバ情報とは用紙方向を横に変更する。psd.hDevModeにGlobalAllocでDEVMODEのメモリを確保しておいて、GlobalLockして横方向を設定…

PAGESETUPDLG

PAGESETUPDLG構造体で、ページ設定を変更できる。PAGESETUPDLGA (commdlg.h) - Win32 apps | Microsoft Docs プリンタの設定例えば、 // 取得したIDごとに処理を分岐. // Printが選択された時. case ID_ITEM_PRINT: // ID_ITEM_PRINTブロック { // 変数の宣…

PageSetupDlg

PageSetupDlgで、ページ設定ダイアログを表示する。PageSetupDlg function (Windows) | Microsoft Docs プリンタの設定PrintDlgで[印刷]を押した後に、PageSetupDlgでページ設定ダイアログを表示し、[OK]なら"OK!"と表示。"Setup"が入ってしまってるのでUAC…

PRINTDLG

PRINTDLG構造体で、簡単な設定変更が出来る。PRINTDLGA (commdlg.h) - Win32 apps | Microsoft Docsページ範囲を指定して印刷ぐらいなら、PRINTDLGでセットできる。pd.FlagsにPD_PAGENUMSを追加し、1ページ目から4ページ目まである中の、2ページ目から3ペー…

PrintDlg

PrintDlgで、印刷ダイアログを表示する。PrintDlg function (Windows) | Microsoft Docs プリンタの設定PrintDlgで[印刷]ボタンを押すと、TRUEになるので印刷処理を実行する。 PD_RETURNDCを付けると、ダイアログでの設定が反映されたpd.hDCが返ってくるので…

StartPage

StartPageで、新しいページが来たことを通知する。プリンタ出力 StartPage function (wingdi.h) - Win32 apps | Microsoft DocsStartPage~EndPageのセクションを複数回作ることで、複数枚印刷ができる。1ページずつ、位置と文字列を変えている。元のプリン…

DOCINFO

DOCINFO構造体に、出力パスを指定して、Microsoft Print to PDFで印刷すると、実際のプリンタに印刷されるわけではなく、指定のパスにPDF出力される。DOCINFOA (wingdi.h) - Win32 apps | Microsoft Docs Microsoft Print to PDF で C/C++ コードから出力フ…

SetMapMode

SetMapModeで、印刷や描画する時の出力単位を、デバイスピクセル単位や、メートル単位など、指定のものに切り替えられる。SetMapMode function (wingdi.h) - Win32 apps | Microsoft Docs マッピングモード新しくプリンタを買いまして、プリンタ名をメモプリ…

FillPath

FillPathで、パスの中を塗りつぶす。FillPath function (wingdi.h) - Win32 apps | Microsoft Docs パスWM_PAINTで、 // 画面の描画を要求された時. case WM_PAINT: // 画面の描画を要求された時.(uMsgがWM_PAINTの時.) // WM_PAINTブロック { // このブロッ…

StrokePath

StrokePathで、パスの輪郭を描画する。StrokePath function (wingdi.h) - Win32 apps | Microsoft Docs パスパスはそのままでは描画できないので、こういう方法を取る。輪郭と内側がわかるサイズ32のフォントを生成して選択させる。 EndPathの後に、StrokePa…

StartDoc

印刷関連では、Printing (Documents and Printing) - Win32 apps | Microsoft DocsGDI Print APIとPrint Spooler APIがあるが、最初はGDIのほうから。StartDocで、印刷ジョブを開始する。StartDocA function (wingdi.h) - Win32 apps | Microsoft Docs プリ…

CreateDC

CreateDCは、指定されたデバイスのデバイスコンテキストを生成(というか取得?)する。CreateDCA function (wingdi.h) - Win32 apps | Microsoft Docs ウィンドウ外に描画プリンタのデバイスコンテキストを取得するのによく使うが、ディスプレイのデバイスコン…

PathRemoveFileSpec

PathRemoveFileSpecは、ファイルのパスから、ファイル名とその前の'\'を取り除き、そのファイルの上のフォルダパスに修正する。PathRemoveFileSpecA function (shlwapi.h) - Win32 apps | Microsoft DocsGetModuleFileNameで取得したフルパスから、そのファ…

GetModuleFileName

GetModuleFileNameは、実行ファイル自身のフルパスを取得する。GetModuleFileNameA function (libloaderapi.h) - Win32 apps | Microsoft Docsコンソールアプリケーションで実行ファイル自身のパスを出力してみる。これを実行すると、 tszModulePath = c:\pr…

BeginPath

BeginPathは、パスに対する処理を開始する時に使う。BeginPath function (wingdi.h) - Win32 apps | Microsoft Docs パス画面ではなくパスなので、直接描画されることはなく、パスを描画する命令が実行された時に描画される。通常のTextOutで"ABCDE"を描画後…