Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание таймера для простой игрушки на Visual Studio 2005...

28K
08 марта 2008 года
D-Luxe
18 / / 08.03.2008
Подскажите пожайлуста как реализовать таймер, который должен сбрасываться по нажатию на Button. Архитектура - Dialog Based.
320
08 марта 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: D-Luxe
Подскажите пожайлуста как реализовать таймер, который должен сбрасываться по нажатию на Button. Архитектура - Dialog Based.

  1. Добавляешь в класс диалога 3 переменные
     
    Код:
    ...
    private:
        int i;
        CStatusBarCtrl bar;
        CString s;
    ...
  2. Для класса диалога добавь ф-ию OnTimer в Messages
     
    Код:
    ...
    void какое-то имя::OnTimer(UINT_PTR nIDEvent)
    {
        ++i;
        char buf[10];
        s = itoa(i,buf,10);
                 bar.SetText(s, 0, 0); 
                 CDialog::OnTimer(nIDEvent);
    }
    ...
  3. В фии OnInitDialog допиши следующее
     
    Код:
    ...
       SetTimer(1,1000,0);
       bar.Create(WS_VISIBLE | WS_CHILD, CRect(0, 0, 0, 0),this,IDR_SB );
    ...
  4. В файле Resourse.h допиши такую строку
     
    Код:
    ...
     #define IDR_SB                          103
    ...
  5. Вытащи из ToolBox кнопку,2 раза щелкни по ней,появится ф-ия OnBnClickedButton1,она выглядит так
     
    Код:
    ...
    void какое-то имя::OnBnClickedButton1()
    {
        i = 0;
    }
    ...
Когда запустишь приложение в строке состояния будет идти отсчет секунд,а когда нажмешь кнопку,произойдет сброс.Строка сосотяния для контроля,её можно и не делать...
28K
09 марта 2008 года
D-Luxe
18 / / 08.03.2008
А как сделать, чтобы таймер выводился в Static Text. И в формате ЧЧ:ММ:СС????
320
09 марта 2008 года
m_Valery
1.0K / / 08.01.2007
  1. Вытаскиваещь из ToolBox static , добавляешь для него контрол переменную m_static.
  2. Добавляешь в класс диалога еще 2 переменные int h и int m(часы и минуты,соответственно)
  3. В ф-ии OnTimer пишешь такой код
Код:
...
             ++i;
    if(i == 60){
         ++m;
          i = 0;
    }
    if(m == 60){
        ++h;
        m = 0;
    }
    s.Format(L"Часы: %d минуты: %d секунды: %d",h,m,i);
    m_static.SetWindowTextW(s);
...
28K
09 марта 2008 года
D-Luxe
18 / / 08.03.2008
Хотелось бы сменить шрифт, цвет для выводимого времени и чтобы выглядело это так: 00:00:01. Т.е. время должно быть расположено по центру в Static. Как сделать???
320
11 марта 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: D-Luxe
Хотелось бы сменить шрифт, цвет для выводимого времени и чтобы выглядело это так: 00:00:01. Т.е. время должно быть расположено по центру в Static. Как сделать???



Для того чтобы время было расположено по центру Static нужно в Properties этого Static Align text -> Center,по умолчпнию стоит Left:)
Для того чтоб "выглядело это так: 00:00:01" нужно изучить функцию
класса CString Format,она работает по принципу printf,т.е

 
Код:
...
s.Format(L"%02d : %02d : %02d",h,m,i);
...
320
12 марта 2008 года
m_Valery
1.0K / / 08.01.2007
Для смены шрифта и цвета выводимого времени используем ф-ию
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor).Добавь ее в Messages класса диалога.Она должна иметь следующий вид
Код:
HBRUSH имя_приложения::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
     if(nCtlColor == CTLCOLOR_STATIC)
    {
        if(pWnd->GetDlgCtrlID() == IDC_STATIC1)
        {
            CFont font;
            font.CreateFont(-18, 0, 0, 0, 700, 1, 0, 0, RUSSIAN_CHARSET,
                0, 0, 0, 0, L"Times New Roman Cyr");
            pDC->SelectObject(&font);
            pDC->SetBkMode(TRANSPARENT);
            pDC->SetTextColor(RGB(255, 0, 0 ));
        }
    }
    return hbr;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог