вернуть дату в SysDateTimePick

Тема в разделе "WASM.BEGINNERS", создана пользователем zxcc, 24 апр 2009.

  1. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Здравствуйте.Столкнулся с такой проблемой.С помощью "SysDateTimePick32" вывожу дату.С помощью (invoke SendDlgItemMessage,hWnd,1,WM_GETTEXT,50,ADDR BD
    где 1-"SysDateTimePick32" ) в BD получаю выведенную дату (пример:пятница 24 апреля 2009) и сохраняю.Как можно задать сохраненную в BD дату в "SysDateTimePick32" .С
    помощью invoke SendDlgItemMessage,hWnd,1,WM_SETTEXT,50,ADDR BD не получается.
    Подскажите пожалуйста кто знает.Спасибо.
     
  2. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Нормально никак. Парси дату сам, выставляй DTM_SETSYSTEMTIME, и если хочешь, получай дату через DTM_GETSYSTEMTIME и храни неотформатированной.
     
  3. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Спасибо iZzz32.Уже иду по этому пути.Хотелось поменьше гемора.
     
  4. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Гемора лучше побольше даже сделать, имхо, тогда его в результате меньше будет: хранить не SYSTEMTIME, а Unix-timestamp (количество секунд с полуночи 1 января 1970). Плюсы: одно поле в БД, которые нормальные СУБД ещё и форматировать умеют при выборке, нормальная арифметика, относительно лёгкое конвертирование (SYSTEMTIME -> FILETIME -> timestamp, пример есть в MSDN), форматирование и парсинг стандартной сишной библиотекой.
     
  5. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    iZzz32 подскажи в subitem ListView можно DTM_GETSYSTEMTIME сохранить?
     
  6. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Наверное, очень извращение, но: если выставить LVITEM.pszText в LPSTR_TEXTCALLBACK, а в lParam запихать timestamp (см. выше), то очень даже можно сохранить (по LVN_GETDISPINFO отдавать форматированный текст). Иначе lParam считать указателем на динамически выделенный SYSTEMTIME и сделать пару костылей для добавления/удаления элементов.
    Ещё можно дату форматировать в легко парсибельный вид типа 2009-04-24 12:08:00 и хранить всё же строкой.
    Может, кто-нибудь попроще что-то предложит?.. А то у меня совсем огород %)
     
  7. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Форматировать дату в строку могу,а вот наоборот проблема.