WindowsAPI

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"を描画後…

GetClipboardData

GetClipboardDataで、クリップボードからデータを取得する。GetClipboardData function (winuser.h) - Win32 apps | Microsoft DocsSetClipboardDataでマルチバイト文字列に変換したので、GetClipboardDataではワイド文字列に戻す必要がある。で、この状態か…

IsClipboardFormatAvailable

IsClipboardFormatAvailableで、クリップボードにテキストなどのデータが残っているかを確認する。IsClipboardFormatAvailable function (winuser.h) - Win32 apps | Microsoft Docsテキスト(CF_TEXT)があるか確認する。エディットコントロールにあいうえお…

SetClipboardData

SetClipboardDataは、クリップボードにデータをセットする。SetClipboardData function (winuser.h) - Win32 apps | Microsoft Docsクリップボードの下準備の後、文字コード変換を挟んでから、ここに来たのは、どうもそのままではうまくクリップボードにセッ…

WideCharToMultiByte

WideCharToMultiByteは、Unicode(UTF-16)などのワイド文字列から、ShiftJISなどのマルチバイト文字列に変換する。WideCharToMultiByte function (stringapiset.h) - Win32 apps | Microsoft DocsWideCharToMultiByte.cppで、Saveが選択された時、ID_EDIT1か…

MultiByteToWideChar

MultiByteToWideCharは、ShiftJISなどのマルチバイト文字列から、Unicode(UTF-16)などのワイド文字列に変換する。MultiByteToWideChar function (stringapiset.h) - Win32 apps | Microsoft Docsresource.hで、ID_ITEM_OPEN、ID_ITEM_SAVEを追加。MultiByteT…

EmptyClipboard

EmptyClipboardで、クリップボードを空にする。EmptyClipboard function (winuser.h) - Win32 apps | Microsoft Docsクリップボードを開いたら、空にして、新たにデータを貼り付けるという流れで使う。空にできたら、"EmptyClipboard Success!"を表示。最初…

OpenClipboard

OpenClipboardで、クリップボードを開く。OpenClipboard function (winuser.h) - Win32 apps | Microsoft Docsresource.hで、メニューとエディットコントロール。 OpenClipboard.rcは、"Copy"と"Paste"のメニューアイテム。"Copy"が選択されたら、OpenClipbo…

GlobalSize

GlobalSizeで、ハンドルの指し示すグローバルメモリのサイズを取得できる。GlobalSize function (winbase.h) - Win32 apps | Microsoft Docs場合によっては、GlobalAllocで指定したサイズよりも多く確保されるらしい。前回の固定メモリと移動可能メモリでど…

GlobalLock

GlobalLockで、グローバルメモリをロックし、先頭ポインタを取得する。GlobalLock function (winbase.h) - Win32 apps | Microsoft Docs固定メモリの場合は、ハンドルの値がそのまま先頭ポインタになるので、ハンドルをキャストしてそこにデータをコピーした…

WLAN_NOTIFICATION_CALLBACK

WlanRegisterNotificationで指定するコールバック関数は、関数ポインタWLAN_NOTIFICATION_CALLBACKで定義された形式に基づく。WLAN_NOTIFICATION_CALLBACK (wlanapi.h) - Win32 apps | Microsoft Docsコールバック関数にスキャン完了が来るまで、WlanGetAvai…

WlanScan

WlanScanで、WiFiアクセスポイントをスキャンする。WlanScan function (wlanapi.h) - Win32 apps | Microsoft Docs Native Wifiを使ってみた その1 - GraveDollの備忘録ブログこれで通知が来るかどうか。WlanScanした後に、ちょっと間を空けてから、WlanGet…

WlanRegisterNotification

WlanRegisterNotificationは、WiFiスキャンの結果などの通知を受け取るコールバックを登録する。WlanRegisterNotification function (wlanapi.h) - Win32 apps | Microsoft Docs Native Wifiを使ってみた その1 - GraveDollの備忘録ブログインターフェース…

WlanOpenHandle

WlanOpenHandleは、Native Wifi(WLAN)のハンドルを開く。WlanOpenHandle function (wlanapi.h) - Win32 apps | Microsoft Docs今回はバージョン2(1はXP用、2はVista以降などらしい。)のハンドルを取得する。バージョンとクライアントのハンドルが返ってくる…

PeekNamedPipe

PeekNamedPipeは、パイプからデータを削除せずに取得したり、パイプの情報などを取得できる。PeekNamedPipe function (namedpipeapi.h) - Win32 apps | Microsoft Docs パイプにより標準出力をエディットボックスに取り込む前回、ファイルに子プロセス出力を…

DuplicateHandle

DuplicateHandleは、ハンドルを複製する。DuplicateHandle function (handleapi.h) - Win32 apps | Microsoft Docs同じ入出力先のハンドルを複製して、子プロセスに使ってもらう。 今回は、pingコマンドを子プロセスで実行してもらうのだが、ping.logへの出…