我想創建自定義工具提示,我可以放置任何類型的控件。我從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