孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息

VC++跑马灯滚动字幕实现技术指南 图形设备接口(Graphics Device Interface, GDI)是Windows操作系统用于设备独立性图形渲染的一个重要组成部分。而GDI+,作为GDI的后继者,在Windows平台上提供了更为丰富的图形处理能力,包括对文本渲染的改进与增强。GDI+通过抽象层把硬件细节与应用程序隔离,让程序员能够使用高级的图形功能而不必关心底层实现细节。在文本渲染方面,GDI+提供了一整套用于处理文本输出、字体管理、颜色管理以及文本布局的接口和工具。 阅读详情


滚动字母,修改输出字幕颜色,定时器

在onCreate中添加一个定时器,即SetTimer(1,100,NULL)
再在类CDrawView中添加消息WM_TIMER的响应函数OnTimer
每间隔100毫秒调用OnTime()
在OnTime()中用DrawText输出字符串,DrawText的输出矩形宽度每次按照5像素宽度增加,
随着矩形宽度增加,那么显示出来的字符串就逐步增加,效果看起来就是滚动输出.

dc.DrawText(cs,rect,DT_LEFT); 

//文本左对齐,就是字符串cs的左边的字符是对齐的,字符串右边的字符不断滚动出来,左边固定不动,字幕向右边扩展,逐步显示出字符串右边的字符.

dc.DrawText(cs,rect,DT_RIGHT); 
//文本右对齐,就是字符串cs的右边的字符是对齐的,整体字符是从左向右边整体移动,字符串左边的字符不断滚动出来,



GetTextMetrics:这是获得设备环境Device Context中当前的字体信息

GetTextExtent:这是获得显示在屏幕中的字符串的宽度和高度



1. DrawText用法:
CDC::DrawText   2个重载函数

即使字符串的宽度大于设定的矩形宽度,只输出矩形中的字符串,

virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );
int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );


2. SetTime用法:
CWnd::SetTimer
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );

Return Value
The timer identifier of the new timer if the function is successful. An application passes this value to the KillTimer member function to kill the timer. Nonzero if successful; otherwise 0.

Parameters

nIDEvent: Specifies a nonzero timer identifier.设定定时器ID,这个ID会作为返回值

nElapse: Specifies the time-out value, in milliseconds.间隔时间,毫秒
lpfnTimer:
     指定一个处理WM_TIME消息的回调函数的名称,用自己编写回调函数处理TIMER消息
     填NULL则是交给Cwnd处理WM_TIMER消息,CWnd对象会把消息放入到应用程序的消息列队中

Specifies the address of the application-supplied TimerProc callback function th

CDC::DrawTextCDC::DrawText 更多内容见: VC共享乐园vcshare.net 何丹的论坛hedanwang.cn/bbs/ 立即下载

相关推荐

在VC中用DrawText函数输出html内容

用DrawText函数显示html格式内容,可以实现字体高亮显示

VC++利用DrawText在窗体上输出文本

VC++在窗体上输出文本的实例,主要是利用DrawText方法来实现文字输出,为了更全面一些,实例中不但输出了英文字符,还输出了中文,如果您对DrawText的使用方法不熟悉,可下载本源码参考。 运行环境:Windows/Visual C/C++

VS2022+Qt6保姆级配置指南:从插件安装到项目互通全流程(附常见错误解决)

本文提供了一份详细的Visual Studio 2022与Qt6集成开发环境配置指南。从插件安装、环境搭建到项目创建与互通,涵盖了全流程操作步骤,并针对常见的配置错误和调试问题提供了实用的解决方案,帮助开发者高效构建企业级桌面应用。

nginx7reverse的博客 1204

VOF模型求解方法:从SIMPLEC到PISO的稳定性优化策略

本文深入探讨了VOF模型求解方法中SIMPLEC与PISO算法的稳定性优化策略,重点分析了两种算法在稳态和瞬态问题中的应用差异。通过对比PRESTO离散化方法与其他格式的优劣,提供了针对多相流模拟的实用设置建议和稳定性优化技巧,帮助工程师有效提升计算效率和精度。

yellow的专栏 1153

Minitab正交试验设计:从入门到精通的完整指南

本文提供了一份使用Minitab进行正交试验设计的完整指南。从正交试验省时省力的原理讲起,详细介绍了在Minitab中创建正交表、填入数据、执行分析(包括解读ANOVA和P值)以及寻找最优参数组合的全流程。文章旨在帮助读者,特别是工艺优化和研发人员,快速掌握这一高效工具,从而用最少的实验次数锁定关键影响因素,提升工作效率与成果。

weixin_29201313的博客 463

果蔬及菜品识别系统

果蔬及菜品识别系统

我的博客 2117

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8265

FortiGate-60E防火墙忘记密码?用Console线+TFTP重装固件v7.0.9全流程

本文详细介绍了当FortiGate-60E防火墙忘记密码且物理重置无效时,如何通过Console线连接并利用TFTP服务器重装固件(如v7.0.9)的全流程。从恢复原理、工具准备、网络配置到逐步执行命令,提供了完整的实战指南,帮助管理员彻底恢复设备出厂设置并重置密码。

snow3的博客 333

Centos 7 Linux 离线安装使用 MySQL 5.7:下载、安装、配置、使用

本文详细介绍了在 CentOS 7 系统下离线安装 MySQL 5.7 的完整流程,包括环境准备、安装包下载、用户与目录配置、数据库初始化、服务启动与自启设置、root 密码修改、远程访问开启及防火墙配置等关键步骤,并提供了本地与远程客户端(如 Navicat、DBeaver)的连接使用方法,适合无网络环境下的数据库部署参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 6112

【第13话:感知算法】库位与可行驶区域检测:自主泊车场景中的检测及语义分割方法

本文提出了一种自动泊车系统中的泊车库位线检测方法,通过逆透视映射(IPM)将车辆摄像头图像转换为鸟瞰视图,消除透视变形。该方法结合目标检测和语义分割模型,先定位库位线候选区域,再生成像素级精确掩码。后处理步骤将掩码转换为结构化输出,包括停车位边界多边形和可行驶区域掩码。整个流程采用深度学习模型和计算机视觉技术,可实现高精度的泊车环境感知,为自动泊车系统提供可靠支持。

一碗白开水一 1160

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 孙鑫VC++深入详解:Lesson5 Part3 文字输入: 处理回车键,空格键,CFont的使用
下一篇: 孙鑫VC++深入详解:Lesson6 Part1 -- CheckMenuItem,子菜单项上添加位图,禁用子菜单项,删除整个菜单,和加载菜单
sergery
博客等级 码龄18年 113粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值