デスクトップ上に文字列を表示(描画?)するには?

解決


ぽぽろん  2012-03-02 00:21:29  No: 41741

D2007Proを使用しています。
タイトルの通り、デスクトップの右下に任意の文字を描画するプログラムを
作りたいと思っています。
下記参考URLのようにしたいのですが、画像処理関連がさっぱりです。
答えそのものでも大歓迎ですが、座標の取り方や手法などでヒントや
参考サイトがあれば教えてください。

・解像度に関係なく、画面右下に文字列を表示させたい
・よくある「常に手前に表示」のON/OFFを実装したい

参考URL: ttp://trendy.nikkeibp.co.jp/article/tec/winxp/20060713/117656/03.jpg

よろしくお願いいたします。


Mr.XRAY  2012-03-02 00:38:44  No: 41742

こんにちは.Mr.XRAYです.

こんなサンプルがありますね.
新たにウィンドウを表示すると,そこに隠れた部分は,表示したウィンドウを閉じると,
消えてしまいます.
表示したいのであれば,その処理が必要でしょう.

https://www.petitmonte.com/bbs/answers?question_id=774

http://www.geocities.jp/asumaroyuumaro/program/tips/createdc.html

考え方は,デスクトップのデバイスとコンテキストを取得し,
そのキャンパスを生成し,そのキャンパスに描画することになります.


Mr.XRAY  2012-03-02 00:41:43  No: 41743

また,背景が透明なフォームに文字列や画像を描画して表示する
という考え方もあるかも知れません.


Mr.XRAY  2012-03-02 00:44:36  No: 41744

>・よくある「常に手前に表示」のON/OFFを実装したい

だとすると背景が透明なフォームということになりそうです.
画面の表示位置は,マルチモニターでのことも考慮する必要があるかも知れません.


D  2012-03-02 07:45:08  No: 41745

透明なフォーム。

・Form1のTransparentColorプロパティをTrueに。
・Form1のTransparentColorValueプロパティを例えばclFuchsiaなどに。
・Form1のColorプロパティの値を↑で指定した値(clFuchsia)と同じに。

これだけで透明なフォームが作れます。
ただこの透明なフォームは透明になった部分を触ってもそのフォームはアクティブにはなりません。
透明でない部分(例えばLabelの文字の部分など)を触るとアクティブになります。

画面の右下にForm1を表示させるにはヘルプでTScreenを見ると良いと思います。
細かいところでプログラム実行中のモニター数の変更に関しての注意点です。
http://drang.s4.xrea.com/program/tips/memo/tscreen.html


ぽぽろん  2012-03-02 23:01:32  No: 41746

Mr.XRAYさん、いつもお世話になってます。
Dさん、レスありがとうです。

なんとか意図するものを作ることができました。
所謂クリックに反応しない「透明な付箋」を作りたかったんですね。

デバイスコンテキストを使った処理はハードル高そうだったので
フォームで透明化する方法を使わせていただきました。

画面右下への表示は
SystemParametersInfo(SPI_GETWORKAREA, 0, @DTRect, 0);
を使って BorderStyle := bsNone; にしたフォームをラベルサイズにして
幅と高さでやってみました。マルチモニタ環境で使うことはまずないです。

若干ズレがあったり、ラベル文字部分はクリックに反応してしまうなど
ありましたが、今回はこれで良しとしてます^^;

ご助言、どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加