Другая функция, не мной, но найденный в сети и усовершенствованный это немного:
public static int GetAge(DateTime birthDate)
{
DateTime n = DateTime.Now; // To avoid a race condition around midnight
int age = n.Year - birthDate.Year;
if (n.Month < birthDate.Month || (n.Month == birthDate.Month && n.Day < birthDate.Day))
age--;
return age;
}
Всего две вещи, которые входят в мой ум: Что относительно людей из стран, которые не используют григорианский календарь? DateTime. Теперь находится в определенной для сервера культуре, я думаю. У меня есть абсолютно 0 знаний о фактическом работании с азиатскими календарями, и я не знаю, существует ли простой способ преобразовать даты между календарями, но на всякий случай Вы задаетесь вопросом о тех китайских парнях с 4660 года:-)
TBH Это даже проще, чем заставляет вас поверить сообщение JC.
DDX_Control( pDX, IDC_RADIO3, m_r3 );
DDX_Control( pDX, IDC_RADIO4, m_r4 );
m_Val = 0;
DDX_Radio( pDX, IDC_RADIO3, m_Val );
Вам нужно отметить ПЕРВЫЙ переключатель в группе с помощью WS_GROUP (в данном случае IDC_RADIO3). Теперь все готово, и он автоматически выберет IDC_RADIO3).
Теперь, чтобы поддерживать m_Val в актуальном состоянии, вероятно, стоит установить обработчик щелчка на всех переключателях в группе. Внутри этой функции просто вызовите UpdateData (TRUE); m_Val теперь будет указывать на индекс переключателя в группе.
Я нашел ответ здесь: http://www.flounder.com/getdlgitem.htm
ЕСТЬ проблема с использованием DDX_Control
и DDX_Radio
одновременно :) Это небольшой прием, позволяющий обойти проблему.
Переменные радиокнопки
Другая внутренняя проблема, которая представляет собой какой-то странный философская точка зрения Microsoft, в том, что вам нельзя позволять создать управляющие переменные для радио кнопки. Это не имеет никакого смысла. Oни есть какая-то странная идея, что единственный способ вы когда-нибудь будете манипулировать переключателями через индекс. Это безнадежно неадекватный. Следовательно, вам нужно идти через серьезные искривления получить управляющие переменные для вашего радио кнопки.
Первое, что вам нужно сделать, это пойти назад и отметьте все радиокнопки как со стилем
WS_GROUP
. Только переключатели со стилемWS_GROUP
может иметь управляющую переменную. Однако, если вы отметите их всеWS_GROUP
, создать элемент управления переменные, а затем удалитеАтрибут WS_GROUP
, все работает просто отлично, спасибо. Почему мы должны пройти эти дополнительные шаги не делает никакого смысла, но как производное проблема классов, я жаловался об этом годами безрезультатно. Моя проблема в том, что я все время забываю чтобы вернуться и отменить всеWS_GROUP
атрибуты, поэтому при первом запуске программу после этого я обнаружил, что все мои радиокнопки однокнопочные группы. Упс. $ #%! Исправить и перекомпилировать / повторно связать.