ウィンドウ内にウィンドウを表示してるかのように見せかける

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

ログインウィンドウなどの小ウィンドウをいちいちダイアログ表示してるとなんかアレですよね。私も現在作っているプログラムでログインを求める部分が多数あるのですが、たくさん表示させる機会があるとなおさらスマートに見せたいですよね。
HTMLでいうLightBoxみたいな感じで表示させるライブラリを作ってみました。

まあただ、機能的にには見せかけているだけですし、LightBoxのようにすごいものでもありません。あくまで雰囲気作り。その程度です。あとバグっぽいものが幾つかあります。そこはご了承を

概要

cbox-sample
LightBoxのようにウィンドウ内にウィンドウを表示させるかのように見せかけたもの。小さなメッセージ等を表示させたいときに使えるかも

仕組み

cbox-spec
仕組みはLightBoxと似ていると思います。親となるウィンドウ(又はコントロール)の上にフィルターウィンドウを被せ、さらにメッセージウィンドウをその上に乗せているような感じです。
フィルターウィンドウは背景が黒で透過度を0%から徐々に30%まで上げてゆっくりと表示させています。
私の環境ではウィンドウが表示されるときのアニメーションと同じ早さでフェードインしていってる感じでした。(100ms)
また、メッセージウィンドウはフィルターウィンドウの常に真ん中にあるようにしました。親コントロールが動かされてもしっかりと真ん中に来るはずです。ただしMDI環境ではベースとなるコントロールのあるウィンドウが最大化されていないと不具合が発生する恐れあり。
もしバージョンアップする機会があればフィルターウィンドウをぼかしにしたりとアレンジを加える予定。

ライブラリの内容

zipファイルの中に4つのdllファイルがあります。私のプロジェクトから抜き取ったモジュールなので多分全部ないと動作しないと思います。

ダウンロード

[wpdm_file id=18] ライセンスはこちらで公開されています。