WindowsAPI

SetROP2

SetROP2を使うと、背景色の上に描画色を描画する時の、ビットピクセル操作のモードを変更できる。 (こういう処理をラスタオペレーションというらしい。)SetROP2 function (wingdi.h) | Microsoft Docs ラスタオペレーションWM_PAINTで、 // 画面の描画を要求…

CreateHatchBrush

CreateHatchBrushで、模様付きのブラシを作成できる。CreateHatchBrush function (wingdi.h) | Microsoft Docs ブラシを作ろうハッチパターンって言うのね・・・。WM_CREATEで、赤いペンと青い横縞状のハッチブラシを作成。WM_PAINTで、で、それを使って描画…

PolyBezierTo

PolyBezierToで、ベジェ曲線を描画できる。PolyBezierTo function (wingdi.h) | Microsoft Docs ベジェ曲線 ベジェ曲線を手で描いてみる - にせねこメモベジェ曲線の描き方とか理論とかはちょっと難しいので上の記事を参照。 PolyBezierTo.cppにおいて、Wind…

Beep

Beepは、ビープ音を鳴らす。Beep function (utilapiset.h) | Microsoft Docs ビープ音を鳴らす - プログラミングのメモ帳(C/C++/HSP)ドの音は440Hzらしいので、それを流してみる。Win32コンソールアプリケーションWin32コンソールアプリケーションで、空のプ…

Ellipse

Ellipseは、楕円を描画する。Ellipse function (wingdi.h) | Microsoft Docs矩形の、左端、上端、右端、下端、を指定することで、その矩形に内接する楕円を描画する。 Ellipse.cppのWM_PAINTで、Ellipseに矩形情報を渡すだけ。楕円このように楕円というかこ…

PolylineTo

