У кого-нибудь этот класс нормально работает? Ситуация такая — создаем контрол, запускаю из-под VC (просто run, не debug) — работает нормально, запускаю просто exe-шник — метод GetTime возвращает бред. По наглому ставлю SetTime, за ним сразу GetTime — из-под VC работает, выхожу, запускаю exe-шник — не работает... Код возврата GDT_VALID, т.е. она считает, что все нормально. Делаю SetRange — из-под VC опять все нормально отрабатывает, а при запуске exe-шника сразу exception. Причем это не в одном месте, а везде, где использовался этот контрол (используется в 7 диалогах)...
Я сейчас написал свой аналогичный контрол и заменил им стандартный, но все равно хочется разобраться и понять, в чем проблема.
Здравствуйте Denis, вы писали:
D> У кого-нибудь этот класс нормально работает? Ситуация такая — создаем контрол, запускаю из-под VC (просто run, не debug) — работает нормально, запускаю просто exe-шник — метод GetTime возвращает бред. По наглому ставлю SetTime, за ним сразу GetTime — из-под VC работает, выхожу, запускаю exe-шник — не работает... Код возврата GDT_VALID, т.е. она считает, что все нормально. Делаю SetRange — из-под VC опять все нормально отрабатывает, а при запуске exe-шника сразу exception. Причем это не в одном месте, а везде, где использовался этот контрол (используется в 7 диалогах)...
Звучит странно.
D> Я сейчас написал свой аналогичный контрол и заменил им стандартный, но все равно хочется разобраться и понять, в чем проблема.
Звучит круто.
А точно переменная у вас класса CDateTimeCtrl, а не CTime, что предлагает визард по умолчанию?
Должно работать.
Здравствуйте 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 и я перебробовал разные комбинации стилей/параметров — все равно не работает...
Вот строка создания:
Здравствуйте 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 у вас все время одно и тоже возвращает?