モードレスダイアログを表示してる中、ツールチップを前面に表示するには

解決


Prise  2010-06-18 20:59:49  No: 71735

モードレスダイアログを複数画面に表示しています。
メインウィンドウではツールチップを表示したいのですが
ツールチップを表示すると、モードレスダイアログの下に表示されてしまいます。

ウィンドウは常に最前面に表示しているため、WM_NOTIFYで
ツールチップ表示時などに、最前面を解除したりするのを試みておりますが
どうも旨く解決しません。

ご教授の程よろしくお願いします。


ロマ  2010-06-20 06:56:50  No: 71736

メインウィンドウのツールチップを流用しているんですか。
ダイアログを親(正確にはオーナー)にして、新しいtooltipを作れば
解決すると思います。
tooltipなどPopupWindowはオーナーより手前に出るためです。

または、tooltipはWS_EX_TOPMOSTを持っており、
ダイアログのWS_EX_TOPMOSTをぶつかっているために
このような症状がでるので
tooltip表示時にSetWindowPos(HWND_TOPMOST,,)を呼べば
なんとかなるかもしれません。


Prise  2010-06-20 22:49:47  No: 71737

レス有難うございます。

メインウィンドウでだけツールチップは表示したいが為
ダイアログはオーナーには今のところ出来ません。

ツールチップ表示時にTOPMOSTを操作していますが
たまにダイアログの上に表示される事もありますが、100%成功はしていません。


ロマ  2010-06-21 03:48:43  No: 71738

メインウィンドウ用のtooltip、
ダイアログ用のtooltip、
その他必要に応じてtooltip、
どんどん作ったほうが簡単です。

Spy++を見ると、
いっぱいあることが分かると思います。


ロマ  2010-06-22 07:19:17  No: 71739

がんばるのなら
SetWindowPosよりも
WM_ACTIVATEでSetParent()のほうが簡単かもしれません。


ryo  2010-06-22 19:10:10  No: 71740

ちょいと状況を確認

「『メインウィンドウに対するツールチップ』が質問の対象。
たとえば、表示する文字が長いため、一部がサブダイアログに重なってしまうことがある
その重なった部分がサブに隠れる。これをなんとかしたい」

「ツールチップの目的がメイン・サブのどちらであろうと、
『技術的にツールチップの直接のオーナーはメイン』でやりたい
ただ、こうすると、サブ上のツールチップは当然サブに隠れてしまう。
これをなんとかして、『メインから出したツールチップだけど、サブの上にもってこさせたい』」

どっち?
私は前者だと思ったのですが・・・


ロマ  2010-06-22 20:25:50  No: 71741

ryoさん、ありがとうございます。
完全に誤解していました。


ロマ  2010-06-22 21:09:25  No: 71742

連投すまんです。
これでなんとかなりませんか。
//メインウィンドウのWindowProcで
case WM_NOTIFY:
  if(((NMHDR*)lParam)->code == TTN_SHOW)
    SetWindowPos(hwndTooltip, HWND_TOPMOST, 0, 0, 0, 0,
                  SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE);
  break;


Prise  2010-06-23 07:42:21  No: 71743

レス有難うございます。

遅くなり大変申し訳ございません。
こちらの文章が下手で、質問内容に齟齬がおき申し訳ありません。
ロマさんの記述して頂けた方法で無事解決しました。

本当に有難うございました。


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

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






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