|
| Delphi - Delphiでちょっと使える子ネタ集 |
| 第1回 「各種ウィンドウ操作について 」 |
|
さて、初回の話題としては開発途中でとん挫している「何でもさくら」及び「NetSender」の開発において用いたウィンドウ操作系の関数の話題です。この何でもさくらは、あの任意たん事件がらみで開発をしようと思った常駐型のウィンドウ及びコントロール監視ソフトであり、その発想から「NetSender」の受信部も作られました。ほとんどがWin32APIであり、既知の分野ではありますが、簡単な話題からということで書いてみました。 |
||
| 1-1 ウィンドウのアクティブ化 | ||
|
一番よく使うウィンドウの操作はアクティブ化だと思います。つまり、隠れてしまっている特定のウィンドウを最前面に表示させるわけです。自分で作成した単一フォームに対してこの動作を行うのはとても簡単です。例えば
こんな感じです。しかし、当然ほかのアプリケーションのフォームに対してこの手法は使えません。そうなるとWindowsのAPI関数を使うことになります。 さて、Win32APIで簡単にこのことを実現できる関数は「Win32 Programmers Reference」から
とあります。つまり、アクティブ化したいウィンドウのハンドルが分かっていればそれを引数としてこの関数を呼び出しましょう。ちなみに返り値は成功時には非零、失敗すると零が返ります。 つまり、上の例であれば、
という感じで良いわけです。さて、この例は自前のフォームに対して行っていますが、ほかのウィンドウでも同じようにハンドルを渡せばいいのです。 そのハンドルはどうやって取得するか?それは次からのお楽しみです。
補足 (2002/02/01)
これは設計時でも実行時でも可能です。もしWin32APIを使うのであれば
この関数に最前面に移動するフォームのハンドルと共に最前面要求を送ります.X,Y,cx,cyを使えばフォームの位置・大きさを変更できますが今回はフォームの大きさを変更したくないのでwindow-positioning flagsに対して移動せずリサイズしない為の要求を出しておきます.
ここではX,Y,cx,cyに適当に数値を入れていますが全て無効になります. |
||
| Copyright tanpa 2000-2012 |