常に背面に表示

解決


Manbon  2008-10-31 01:53:50  No: 32420

取得したウィンドウハンドルに対して以下のようにすると、
常に手前表示にできるのですが、逆に、常に背面に表示というのは
できるのでしょうか?

ただの背面なら、HWND_TOPMOST のところを、HWND_BOTTOM とすれば
できるのですが、常に背面にはならないようです・・・。

handle: HWND;
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);


monaa  2008-10-31 03:54:15  No: 32421

DelphiMLの過去ログにそのものずばりがあります
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=048027


Manbon  2008-11-05 17:50:01  No: 32422

monaaさん、ありがとうございます。
これはDelphi作成のフォームに対しての処理と思うのですが、
他のソフト(例えば電卓とか)を常に背面に表示するのは
どうすればいいのでしょうか?
上記のログを参考にしようかと思ったのですが、さっぱり・・・。


通りすがり  2008-11-05 18:26:14  No: 32423

これはどうですか

http://kwikwi.cocolog-nifty.com/blog/2005/12/delphi_form_fc18.html


TS  2008-11-05 21:55:14  No: 32424

>常に手前表示にできるのですが、逆に、常に背面に表示というのは

Manbonさんが何をしょうと思って他のソフトを背面に
したいのか分かりませんが。
自分のソフトの背面にしたいのなら、自分を前面に
配置する方が簡単だと思いますが。


Manbon  2008-11-05 22:17:49  No: 32425

例えば、電卓を常に背面に表示できたとすると、
まるで壁紙に張り付いたような電卓ができあがるので、
面白いのではないかと思ったからです。
(それだけなのであまり実用性があるとは思えないのですが^^;)


D  2008-12-06 04:30:47  No: 32426

>例えば、電卓を常に背面に表示できたとすると

Windows.SetParent(FindWindow('SciCalc', '電卓'), FindWindow('Progman', 'Program Manager'));

これでずっと背面にい続けます。
でもタスクバーから電卓のアイコンは消えます。
ついでに戻し方が分からない、、

Windows.SetParent(FindWindow('SciCalc', '電卓'), 0);

Windows.SetParent(FindWindow('SciCalc', '電卓'), GetDesktopWindow);
としても戻らなかった。


monaa  2008-12-06 05:29:13  No: 32427

FindWindowはトップレベルWindowしか検索しませんからね。
デスクトップの子にしたらFindWindowExするか、
自分でハンドルを持ってなければ元に戻せません。


D  2008-12-06 06:13:17  No: 32428

>FindWindowはトップレベルWindowしか検索しませんからね。
>デスクトップの子にしたらFindWindowExするか

  あら、そういうことだったんですね。

Windows.SetParent(FindWindowEx(FindWindow('Progman', 'Program Manager'), 0, 'SciCalc', '電卓'), 0);

これで無事もどりました。
monaaさんありがとうございます。


Manbon  2008-12-09 19:00:37  No: 32429

Dさん、monaaさん、ありがとうございました。
もうとっくに諦めていたもので、感激です!!
無事したいことができ、色々とソフト作成の
バリエーションが増えそうです。
でも、まだまだ知らないことが多いなぁと感じました。


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

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






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