SetWindowLongPtr |
Declare Function Api_SetWindowLongptr& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) |
||||||||||||||||||||||
Declare Function SetWindowLongptr Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long |
|||||||||||||||||||||||
指定されたウィンドウの属性を変更する。拡張ウィンドウメモリ内の指定されたオフセット位置にある値を書き換えることもできる。 |
|||||||||||||||||||||||
パラメータ
は失敗する。 数 -8 までである。たとえば、拡張メモリが 24 バイト以上ある場合、16 を指定すると、3 番目の整数値を変更できる。その他の値を変更 するには、次のいずれかの値を指定する。
hWnd パラメータで指定したウィンドウがダイアログボックスの場合は、次の値も指定できる。
dwNewLong か失敗したかを調べるには、まず 関数に 0 を渡して最終エラー情報をクリアしてから、SetWindowLongPtr 関数を呼び出す。こうすれば、 0が返された場合でも、GetLastError 関数の結果が 0 以外の値になるかどうかを調べることで、関数が失敗したかどうかを判断できる。
解説
はその変更が有効にならない。
しいウィンドウプロシージャは、WindowProc
コールバック関数の説明に示されているガイドラインに従っていなければならない。 たメッセージの戻り値を変更した場合、その直後からそのダイアログボックスプロシージャでは TRUE を返すようにする。こうしなければ、ダ イアログボックスプロシージャがウィンドウメッセージを受け取るための関数を呼び出した場合に、DWLP_MSGRESULT を使って設定した戻
り値が、ネストされたウィンドウメッセージにより上書きされてしまう。 ィンドウの作成に使われるようになる。システムクラスのサブクラスは作成してもかまわないが、他のプロセスで生成されたウィンドウクラスの サブクラスは作成しないようにする。SetWindowLongPtr 関数は、ウィンドウクラスに関連付けられたウィンドウプロシージャを変更することに よりウィンドウクラスをサブクラス化するため、それ以降システムは変更前のウィンドウプロシージャではなく新しいウィンドウプロシージャを呼び 出すようになる。新しいウィンドウプロシージャでは処理されないようなメッセージは、CallWindowProc 関数を呼び出すことによって変更前の
ウィンドウプロシージャへ渡さなければならない。これは、アプリケーションがウィンドウプロシージャのチェインを作ることを可能にする。 |