Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: WinAPI


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 1794
∙ повысить рейтинг »
star9491
Статус: 8-й класс
Рейтинг: 639
∙ повысить рейтинг »
amnick
Статус: 9-й класс
Рейтинг: 500
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / WinAPI

Номер выпуска:578
Дата выхода:28.02.2010, 02:30
Администратор рассылки:Лысков Игорь Витальевич, Модератор
Подписчиков / экспертов:432 / 102
Вопросов / ответов:1 / 2

Вопрос № 176819: Здравствуйте уважаемые эксперты. у меня надо написать программку на с++:Реализовать аналоговые часы с часовой, минутной и секундной стрелками и написанными на циферблате числами. При старте программы часы показывают системное время. Обеспечить возмож...



Вопрос № 176819:

Здравствуйте уважаемые эксперты. у меня надо написать программку на с++:Реализовать аналоговые часы с часовой, минутной и секундной стрелками и написанными на циферблате числами. При старте программы часы показывают системное время. Обеспечить возможность перевода часов при помощи мыши и клавиатуры. Зарание благодарен за помощь)

Отправлен: 21.02.2010, 02:01
Вопрос задал: Kutishevsky A.N, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Сандров Алекс, Студент :
Здравствуйте, Kutishevsky A.N.

В чём проблема именно в Win32API? Я полагаю, с алгоритмом всё понятно? Нарисовать круг, циферки по кругу и потом рисовать пару линий из центра.
Если писать всю программу тут, то это долго.
В общих чертах по Win32API:
Создать окно: CreateWindowEx(...);
В нём мы будем рисовать часы.
Можно в Visual Studio создать в окне ресурсов диалог и создать окно через DialogBox

В функции обработки сообщений окна, в WM_PAINT:

рисуем круг: Ellipse(...)
цифры по кругу: DrawText(...)
и линии рисуются через: установить точку рисования: MoveToEx(...), нарисовать линию: LineTo(...)

принцип работы часов: по таймеру. Установка таймера окну: SetTimer(...), обработка: WM_TIMER
в обработчике WM_TIMER надо сделать так:
InvalidateRect(hWnd, NULL, TRUE); этот вызов сотрёт содержимое окна и вызовет перерисовку через WM_PAINT

Про время: ситемное время в секундах: time(); системное время в тексте _strtime();
вся информация про время, про переводы в разные форматы, есть в msdn-е, в закладке индекс набрать "time_t" в открывшейся странице выбрать функцию time, там есть хороший пример работы с датой/временем

Ответ отправил: Сандров Алекс, Студент
Ответ отправлен: 24.02.2010, 06:57
Номер ответа: 259695

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 259695 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Лысков Игорь Витальевич, Модератор :
    Здравствуйте, Kutishevsky A.N.
    Должен заметить, что непростой вопрос Вы задали... Пришлось дня четыре повозиться...
    Держите вожделенную Вами программу (под VC++ 6.0) в приложении. Чистое API.
    Можно было сделать диалогом, но я решил создавать окна самостоятельно.
    Только комментировать я ее не стал. Извините, Вы задали бесплатный вопрос! Я и так сделал очень много...
    Разбирайтесь сами. Впрочем, если будут вопросы, обязательно отвечу.
    Проект в прикрепленном файле.
    Вид окна программы показан на следующем рисунке

    Файл resource.h
    Код:
    #define IDI_CLOCK    100
    #define IDC_UPDOWN 200
    #define IDC_HOUR 300
    #define IDC_MINU TE 400
    #define IDC_SECOND 500
    #define IDC_APPLY 600
    #define IDC_TIME 700
    #define IDC_EXIT 800
    #define IDC_STATIC -1

    Приложение:
    Прикрепленный файл: загрузить »

    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Модератор
    Ответ отправлен: 24.02.2010, 15:42
    Номер ответа: 259707
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru
    Абонент Skype: igorlyskov

    Оценка ответа: 5

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 259707 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.02.2010

    В избранное