WindowsAPI

lstrcpy

lstrcpyで文字列をコピーする。lstrcpyA function (winbase.h) - Win32 apps | Microsoft Docsこれもtcscpyでも出来るけど。 lstrcpy.cppで、"ABCDE"をtszText1からtszText2にコピー。 before: tszText1 = ABCDE tszText2 = after: tszText1 = ABCDE tszText…

lstrlen

lstrlenで、文字列の長さを取得する。lstrlenA function (winbase.h) - Win32 apps | Microsoft Docstcslenとかでもいいけど、こっちのAPIのほうが良かったりする理由もある模様。 (それについてはいずれ扱う。) lstrlen.cppで、"ABCDE"の長さを取得。 tszTe…

FindWindow

FindWindowで指定されたウィンドウクラス名やウィンドウ名のウィンドウを探すことが出来る。FindWindowA function (winuser.h) - Win32 apps | Microsoft Docs ñdN®これを使うと、ミューテックスとかを使わなくても簡易的な二重起動防止が出来る。 // ヘッダ…

SetCursorPos

SetCursorPosで、指定の位置にマウスカーソルを移動する。SetCursorPos function (winuser.h) - Win32 apps | Microsoft Docs カーソル操作SetCursorPos.cppのWM_LBUTTONDOWNで、クリックされたら、マウスカーソルを(200, 200)の位置にセット。 どこでもいい…

GCL_HBRBACKGROUND

GCL_HBRBACKGROUNDで、ウィンドウクラス既定の背景ブラシを取得したり設定できる。GetClassLongA function (winuser.h) - Win32 apps | Microsoft Docs左クリックで赤い背景ブラシに変える。 GCL_HBRBACKGROUND.cppで、最初は白にしておく。 WM_CREATEで、Ge…

WNDCLASS.cbClsExtra

WNDCLASS.cbClsExtraでクラス拡張メモリを設定できる。WNDCLASSA (winuser.h) - Win32 apps | Microsoft Docsウェイトカーソルも保持しておく。 WNDCLASS.cppで、2倍すれば、2つ保持できる。クロスカーソルはこれまで通りに0の位置。 ウェイトカーソルは4バ…

GCL_HCURSOR

GCL_HCURSORで、既定のカーソルハンドルを取得できる。GetClassLongA function (winuser.h) - Win32 apps | Microsoft Docs 補助メモリで、それはそれとして、実はクラス拡張メモリを使うと、既定のカーソルハンドルじゃなくても、SetClassLongで保存や、Get…

GetClassLong

GetClassLongで、ウィンドウクラスからロング値を取得できる。GetClassLongA function (winuser.h) - Win32 apps | Microsoft Docs 補助メモリたとえば、ウィンドウクラス定義でセットしたカーソルハンドルや背景ブラシハンドルなんかも取得できる。 という…

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…