我想创建自定义工具提示,我可以放置任何类型的控件。我从CDialog派生出来并使用WS_POPUP | WS_BORDER
样式。我还在OnInitDialog中添加CS_DROPSHADOW
样式以获取工具提示阴影。使用WS_POPUP对话框自定义工具提示
然后我自己管理的WM_MOUSEHOVER
和WM_MOUSELEAVE
事件显示/隐藏工具提示。
我使用SetWindowPos
和SWP_NOACTIVATE
显示工具提示,以防止父代变为非活动状态,并且新对话框变为活动状态。但无论如何,当我使用CDialog::Create
方法创建对话框时...主窗口变为不活动......这是非常糟糕的效果。
所以我custion是如何创建与WS_POPUP风格的一个CDialog没有我becomening不活动时,新的对话框显示了主窗口(或对话框的父窗口)???
感谢您的帮助!
编辑:我不使用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。
感谢您的帮助!我现在使用ShowWindow(SW_SHOWNOACTIVATE)而不是SetWindowPos和SWP_NOACTIVATE。我没有意识到这个选择,它更聪明。 坏它仍然无法正常工作......我已经编辑了一些评论的问题。 – 2008-12-12 15:57:02