Re[2]: Проблемы CDateTimeCtrl.
От: Denis  
Дата: 07.09.01 06:21
Оценка:
Здравствуйте WindJammer, вы писали:

WJ>Здравствуйте Denis, вы писали:


D>> У кого-нибудь этот класс нормально работает? Ситуация такая — создаем контрол, запускаю из-под VC (просто run, не debug) — работает нормально, запускаю просто exe-шник — метод GetTime возвращает бред. По наглому ставлю SetTime, за ним сразу GetTime — из-под VC работает, выхожу, запускаю exe-шник — не работает... Код возврата GDT_VALID, т.е. она считает, что все нормально. Делаю SetRange — из-под VC опять все нормально отрабатывает, а при запуске exe-шника сразу exception. Причем это не в одном месте, а везде, где использовался этот контрол (используется в 7 диалогах)...

WJ>Звучит странно.


Самому было странно. Два дня трахался, пытался разобраться, потом стали сроки/начальство поджимать — написал свой контрол, но мне он не очень нравится, да и просто интересно разобраться в ситуации...


WJ>А точно переменная у вас класса CDateTimeCtrl, а не CTime, что предлагает визард по умолчанию?

WJ>Должно работать.

Визардом не пользуюсь, бо не люблю — все создается ручками — точно CDateTimeCtrl и я перебробовал разные комбинации стилей/параметров — все равно не работает...
Вот строка создания:

m_wndStartDate.Create(DTS_APPCANPARSE|DTS_LONGDATEFORMAT|DTS_RIGHTALIGN|WS_TABSTOP|WS_VISIBLE,rectItem,this,IDC_DUTYMEN);

Где m_wndStartDate определена:

CDateTimeCtrl m_wndStartDate;

Вот самое интересное:

CTime stT1=0,stT2;
m_wndStartDate.GetRange(&stT1,&stT2);
tempSt.Format("2: %2u/%2u/%u",stT1.GetDay(),stT1.GetMonth(),stT1.GetYear());
AfxMessageBox(tempSt,MB_OK);
m_wndStartDate.SetRange(&stT1,&stT2);

GetRange нормально отрабатывает, а SetRange только под VC — при запуске просто exe-шника он выбрасывает exception на этой строке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.