WindowsAPI

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で取得した引数文字列は、スペースを含んだ生…

GetCommandLine

GetCommandLineは、コマンドライン引数文字列を取得するWindowsAPI・・・。GetCommandLine 関数_tWinMain関数のlpCmdLineにもコマンドライン引数文字列は格納されているが、実行ファイル名が含まれていない・・・。 実行ファイル名を含めたコマンドライン引…

LoadBitmap

LoadBitmapは、ビットマップをロードするWindowsAPI・・・。LoadBitmap 関数LoadImageよりもレガシーで、こちらはリソース登録したビットマップやシステム既定のビットマップしか読み込めず、ビットマップファイルからは読み込めない・・・。 これも互換性の…

BITMAP

ビットマップをリソースに登録することで、実際のビットマップファイルがなくても、実行ファイルに埋め込まれたビットマップファイルをロードして表示などが出来る・・・。resource.hは、BITMAP.rcは、とする・・・。 でbitmap1.bmpをBITMAP.rcと同じ場所に…

OpenEvent

OpenEventは、イベントを開くWindowsAPI・・・。OpenEvent 関数今度は、とある処理が行われたら、手動でシグナル状態や非シグナル状態にすることで、同期を取る方法・・・。イベント名は"Event"とする・・・。手動で非シグナル状態に戻すので、イベントを作…

OpenSemaphore

OpenSemaphoreは、セマフォを開くWindowsAPI・・・。OpenSemaphore 関数クリティカルセクション、ミューテックスは1つしか同時に実行できなかったが、 セマフォは指定した数までは同時に実行でき、それを超えるとどれかのスレッドが終わらない限り待つという…