Проблемы CDateTimeCtrl.
От: Denis  
Дата: 06.09.01 09:09
Оценка:
У кого-нибудь этот класс нормально работает? Ситуация такая — создаем контрол, запускаю из-под VC (просто run, не debug) — работает нормально, запускаю просто exe-шник — метод GetTime возвращает бред. По наглому ставлю SetTime, за ним сразу GetTime — из-под VC работает, выхожу, запускаю exe-шник — не работает... Код возврата GDT_VALID, т.е. она считает, что все нормально. Делаю SetRange — из-под VC опять все нормально отрабатывает, а при запуске exe-шника сразу exception. Причем это не в одном месте, а везде, где использовался этот контрол (используется в 7 диалогах)...
Я сейчас написал свой аналогичный контрол и заменил им стандартный, но все равно хочется разобраться и понять, в чем проблема.
Re: Проблемы CDateTimeCtrl.
От: WindJammer  
Дата: 06.09.01 14:39
Оценка:
Здравствуйте Denis, вы писали:

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

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



D> Я сейчас написал свой аналогичный контрол и заменил им стандартный, но все равно хочется разобраться и понять, в чем проблема.

Звучит круто.



А точно переменная у вас класса CDateTimeCtrl, а не CTime, что предлагает визард по умолчанию?
Должно работать.
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 на этой строке.
Re[3]: Проблемы CDateTimeCtrl.
От: WindJammer  
Дата: 07.09.01 08:19
Оценка:
Здравствуйте Denis, вы писали:

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


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


D> CDateTimeCtrl m_wndStartDate;


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


D> CTime stT1=0,stT2;

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

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




У меня все это работает и в VC и отдельно. Сервис пак 5.
Попробуйте тоже самое сделать в новом проекте, по результатам можно будет определить дальнейшее направление исследования.
А GetRange у вас все время одно и тоже возвращает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.