Как закрыть окна через 5 секунд? - PullRequest
0 голосов
/ 25 июля 2010

Это «моя» программа . Как закрыть окна через 5 секунд?

//...
DeleteObject (hPedzelOkna);

DeleteObject (hBitmapa);

Sleep(5);
PostQuitMessage (0); 

/* The program return-value is 0 - The value that PostQuitMessage() gave */
//...

и

DestroyWindow(hwnd); 

не работает

(я использовал Dev C ++)

РЕДАКТИРОВАТЬ Люди предложили использовать SetTimer, однако я не могу заставить работать следующий код. Не могли бы вы привести пример кода, показывающий мне, как это сделать?

 SetTimer(hwnd, DestroyWindow(hwnd), 1000, NULL);

Ответы [ 4 ]

9 голосов
/ 25 июля 2010

Параметр Sleep указывается в миллисекундах, поэтому 5 секунд будет 5000, но использование Sleep не является правильным подходом (Sleep'ing не позволяет вашему окну обрабатывать сообщения)

Вы должны использовать SetTimer () в WM_CREATE, когда срабатывает таймер, вызвать DestroyWindow () в окне

2 голосов
/ 25 июля 2010

Прежде всего, вы почти никогда не хотите «спать» в оконной программе.Если бы я делал это, я бы установил таймер в ответ на WM_CREATE, а затем сделал бы DestroyWindow / PostQuitMessage в ответ на WM_TIMER.

1 голос
/ 25 июля 2010

Вы должны использовать таймер. В окнах, если вы делаете такие вещи, как Sleep (который, кстати, принимает в качестве входных данных количество миллисекунд, а не секунд), вы не обрабатываете события.

0 голосов
/ 25 июля 2010

Используйте SetTimer с функцией NULL.Затем вы получите сообщение WM_TIMER через 1000 миллисекунд (т. Е. Секунду, в зависимости от вашего примера).

Затем вы обработаете WM_TIMER и отправите сообщение PostQuitMessage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...