WindowsAPI

GetCursor

GetCursorで、現在のカーソルのカーソルハンドルを取得できる。GetCursor function (winuser.h) - Win32 apps | Microsoft Docsカーソルが変わったかを確認してみる。 GetCursor.cppで、WM_LBUTTONDOWN時のハンドルをチェック。 (いちいちMessageBoxとかめん…

SetCursor

SetCursorは、現在のカーソルを、指定されたカーソルハンドルのカーソルにする。SetCursor function (winuser.h) - Win32 apps | Microsoft DocsSetCursor.cppで、 // ヘッダファイルのインクルード // 既定のヘッダファイル #include <windows.h> // 標準WindowsAPI #i</windows.h>…

SetClassLong

SetWindowLongでウィンドウにさまざまな値をセットしてきたが、SetClassLongでウィンドウクラスに値をセットすることもできる。SetClassLongA function (winuser.h) - Win32 apps | Microsoft Docs ウィンドウの設定SetClassLong.cppで、普通にウィンドウ表…

RemoveProp

RemovePropで、削除できる。RemovePropA function (winuser.h) - Win32 apps | Microsoft Docs データの関連付けウィンドウ破棄時に、削除はしておいたほうがいいらしいので。 RemoveProp.cppのWM_DESTROYで、RemovePropした後、そのキーでGetPropして、NULL…

SetProp

SetPropは、キーと値のペアで登録するので、複数登録することもできる。SetPropA function (winuser.h) - Win32 apps | Microsoft Docs データの関連付けSetProp.cppのWinMainで、キーが"UserData1"で値が"ABCDE"、キーが"UserData2"で値が"FGHIJ"、という2…

GetProp

ウィンドウにデータをセットする方法は、SetPropとGetPropを使う方法もある。GetPropA function (winuser.h) - Win32 apps | Microsoft Docs データの関連付けGetProp.cppのWinMainで、SetPropで"UserData1"をキーとしてtszUserData1を登録。 WM_PAINTで、"U…

GWL_USERDATA

ウィンドウに、何らかのデータをセットということは、GWL_USERDATAでも出来る。GetWindowLongA function (winuser.h) - Win32 apps | Microsoft DocsGWL_USERDATA.cppのWinMainで、SetWindowLongのGWL_USERDATAで、文字列"ABCDE"をセットしたtszUserDataを、…

CREATESTRUCT.lpCreateParams

CREATESTRUCT.lpCreateParamsは以前も使ったけど、ウィンドウをC++クラス"CWindow"(名前はなんでもいいけど)として定義し、ウィンドウハンドルとこのCWindowオブジェクトポインタが1対1に対応した形になるようにするために使うのが真骨頂かと思う。CREATESTR…

CallWindowProc

これまでは、独自にウィンドウプロシージャを定義し、そのウィンドウプロシージャを持つウィンドウクラスを独自に登録し、そのウィンドウを作成し、別のウィンドウプロシージャに差し替えを行った。 さて、スタティックコントロールや、エディットボックスの…

SetWindowLong

SetWindowLongで、ウィンドウの様々なLong値をセットできる。 GWL_WNDPROCで、新たなウィンドウプロシージャをセットして差し替える。SetWindowLongA function (winuser.h) - Win32 apps | Microsoft DocsSetWindowLong.cppで、WinMainは、親ウィンドウと子…

CREATESTRUCT.hwndParent

CREATESTRUCT.hwndParentを使えば、わざわざ親ウィンドウハンドルをlpCreateParams使って渡してもらわなくても、取得できる。CREATESTRUCTA (winuser.h) - Win32 apps | Microsoft DocsCREATESTRUCT.cppで、親ウィンドウハンドルを表示。 その後のCreateWind…

GWL_WNDPROC

GetWindowLongにGWL_WNDPROCを指定すると、指定したウィンドウハンドルのウィンドウのウィンドウプロシージャを取得できる。GetWindowLongA function (winuser.h) - Win32 apps | Microsoft DocsGWL_WNDPROC.cppで、WindowProcのアドレスを表示。今度はWindo…

CREATESTRUCT.hInstance

実は、WM_CREATE時に限っては、GetWindowLongとGWL_HINSTANCEを使わなくても、CREATESTRUCT.hInstanceという形でアプリケーションインスタンスハンドルを取得できる。CREATESTRUCTA (winuser.h) - Win32 apps | Microsoft DocsCREATESTRUCT.cppで、lParamをL…

GWL_HINSTANCE

アプリケーションインスタンスハンドルhInstanceは_tWinMainの引数として与えられるが、ウィンドウプロシージャのWindowProcとか任意の別の関数から取得したい場合は、GetWindowLongにGWL_HINSTANCEを指定する。GetWindowLongA function (winuser.h) - Win32…

GetWindowLong

GetWindowLongは、ウィンドウに関する様々なLong値を取得できる。GetWindowLongA function (winuser.h) - Win32 apps | Microsoft Docsたとえば、アプリケーションインスタンスハンドルhInstanceは、WinMain(_tWinMain)の引数として渡されるが、それが渡され…

GetClassName

GetClassNameで、そのウィンドウのウィンドウクラス名を取得する。GetClassName function (winuser.h) - Win32 apps | Microsoft DocsGetClassName.cppで、ウィンドウクラス名は"GetClassName"。WM_CREATE時に、GetClassNameで、ウィンドウクラス名をtszClas…

CREATESTRUCT

CREATESTRUCTは、CreateWindowによってWM_CREATEが呼ばれた時に、ウィンドウ作成情報を格納している構造体。CREATESTRUCTA (winuser.h) - Win32 apps | Microsoft DocsWM_CREATEのlParamは、CREATESTRUCTへのポインタにキャストでき、ウィンドウ作成情報が格…

SOCKADDR_IRDA

赤外線通信において、接続相手の情報などは、accept時などにSOCKADDR_IRDA形式で格納される。SOCKADDR_IRDA (af_irda.h) - Win32 apps | Microsoft Docsここから本格的に赤外線通信をしていくが、まずは準備など。 STOLA充電中この日のために、数年前から中…

AF_IRDA

ここまでサービス制御やプロセス制御についてやってきたのも、赤外線通信をするため。 まずは、赤外線通信用のソケットをAF_IRDAを指定して作成する。IrDA and socket | Microsoft Docs ws2_32.lib基本的にWinSockを使うので、ws2_32.libをリンク。実行する…

PathStripPath

PathStripPathで、パスからファイル名部分を取り出す。PathStripPathA function (shlwapi.h) - Win32 apps | Microsoft Docs WindowsAPIPathGetFileTitleとかやり方はいくつかあるけど、コンソールアプリならshlwapi.lib系のほうが何かと近そうなので。 (Get…

GetProcessImageFileName

GetProcessImageFileNameで、そのプロセスのプロセス名というか、実行ファイルのパスを取得できる。GetProcessImageFileNameA function (psapi.h) - Win32 apps | Microsoft Docs C++でプロセス名からプロセスIDを取得する - 備忘録 GetProcessImageFileName…

OpenProcess

OpenProcessで、指定のプロセスIDのプロセスをオープンし、ハンドルを取得する。OpenProcess function (processthreadsapi.h) - Win32 apps | Microsoft Docs C++でプロセス名からプロセスIDを取得する - 備忘録プロセス情報取得のため、PROCESS_QUERY_INFOR…

EnumProcesses

EnumProcessesで、プロセスIDを列挙する。EnumProcesses function (psapi.h) - Win32 apps | Microsoft Docs C++でプロセス名からプロセスIDを取得する - 備忘録 psapi.libをリンクpsapi.libをリンク。cbNeededで得られるのは必要な配列の全体サイズなので、…

ControlService

サービスの停止は、StopService・・・とおもったら、そういうものはなく、ControlServiceで、SERVICE_CONTROL_STOPを指定する。ControlService function (winsvc.h) - Win32 apps | Microsoft Docs Win32 Windowsサービスを制御する ControlService - s-kita…

StartService

StartServiceで、サービスを開始する。StartServiceA function (winsvc.h) - Win32 apps | Microsoft Docs Win32 Windowsサービスを開始する StartService - s-kita’s blog "Irmon"をいったんサービス停止する"Irmon"をいったんサービス停止する。 停止状態…

OpenService

OpenServiceで、既存のサービスをオープンし、ハンドルを取得する。OpenServiceA function (winsvc.h) - Win32 apps | Microsoft Docs Win32 Windowsサービスを開始する StartService - s-kita’s blog今回は、赤外線通信を管理するサービス"Irmon"、 赤外線…

OpenSCManager

サービスを制御するには、まずOpenSCManagerで、SCManagerをオープンして、ハンドルを取得する。OpenSCManagerA function (winsvc.h) - Win32 apps | Microsoft Docs Win32 Windowsサービスを開始する StartService - s-kita’s blog コンソールアプリコンソ…

PAINTSTRUCT

PAINTSTRUCTは、WM_PAINTの中で、BeginPaintで再描画情報を取得する時に使う。PAINTSTRUCT (winuser.h) - Win32 apps | Microsoft Docs 【Win32】PAINTSTRUCT構造体 | 初心者のWindowsプログラミング日記どこを再描画するかはPAINTSTRUCTのrcPaintに格納され…

MSG

GetMessageなどで取得した、ウィンドウメッセージ情報を格納しているのがMSG。MSG (winuser.h) - Win32 apps | Microsoft Docs単純にはそうだが、メッセージループとなると、不思議な部分もある。こういうMSG構造体のmessageの値を記録しておくログ関数を作…

WNDCLASS

WNDCLASSは、どういうウィンドウなのかという属性を決めるもの(他にも決めるものはあるんだけど)で、これを登録することで、ある程度の雛形が出来る。WNDCLASSA (winuser.h) - Win32 apps | Microsoft Docs今回は、クライアント領域に独自のウィンドウクラス…