あらゆる種類のコントロールを配置できるカスタム ツールチップを作成したいと考えています。私は CDialog から派生し、WS_POPUP | WS_BORDER
スタイルを使用しました。CS_DROPSHADOW
また、OnInitDialog にスタイルを追加して、ツールヒントの影を取得します。
次に、ツールチップを表示/非表示にするイベントを自分で管理WM_MOUSEHOVER
します。WM_MOUSELEAVE
SetWindowPos
と を使用してツールチップを表示しSWP_NOACTIVATE
、親が非アクティブになり、新しいダイアログがアクティブになるのを防ぎます。とにかく、CDialog::Create
メソッドを使用してダイアログを作成すると...メインウィンドウが非アクティブになります...これは非常に悪い効果をもたらします。
したがって、新しいダイアログが表示されたときにメインウィンドウ(またはダイアログの親ウィンドウ)が非アクティブになることなく、WS_POPUPスタイルでCDialogを作成するにはどうすればよいですか?
助けてくれてありがとう!
編集済み:ダイアログの作成に WS_VISIBLE スタイルを使用していません...これはリソースです:
IDD_LABEL_TOOLTIP_DLG DIALOGEX 0, 0, 100, 9
STYLE DS_SETFONT | WS_POPUP | WS_BORDER
FONT 8, "Tahoma", 0, 0, 0x0
BEGIN
LTEXT "##################",IDC_TOOLTIP_LBL_TEXT,0,0,99,9
END
ツールチップを表示するコードは次のようなものです。
if(!pTooltipDlg)
{
pTooltipDlg = new MyCustomTooltipDlg();
pTooltipDlg->Create( MyCustomTooltipDlg::IDD, this);
}
pTooltipDlg->ShowWindow(SW_SHOWNOACTIVATE);
初めて(つまり、作成が呼び出されたとき)メインウィンドウはフォーカスを失います...残りのウィンドウでは、この醜い効果は発生していません...だから、作成が原因であると確信しています。