Как сделать при помощи MFC (Visual C++ 2012) бегущую строку?
То есть есть текст, сперва он отображается пустой строкой, затем появляется строка из одного символа-- . (символ точки), потом появляется строка из двух символов точки -- .. , после этого появляется строка из трёх символов точки -- ... , затем опять появляется пустая строка и т.д.
Как это реализовать?
если я правильно помню... давно же это было... ты можешь просто вызвать win api SetTimer и потом просто ловить сообщения WM_TIMER в OnTimer. и делай со своей строкой что хочешь...
Здравствуйте, RussianFellow, Вы писали:
RF>То есть есть текст, сперва он отображается пустой строкой, затем появляется строка из одного символа-- . (символ точки), потом появляется строка из двух символов точки -- .. , после этого появляется строка из трёх символов точки -- ... , затем опять появляется пустая строка и т.д. RF>Как это реализовать?
Самое простое — это взять готовый контрол HTML (CWebBrowser2), и сунуть туда текст с бегущей строкой — тэг <marquee>, если поддерживается ещё, либо стиль animation
Самое корявое — взять статический текст (CStatic) и по таймеру (OnTimer) загружать туда разные кусочки текста.
Наконец, самое аккуратное — сделать свой класс окна (можно субклассироваться от CStatic), реализовать там OnPaint, в котором рисовать текст с произвольным смещением. А смещение менять таймером. А таймер завести прямо в этом контроле или в диалоге, как выше со статиком.
Если заморочиться с субпиксельным сглаживанием и всякими красивостями типа размыливания краёв текста — это придётся уже колдовать с OpenGL или DirectX. Поэтому не советую сейчас, но как перспективу обозначаю.
К>Если заморочиться с субпиксельным сглаживанием и всякими красивостями типа размыливания краёв текста — это придётся уже колдовать с OpenGL или DirectX. Поэтому не советую сейчас, но как перспективу обозначаю.
Дожили. Бегущая строка на OpenGL. Gdi+ уже разучился сглаживание делать?
Здравствуйте, aloch, Вы писали:
A>Дожили. Бегущая строка на OpenGL. Gdi+ уже разучился сглаживание делать?
Ну или GDI+... Я ж не знаю объём красивостей, которые хочет автор. Уезжание в дымчатую перспективу там, натягивание на глобус. Потенциально всё это возможно, но за рамками базового WinAPI.
Здравствуйте, RussianFellow, Вы писали:
RF>То есть есть текст, сперва он отображается пустой строкой, затем появляется строка из одного символа-- . (символ точки), потом появляется строка из двух символов точки -- .. , после этого появляется строка из трёх символов точки -- ... , затем опять появляется пустая строка и т.д. RF>Как это реализовать?
Для плавного движения (без дергания) текстовый контрол (static) не годится.
Нужна правильная анимация.
Весь текст предварительно отрисовывается в bitmap.
Запускается таймер с коротким интервалом.
В WM_TIMER вычисляете интервал времени с начала анимации и текущее смещение строки.
Выводите тот bitmap на экран одним-двумя BitBlt().