Shahzad Naseer Ответов: 1

Как мне автоматически закрыть диалог


Я хочу закрыть свой диалог после отсутствия движения курсора над диалогом в течение 5 секунд.

Что я уже пробовал:

Таймера ontimer();
int iclose;

iclose+=1;
Если (iclose==5)
это - & gt;SetWindow(SW_HIDE);

[no name]

Итак, опубликуйте свой реальный код, отформатируйте его и задайте вопрос.

1 Ответов

Рейтинг:
4

Ravi Bhavnani

Скрытие окна скроет диалог, но не закроет его.  Чтобы закрыть диалоговое окно, вызовите CDialog::EndDialog[^].

Конечно, вы также должны написать логику, чтобы периодически проверять, прошло ли соответствующее время, прежде чем вы закончите диалог.

/ Рави


Shahzad Naseer

Спасибо Рави, а как насчет отсутствия движения мыши в течение 5 секунд до enddialog, я хочу отслеживать движение мыши над диалогом, я знаю, что некоторые другие статьи находятся здесь, например OnSetCursrs(); но это не сработало, любой sultion plz, мой watsap +923004794622,

Ravi Bhavnani

Пожалуйста, не ждите, что я (или любой другой доброволец CP) сделаю вашу работу за вас. И если вы ожидаете, что мы вышлем вам индивидуальное решение через WhatsApp, вы курите действительно хороший s---.

Почему вы используете SetCursor ()? Цель этого метода-установить визуальный курсор и не имеет ничего общего с определением положения курсора. Вместо этого переопределите CWnd:: OnMouseMove (), чтобы определить, находится ли мышь в пределах вашего диалогового окна. Вам нужно будет написать дополнительную логику, чтобы вычислить, как долго мышь оставалась неподвижной над диалогом, чтобы определить, должен ли диалог быть автоматически закрыт.

/ Рави

Shahzad Naseer

Я прошу прощения,
Я думаю, что все может быть сделано возможным на c++;

БООЛ методе cmydialog::метод onsetcursor(от cwnd* pWnd, uint с nHitTest, uint с сообщением)
{
CWnd* pWndtooltip = GetDlgItem(IDC_STATIC_TOOLTIP);

если (pWnd != this)
{
if (IDC_SN_START_ON = = pWnd- & gt;GetDlgCtrlID())
pWndtooltip- & gt;ShowWindow(SW_SHOW);

}
ещё
pWndtooltip-> ShowWindow(SW_HIDE);

SetCursor(AfxGetApp ()- & gt;LoadStandardCursor(IDC_ARROW));


вернуть true;

Ravi Bhavnani

Приношу свои извинения - я неправильно прочитал OnSetCursor () для SetCursor ().

Но меня смущает ваше желание показать / скрыть окно всплывающей подсказки. Я думал, вы хотите автоматически завершить диалог, когда мышь будет неподвижна над диалогом в течение 5 секунд или более?

/ Рави

Ravi Bhavnani

Я думаю, что вы можете достичь своей цели, смоделировав свою логику на коде в этой статье:
https://www.codeproject.com/Articles/19714/Auto-close-message-box

/ Рави