PolylineToは、多角形を描画する。PolylineTo function | Microsoft Docs直角三角形を描画する。 PolylineTo.cppのWM_CREATEで、始点を(50, 50)として、直角三角形を描画するが、始点はMoveToExでセットするため、次の点、そのまた次の点、最後の点(これが始…

RestoreDC

RestoreDCは、デバイスコンテキストの状態を復元する。RestoreDC function | Microsoft DocsSaveDCで取得した正の整数であるIDを指定すると、そのIDを取得した時の状態に戻せるが、負の整数-nを指定すると、現在からn回前の状態に復元することもできる。Rest…

SaveDC

SaveDCは、デバイスコンテキストの状態を保存する。SaveDC function | Microsoft DocsSetTextColorでテキストの色、SelectObjectでペンやブラシなどのGDIオブジェクトとの紐づけなど、デバイスコンテキストの状態は頻繫に変わる。 状態を保存しておけば、切…

GetClientRect

GetClientRectは、ウィンドウのクライアント領域の矩形情報を取得する。GetClientRect function | Microsoft DocsGetWindowRectでは、デスクトップ画面の左上を原点とするスクリーン座標だったが、GetClientRectの場合は、左端、上端は0に固定されていて、実…

GetWindowRect

GetWindowRectは、ウィンドウの矩形情報(位置情報やサイズ)を取得する。GetWindowRect function | Microsoft DocsWindowProcのWM_MOVE、WM_SIZEで、GetWindowRectで、スタティックなRECT構造体rcWndにウィンドウの矩形情報を格納する。 デスクトップ画面の左…

SetBkMode

SetBkModeは、テキストの背景モード(背景色を描画するか、背景は透過にするか)を設定する。SetBkMode function | Microsoft DocsWindowProcのWM_PAINTで、背景は青、テキストは赤で、TextOutで(50, 50)の位置に描画した後、SetBkModeでTRANSPARENT(透過)にし…

SetBkColor

SetBkColorは、TextOutなどでテキストを描画するときの背景となる部分の色を設定する。SetBkColor function | Microsoft DocsWindowProcのWM_PAINTで、背景色は青をセットする。 テキストの描画色はこれまで通り赤をセット。背景は青このように背景は青にな…

RGB

色の指定に、RGBマクロを使うと、どの色かわかりやすい。RGB macro | Microsoft DocsWindowProcのWM_PAINTで、RGBマクロは、R, G, B, の順に指定する。Rが0xffなのでこれも赤。赤赤になっている。Sample/winapi/RGB/RGB/src/RGB at master · bg1bgst333/Samp…

SetTextColor

SetTextColorは、TextOutなどでテキストを描画するときの文字色を設定する。SetTextColor function | Microsoft DocsWindowProcのWM_PAINTで、TextOutの前に、SetTextColorで、16進数で色を指定した。 第1引数はhDCで、本来、第2引数にはCOLORREFで色を指定…

EN_UPDATE

エディットコントロールの入力内容が変更された直後に、EN_UPDATEが、WM_COMMANDの通知コードとして送られる。EN_UPDATE notification code - Windows applications | Microsoft DocsWin32プロジェクトWin32プロジェクトで、空のプロジェクト空のプロジェク…

BN_CLICKED

コントロールの場合、WM_COMMANDが発生した時、リソースIDとは別にどういう操作が行われたかを示す通知コードを返す。 ボタンが押された時には、押されたボタンのリソースIDとともに、BN_CLICKEDという通知コードが返ってくる。BN_CLICKED notification code…

EM_SETMODIFY

EM_GETMODIFYで変更されたかどうかが取得できるわけだが、テキストファイルを保存した直後はそのテキストファイルとエディットコントロールの入力内容は同じなので、変更されていないという状態に戻さないといけない。 EM_SETMODIFYで変更状態のフラグを設定…

EM_GETMODIFY

テキストエディタや、なんらかの入力項目を持つアプリで、入力内容に変更があったら、アプリ終了時に内容の保存を促すダイアログが表示されることがあるだろう。 入力内容に変更があったのかどうかを取得するには、EM_GETMODIFYメッセージを使う。EM_GETMODI…

WM_CLOSE

WM_CLOSEは、ウィンドウが閉じられる時(DestroyWindowが呼ばれる前)に発生するウィンドウメッセージ。WM_CLOSE message - Windows applications | Microsoft DocsWM_CLOSEの時に、DefWindowProcの既定の処理に通さないことで、DestroyWindowによるウィンドウ…

WM_DESTROY

WM_DESTROYは、ウィンドウが破棄された時(DestroyWindowが呼ばれた後)に発生するウィンドウメッセージ。WM_DESTROY message - Windows applications | Microsoft DocsDestroyWindowの後に発生しているか確認する。WM_DESTROYプロジェクトWM_DESTROYプロジェ…

OutputDebugString

Win32プロジェクトでデバッグログを出したい場合、C/C++の標準出力系の関数などは使えない。 APIの標準出力も面倒だし、ファイル出力にしても若干面倒。 VisualStudioなどIDEに出すなら、OutputDebugStringを使うのがいい。OutputDebugString function (Wind…

DestroyWindow

DestroyWindowは、指定されたウィンドウハンドルのウィンドウを破棄する。DestroyWindow function | Microsoft Docs空のプロジェクトから、メニューリソースを追加して、DestroyWindow.rcはこのようにアイテム1つだけのメニューとする。resource.hは、メニュ…

InsertMenuItem

InsertMenuItemは、メニューにアイテムを挿入する。InsertMenuItemA function (winuser.h) - Win32 apps | Microsoft Docsメニューリソースを使わず、コード上でメニューアイテムを挿入する。 WM_CREATEの時に、MENUITEMINFOにアイテム情報をセットして、Ins…

AdjustWindowRect

AdjustWindowRectは、クライアント領域が指定のサイズになるようなウィンドウサイズを計算する。AdjustWindowRect function (winuser.h) - Win32 apps | Microsoft Docsresource.hで、メインメニュー本体とVGA(640x480)にするアイテム。AdjustWindowRect.rc…

RasEntryDlg

RasEntryDlgは、VPNやダイアルアップ接続エントリーの作成・編集ダイアログを表示する・・・。RasEntryDlg 関数今回は、VPN接続のためにRasEntryDlgで電話帳エントリーの作成を行う・・・。今回はWin32プロジェクト・・・。RasEntryDlg.cppを追加したら、ras…

ServiceMain

今回はWindowsのシステムサービスを作る・・・。ServiceMainは、このサービスのメイン処理を担う部分・・・。ServiceMain 関数まず、コンソールアプリケーションで作成・・・。 (Win32プロジェクトでもできるが、コンソールアプリだと疑似サービスを作成して…

CreateNamedPipe

Windowsで名前付きパイプを作成するには、CreateNamedPipeを使う・・・。CreateNamedPipe 関数名前なしパイプと比べると、あそこまで大変ではない・・・。CreateNamedPipeプロジェクトにCreateNamedPipe.cppを追加し、CreateNamedPipeで"\\.\pipe\TEST"とい…

CreatePipe

Windowsで名前なしパイプを作成するには、CreatePipeを使う・・・。CreatePipe 関数WindowsAPIにはforkが無いし、パイプの扱い方もUNIXとは違うので、パイプによるプロセス間通信の実装は結構難しい・・・。C言語CreatePipeメモ(Hishidama's Windows C "Crea…

ReportEvent

ReportEventは、イベントログにメッセージを書き込む・・・。ReportEvent 関数イベントログの出力はちゃんとやろうとすると結構面倒なので、今回は割と単純にログ出力するだけ・・・。まず、TCHAR *型の文字列バッファポインタptszTextを宣言し、newでメモリ…

RegCreateKey

RegCreateKeyは、指定のレジストリキー(regedit.exeで見るとフォルダの部分)を作成する・・・。RegCreateKey 関数 RegCreateKey function (Windows)互換性のために残されているだけなので、RegCreateKeyExを推奨するが、とりあえずキーを作成してみる・・・。…