【发布时间】:2008-12-12 15:28:31
【问题描述】:
我想创建自定义工具提示,我可以在其中放置任何类型的控件。我从 CDialog 派生并使用了 WS_POPUP | WS_BORDER 样式。我还在 OnInitDialog 中添加了CS_DROPSHADOW 样式以获取工具提示阴影。
然后我自己管理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);
第一次(即调用 create 时)主窗口失去焦点...其余的窗口没有发生这种丑陋的效果...所以我确定是因为 Create。
【问题讨论】: