Коммуникационное использование потока SendMessage

Последний день месяца в 20:00 вечера совпадает с 1-м днем ​​месяца -4 часа, который мы можем использовать для создания функции, чтобы проверить, не прошли ли мы эту дату:

[110 ]

переменная now - это текущая дата и время, lastM4 - текущий год, текущий месяц + 1, следующий за месяцем, 1 - первый день месяца, а -4 - 4 часа в прошлое, которое является последним днем ​​месяца в 20:00 вечера. Другим способом было бы использовать день как -1 и добавить установить час на 20.

В конструкторе Date, который вы указали выше, используйте 0, так как день дает вам последний день предыдущего месяца, поэтому просто добавьте 20 в конце конструктора для часов, и у вас есть время, чтобы проверить сейчас. ]

5
задан 16 January 2009 в 19:39
поделиться

4 ответа

Я предложил бы создать скрытое окно. При использовании postthreadmessage, существует шанс, что сообщение могло потеряться (т.е.: если messagebox выполняет цикл сообщения).

Больше информации об этом в:

http://blogs.msdn.com/oldnewthing/archive/2005/04/26/412116.aspx

4
ответ дан 13 December 2019 в 19:37
поделиться

Возможно, необходимо попытаться использовать PostMessage или PostThreadMessage

3
ответ дан 13 December 2019 в 19:37
поделиться

Если поток не имеет никакого окна, никакой очереди сообщений и никакого диспетчера сообщения, то это будет твердым к сообщению к нему. Потокам свойственно создать скрытые окна только в коммуникационных целях (смотрите с Windows Spy, и Вы будете видеть много примеров).

Одна альтернатива должна использовать общую память и синхронизацию, примитивную такое событие или семафор. Другая альтернатива должна использовать каналы.

2
ответ дан 13 December 2019 в 19:37
поделиться

какой сказанный @jdigital. Обратите внимание, что при создании скрытого окна, и поток уже не реализует цикл сообщения (или в постоянном клиенте, win32-говорят, или один в контексте STA COM - и если Вы понятия не имеете, о чем я говорю затем, каждый, вероятно, не существует в Вашем потоке), Вы также захотите создать цикл сообщения также. ATL делает это довольно легким с _AtlModule.RunMessageLoop(); К сожалению, это также означает, что рассматриваемый поток, вероятно, испытывает необходимость, чтобы быть событийно-ориентированным, в то время как это находится в цикле сообщения. Можно сделать хитрые вещи как MsgWaitForMultipleObjects, но это становится волосатым.

Вот пример скрытых окон, если Вы знакомы с ATL/COM. Я прошел эту боль некоторое время назад и думал, что было полезное обсуждение microsoft.public.vc.atl, но лучшим, которое я могу найти теперь, является это сообщение. то, которое вдается в некоторые подробности о вариантах циклов сообщения (что сделать по-другому, если у Вас есть акселераторы нажатия клавиши или немодальные окна, кажется, что Вы не делаете в своем приложении).

2
ответ дан 13 December 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: