| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Отображение диалоговых окон с календарём |
| Автор: Brodyaga 22.11.2008, 16:46 |
| Всем здравсвуйте! Помогите пожалуйста с такой вот проблемкой... Работаю я в MSVC 2005. Создаю вин приложение стандартное с меню, в котором есть выбор File->Exit и Help->About. По выбору в меню пункта About появляется стандартное About'овское окно... Теперь суть проблемы: захожу я, значит, в ресурсы, выбираю это About'овское окно и кидаю на него скажем радио баттон. Компилирую, запускаю.. выбираю пункт About... Всё ОК! браво! появляется окно с радио баттоном! Но вот когда я кидаю на него Date-Time Control, то при выборе пункта меню About ничего не происходит.. окно не появляется и ошибки никакой... После всевозможных проб я понял, что часть компонентов отображается также как радио баттно, а с частью происходит такая же фигня, как и с Date-Time Control'ом... В чём дело?! Помогите пожалуйста, срочно надо... |
| Автор: 586 22.11.2008, 16:57 |
| InitCommonControls вызывал? |
| Автор: jonie 22.11.2008, 18:41 |
| лучше манифестом баловаться, чем InitCommonControls-подобным... |
| Автор: Brodyaga 22.11.2008, 19:06 |
| С CommonControl получилось, спасибо! правда не сразу.. надо было ещё comctl32.lib подключить и commctrl.h. Вот http://sdo.grsu.by/forum/index.php?PHPSESSID=f1eb35a745bc8ee9597318b54e2af5de&topic=137.0 кому интересно. А вот с манифестом не получилось... А почему с ним лучше и как сделать? |
| Автор: jonie 22.11.2008, 19:29 |
| ну манифест как бы "принято" .... явный вызов библиотеки не очень хорошо : их же есть несколько версий (по вашей ссылке указано). http://www.msjogren.net/dotnet/eng/tools/default.asp см. ThemeMe - там то что надо вроде |
| Автор: Brodyaga 24.11.2008, 18:52 |
| Возникла ещё одна проблема.... Теперь диалоговое окно не перетаскивается! Тоесть отобразилось на экране окно с календарём, а перетащить его в другую область экрана я не могу... Все опции окна просмотрел, ничего такого не нашёл, что могло бы помочь, подскажите в чём дело, пожалуйста!? |
| Автор: jonie 24.11.2008, 19:30 |
| вероятно у вас просто не обрабатываются сообщения соотвествующие, или обрабатываются неположенным образом... |
| Автор: Brodyaga 24.11.2008, 19:36 | ||
А какое это сообщение? и как оно должно обрабатываца.. у меня оконная процедура для диалога стандартная:
|
| Автор: Brodyaga 24.11.2008, 20:00 | ||||
Ок, с этим вроде разобрался... закоментил строчки:
и окно стало перетаскиваться... теперь у меня созрел ещё один вопрос... Как я могу по щелчку на кнопке на диалоговом окне, получить дату выбранную в календаре на этом же окне? Тоесть что нужно прописать вот тут:
|
| Автор: jonie 24.11.2008, 23:41 | ||
как-то странно выглядит процедура оконная диалоговая. обычно ее делают такой:
|
| Автор: 586 24.11.2008, 23:47 |
| http://msdn.microsoft.com/en-us/library/cc656439(VS.85).aspx |
| Автор: Brodyaga 25.11.2008, 18:22 |
| jonie, так это стандартная процедура для диалогового окна, студия сама создаёт... Ну да не суть важно... Так как мне по нажатию кнопки обратица к калндарю, лежащему на этой же диалоговой форме? писать для календаря свою процедуру? только так? |
| Автор: Brodyaga 26.11.2008, 14:59 |
| 586, по данной вами ссылке в общем рассказывается про работу с календарём. Сейчас же мне нужно узнать как по нажатию кнопки на диалоговом окне, взять значение выбранной даты в календаре расположенном на этом же диалоговом окне. |
| Автор: 586 26.11.2008, 17:56 | ||
Слева, в списке статей есть главная статья: http://msdn.microsoft.com/en-us/library/bb761727(VS.85).aspx
|
| Автор: Brodyaga 28.11.2008, 14:55 |
| Спасибо! Всё получилось! Ещё такой вопросик... Есть ли какойнить макрос чтобы получить дату не строкой, а количеством миллисекунд? или как склеить полученные значения типа UINT из SYSTEMTIME в тип double ? |
| Автор: 586 28.11.2008, 19:32 | ||
Если нужен числовой формат, то SYSTEMTIME можно конвертировать в FILETIME (64-битное целое число).
По поводу double, подобных функций в WinAPI не видел. Можешь посмотреть, как реализована функция Now() или объект TDateTime в исходниках VCL (Delphi), или поискать в гугле. http://www.wasm.ru/forum/viewtopic.php?pid=168066#p168066 А зачем тебе нужно конвертировать в double? |
| Автор: Brodyaga 29.11.2008, 12:22 |
| мне нужно отослать дату на веб-сервис, а он принимает её в виде double... Веб-сервис написан на С#. И там нет типа FILETIME ... Может както лучше изменить функцию веб-сервиса? |
| Автор: Solotoy29 29.11.2008, 21:49 |
| У когото есть прога Електронный секретар, очень нужна на С++ |
| Автор: jonie 30.11.2008, 13:04 | ||
|
| Автор: Brodyaga 30.11.2008, 14:00 | ||
Точно! но как мне передать значение FILETIME на сервер? ни в long, ни в double оно не конвертица... |
| Автор: 586 30.11.2008, 14:22 | ||||
или так:
|
| Автор: Brodyaga 30.11.2008, 15:05 | ||
| DateTime::FromFileTime принимает long, а long 4 байта, те формулы что вы мне привели переводят в double FILETIME который 64 байта. Добавлено через 5 минут и 17 секунд
Это будет представление FILETIME в виде long, который проглодит DateTime::FromFileTime ?? или нет?! |
| Автор: 586 30.11.2008, 22:15 | ||||
А в Managed С++ там __int64 (см. скриншот).
Я написал, как переводить в 64-битную целочисленную переменную. |
| Автор: Brodyaga 1.12.2008, 11:46 |
| Спасибо! И последний вопрос.... При первом отображении календаря там стоит выбранным текущее число и текущее время, как сделать чтобы по дефолту было выбрано другое число и время? |
| Автор: 586 1.12.2008, 17:07 |
| http://msdn.microsoft.com/en-us/library/bb761813(VS.85).aspx |
| Автор: Brodyaga 3.12.2008, 13:02 |
| Спасибо большое! Всё получилось! +1 ;) |