Я хочу создать настраиваемые всплывающие подсказки, в которые можно поместить любые элементы управления. Я получил от CDialog и использовал стили WS_POPUP | WS_BORDER
. Я также добавляю стиль CS_DROPSHADOW
в OnInitDialog, чтобы получить тень всплывающей подсказки.
Затем я управляю событиями WM_MOUSEHOVER
и WM_MOUSELEAVE
, чтобы показать / скрыть подсказки.
Я отображаю всплывающую подсказку, используя SetWindowPos
и SWP_NOACTIVATE
, чтобы предотвратить отключение родительского элемента и активацию нового диалога. Но в любом случае, когда я создаю диалог, используя метод CDialog::Create
... главное окно становится неактивным ... что дает очень плохой эффект.
Итак, я могу создать CDialog со стилем WS_POPUP без моего главного окна (или родительского окна диалога), которое становится неактивным, когда появляется новый диалог ???
Спасибо за помощь!
Отредактировано: я не использую стиль 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.