取得したウィンドウハンドルに対して以下のようにすると、
常に手前表示にできるのですが、逆に、常に背面に表示というのは
できるのでしょうか?
ただの背面なら、HWND_TOPMOST のところを、HWND_BOTTOM とすれば
できるのですが、常に背面にはならないようです・・・。
handle: HWND;
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
DelphiMLの過去ログにそのものずばりがあります
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=048027
monaaさん、ありがとうございます。
これはDelphi作成のフォームに対しての処理と思うのですが、
他のソフト(例えば電卓とか)を常に背面に表示するのは
どうすればいいのでしょうか?
上記のログを参考にしようかと思ったのですが、さっぱり・・・。
これはどうですか
http://kwikwi.cocolog-nifty.com/blog/2005/12/delphi_form_fc18.html
>常に手前表示にできるのですが、逆に、常に背面に表示というのは
Manbonさんが何をしょうと思って他のソフトを背面に
したいのか分かりませんが。
自分のソフトの背面にしたいのなら、自分を前面に
配置する方が簡単だと思いますが。
例えば、電卓を常に背面に表示できたとすると、
まるで壁紙に張り付いたような電卓ができあがるので、
面白いのではないかと思ったからです。
(それだけなのであまり実用性があるとは思えないのですが^^;)
>例えば、電卓を常に背面に表示できたとすると
Windows.SetParent(FindWindow('SciCalc', '電卓'), FindWindow('Progman', 'Program Manager'));
これでずっと背面にい続けます。
でもタスクバーから電卓のアイコンは消えます。
ついでに戻し方が分からない、、
Windows.SetParent(FindWindow('SciCalc', '電卓'), 0);
や
Windows.SetParent(FindWindow('SciCalc', '電卓'), GetDesktopWindow);
としても戻らなかった。
FindWindowはトップレベルWindowしか検索しませんからね。
デスクトップの子にしたらFindWindowExするか、
自分でハンドルを持ってなければ元に戻せません。
>FindWindowはトップレベルWindowしか検索しませんからね。
>デスクトップの子にしたらFindWindowExするか
あら、そういうことだったんですね。
Windows.SetParent(FindWindowEx(FindWindow('Progman', 'Program Manager'), 0, 'SciCalc', '電卓'), 0);
これで無事もどりました。
monaaさんありがとうございます。
Dさん、monaaさん、ありがとうございました。
もうとっくに諦めていたもので、感激です!!
無事したいことができ、色々とソフト作成の
バリエーションが増えそうです。
でも、まだまだ知らないことが多いなぁと感じました。
ツイート | ![]() |