プロが教えるわが家の防犯対策術!

BCB5で、PhotoShopの情報パレットのような
マウス位置などの情報を表示するパレットを作成しています。
前回、「フォームに自作のプロパティを作ることは可能でしょうか?」という質問で
中身の動作については実装できたのですが、
またそれ以外に問題がでてきました。

1.パレットが、常にメインのウインドウよりも手前になければならない。
2.メインがアクティブになったり、パレットがアクティブになったりすると、
タイトルバーの色が変わって見た目にうるさいので、なんとかしたい。
Photoshopでは、常に両方とも(タイトルバーが)アクティブの色になっているので、そのようにしたい。
3.パレットのサイズをユーザーが変更したときに、
パレットの中身のコンポーネントもその比率で拡大・縮小させたい。
4.ユーザーがパレットを移動させても、メインのウインドウから外にでないようにしたい。
メインウインドウの端まで来たら、そこで移動をストップさせたい。

以上です。
1に関しては、今現在、FormStyleプロパティで「fsStayOnTop」に指定していますが
他に何か方法がありますでしょうか?
1~4の全てでも、一つずつでもかまいませんので、
よろしければ教えてください。
よろしくおねがいします。

A 回答 (1件)

BCB5のフォームを使った実装方法は(可能かどうかを含めて)わかりませんが


WindowsAPIでの実現方法なら

1.
常にウインドウを手前に表示したいのなら
CreateWindowExやSetWindowLongにおいて
WS_EX_TOPMOSTの属性をウインドウにつければ良いだけです。

2.
WinProcでWM_NCACTIVATEのとき0を返せばアクティブな状態を失う事はありません。

3.
実装方法は色々あります。例えば
ユーザーの変更があったときInvalidateRectでも実行してWM_PAINT内部で描画します。

4.マウスを動かすとWM_MOUSEMOVEが届くのでそのとき
ウインドウの位置をGetWindowRectで取得し
はみださないように制御すれば良いです。

この回答への補足

その後、回答がありませんので
WinAPIについて詳しく勉強して実現させたいと思います。
どうもありがとうございました。

補足日時:2005/10/07 10:06
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なにぶん、プログラミング全般に関して初心者なもので
Win32APIなどはまだ勉強していません。
しかし実現可能ならば、教えていただいた命令を勉強してみたいと思います。
ありがとうございました!

引き続き、BCB5のフォームを使った方法について
知っている方がいらっしゃいましたらよろしくお願いします!

お礼日時:2005/10/05 20:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!