WindowsAPI

SetWindowRgn

SetWindowRgnを使うとウィンドウの指定のリージョンの部分のみ表示するようになる。 つまりウィンドウを非矩形なリージョンの形にできるということ。SetWindowRgn function (winuser.h) - Win32 apps | Microsoft DocsSetWindowRgnに指定したリージョンはシ…

SelectClipRgn

SelectClipRgnを使うことで、指定のデバイスコンテキストの描画領域を、指定されたリージョンの部分のみにできる。SelectClipRgn function (wingdi.h) - Win32 apps | Microsoft Docs楕円と矩形を結合したリージョンを選択すれば、画像を描画しても結合した…

CombineRgn

CombineRgnは、2つのリージョンを結合する。CombineRgn function (wingdi.h) - Win32 apps | Microsoft DocsWM_CREATEで、第1引数が結合先リージョン、第2引数が1つ目、第3引数が2つ目で、大体は1つ目のリージョンに2つ目のリージョンを結合するパターンであ…

CreateEllipticRgn

CreateEllipticRgnは、楕円形のリージョンを生成する。CreateEllipticRgn function (wingdi.h) - Win32 apps | Microsoft DocsWM_CREATEで、楕円リージョンhRgnと赤いブラシhBrush。 WM_PAINTで、SelectObjectでhBrushを選択して、PaintRgnでhRgnを描画。楕…

FrameRgn

FrameRgnは、リージョンの境界線を指定のブラシで描画する。FrameRgn function (wingdi.h) - Win32 apps | Microsoft Docsブラシ、縦線の太さ、横線の太さを指定できる。今回は、赤いブラシと青いフレーム用ブラシの2種類を用意。 // 画面の描画を要求された…

FillRgn

FillRgnは、指定されたブラシでリージョンを描画する。FillRgn function (wingdi.h) - Win32 apps | Microsoft DocsWM_CREATEで、こちらでも赤いブラシを作成。WM_PAINTで、こちらではFillRgnにhBrushを直接指定。赤いブラシで描画赤いブラシで描画された。S…

PaintRgn

PaintRgnは、指定されたデバイスコンテキストに設定されているブラシやペンでリージョンを描画する。PaintRgn function (wingdi.h) - Win32 apps | Microsoft DocsWM_CREATEで、リージョンとともに、赤いブラシも生成。WM_PAINTは、SelectObjectでhDCに赤い…

Polygon

Polygonは指定された頂点を持つ閉じた多角形を描画する。Polygon function (wingdi.h) - Win32 apps | Microsoft Docs5つの頂点をPOINTの配列ptで指定する。 WM_CREATEで、頂点、そしてペンやブラシをセット。 WM_PAINTで、Polygonでptと頂点の数を指定する…

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は、メニュ…