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…

SOCK_DGRAM

UDP通信をする場合は、socketの第2引数にSOCK_DGRAMを指定する。Man page of SOCKET 3-3 単純なUDP受信プログラム:GeekなぺーじSOCK_DGRAM.cで、SOCK_DGRAMを指定して、UDPソケットを作る。 $ vi SOCK_DGRAM.c $ gcc SOCK_DGRAM.c -o SOCK_DGRAM $ ./SOCK_DG…

GetWindowLong

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

$this

PHP

$thisは、呼び出し元オブジェクトを指す。PHP: クラスの基礎 - Manualまあ、C++と同じ。クラス外の変数、クラス内のメンバ変数、引数を全部同じ$aにしてみる。 メンバと引数を区別するのに$thisはよく使う。 こうなるこうなる。 1回目のfunc呼び出しで、引数…

BluetoothAdapter.isDiscovering

BluetoothAdapter.isDiscoveringで、Bluetooth機器の探索中かどうかをチェック出来る。BluetoothAdapter | Android Developersstrings.xmlで、Button2を追加。 activity_main.xmlで、こちらも"Button2"と表示されるbutton2が追加。 MainActivity.javaで、but…

BluetoothSocket.getInputStream

BluetoothSocket.getInputStreamで、InputStreamオブジェクトを取得して、あとはそれを使って読み込む。BluetoothSocket | Android DevelopersMainActivity.javaで、 package com.bgstation0.android.sample.bluetoothsocket_; import java.io.BufferedReade…

BluetoothSocket.getOutputStream

BluetoothSocket.getOutputStreamでOutputStreamオブジェクトを取得して、OutputStream.writeでデータを書き込む。BluetoothSocket | Android DevelopersMainActivity.javaで、soc.connectで例外が起きなければ、soc.getOutputStreamでoutputStreamを取得し…

sockaddr_rc構造体

struct sockaddr_rcに値をセットしてbindに渡して、listenして、acceptするのを待つ。./bluetooth/rfcomm.txtacceptを抜けたら、acceptにも渡しておいたstruct sockaddr_rcにリモート側の情報が入っている。 struct_sockaddr_rc.cで、acceptを抜けたら、リモ…

AF_BLUETOOTH

AF_BLUETOOTHは、Bluetoothのアドレスファミリーということ。http://people.csail.mit.edu/albert/bluez-intro/x502.htmlbindする時もsockaddr_rcで使う。local_addr.rc_familyにもAF_BLUETOOTHを指定。 sockaddr_rcは、BluetoothというかRFCOMM用のsockaddr…

BTPROTO_RFCOMM

Linux側に戻る。 スキャンは出来たので、今度はLinux側のサーバと、Android側のクライアントで、SPP通信をする。 サーバ側はBlueZでRFCOMM通信をするわけなので、BTPROTO_RFCOMMを指定する。./bluetooth/rfcomm.txt http://people.csail.mit.edu/albert/blue…

BluetoothSocket.connect

BluetoothSocket.connectで、接続する。BluetoothSocket | Android DevelopersMainActivity.javaで、引数とかいらないので、ちょっと接続してみる。 Essential Phoneを押してみるEssential Phoneを押してみる。 socは出来たとしてsocは出来たとして、connect…

BluetoothSocket

作成したBluetoothのクライアントソケットは、BluetoothSocketに格納しておく。BluetoothSocket | Android DevelopersMainActivity.javaで、soc.toStringで、中身を見るだけ。 まあこういうオブジェクトのこういうハッシュコードしかわからないけど。まあこ…

BluetoothDevice.createRfcommSocketToServiceRecord

BluetoothDevice.createRfcommSocketToServiceRecordで、指定されたUUIDのサービス用のRFCOMMソケットを作成する。BluetoothDevice | Android DevelopersBluetoothデバイスを見つけたら、これでソケット作って接続して通信する。 また、構成がちょっと変わる…

BluetoothAdapter.ACTION_DISCOVERY_STARTED

探索を開始した時に、BluetoothAdapter.ACTION_DISCOVERY_STARTEDが呼ばれる。BluetoothAdapter | Android DevelopersCustomReceiver.javaで、ACTION_DISCOVERY_STARTEDの時に、アダプタ側でclearしてる。 1回目1回目。 2回目2回目。 という感じで再度スキャ…