我想创建自定义工具提示,我可以在其中放置任何类型的控件。我从 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);
第一次(即在调用创建时)主窗口失去焦点......其余的这种丑陋的效果没有发生......所以我确定是因为创建。