WindowsAPI

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

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を推奨するが、とりあえずキーを作成してみる・・・。…

WlanEnumInterfaces

WiFi関連の操作をしたい場合は、Native WiFi APIを使う・・・。Native Wifi (Windows) Wireless LAN API - 目次 - 汁ごはん中でも、WlanEnumInterfacesは、無線LANインターフェース情報の一覧を列挙する・・・。 (Windows XP3からなので、場合によってはWind…

GetInterfaceInfo

ネットワークインターフェース情報を取得するには、IPヘルパーAPI(iphlpapi.lib)を使う・・・。 GetInterfaceInfoは、ネットワークインターフェースを取得する・・・。GetInterfaceInfo function (Windows)といっても、これはインタフェースの名前とインデッ…

CreateRectRgn

これまで、図形を描画するのにRectangleのような描画APIを使ってきた・・・。 他にも楕円を描くEllipseや、多角形を描くPolygonとかがあるが、この図形そのものをハンドルを持つ1つのオブジェクトとして表示する方法もある・・・。 画面上に置けるこの図形の…

RegisterClassEx

RegisterClassExは、ウィンドウクラスを登録するWindowsAPI・・・。RegisterClassEx 関数この関数で登録する構造体はWNDCLASSEXとなる・・・。 WNDCLASSとの違いは、構造体のサイズを指定するところと、大きなアイコンとは別に小さなアイコンを設定できると…

CreateWindowEx

CreateWindowExは、ウィンドウを作成するWindowsAPI・・・。CreateWindowEx 関数CreateWindowとの違いは、第1引数に拡張スタイルを指定できることである・・・。今回は、メインウィンドウの中に、"STATIC"ウィンドウクラスの子ウィンドウを作成し、その子ウ…

CommandLineToArgvW

CommandLineToArgvWは、GetCommandLineなどで取得した1つのコマンドライン引数文字列を分解して、複数の引数文字列配列へのポインタや、引数の数を返すWindowsAPI・・・。CommandLineToArgvW 関数GetCommandLineで取得した引数文字列は、スペースを含んだ生…