100个vc小项目开发

合集下载

MICROSOFT VISUAL STUDIO入门经典教程

MICROSOFT VISUAL STUDIO入门经典教程

写在前面在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++2005入门经典》的书帮了我不少的忙。

因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。

现在有很多的朋友应该也有这些问题吧?学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。

记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。

接下来我会做一个《Visual C++2010入门教程》系列,用来帮助初学者。

刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。

内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。

由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。

注意,本教程非C++教程,不会教你C++,只会教你如何使用Visual C++2010去练习去学习其它C++教材上面的程序。

因此建议大家认真的去看其他的C++教程,在使用Visual C++2010实践的时候如果遇到问题可以到这里来参考。

推荐《C++Primer》、《C++程序设计语言》《Visual C++2008入门经典》。

第一章:关于Visual Studio、VC和C++的那些事首先,这三个东西有什么区别呢?VC和C++是相同的吗,有什么区别呢?我刚开始学C++的时候也有这样的问题,在这里我来替大家解释一下他们到底是什么。

2007年美国VC 100榜单

2007年美国VC 100榜单

2007年美国VC 100榜单如果你是一家正在寻求风险投资的初创公司,那么不妨看看这份榜单,其中有部分公司已进入中国。

“创业者无疑是2007年最大的赢家,连续4个季度都从投资人手中获得了超过70亿美元(每季度)的风险投资,这是2001年以来从未有过的盛景。

根据普华永道和美国风险投资衆-会向《Entrepreneur》杂志独家提供的分析报告:2007年,全美的风险投资家在3,813比投资交易中共投资294亿美元,创造了自2001年以来的市场最高点。

投资总额比2006年增加了10.8%,投资交易数量则增加了5%.种子期和早期的企业在2007年也获得了更多的投资,比2007年增长了21%,融资总额达到了63亿美元,平均每家公司获得了450万美元的投资。

同时第一次融资的企业数量也达到了6年来的新高,这是由于风险投资家增加了对很多领域的公司的首次投资,去年共投资1,267家公司,总额为72亿美元。

2007年的投资的增长主要归因于清洁技术和生命科学领域投资的上升,互联网垂直领域的投资也出现了强劲的增长。

在过去的几年里,活跃的并购市场和风险投资支持的企业IPO市场让投资者备受鼓舞,因此,2007年风险投资家乐意和新老创业企业分享胜利,这也是投资增长另外一个診-因。

不过,风险投资家们的口袋里还有很多钱,在2008年,你会发现,有着绝佳创意和坚实商业计划的创业者依然能获得他们的青睐。

文字版:“Maryland Technology Development Corp.位于:哥伦比亚(马里兰州)2007年早期投资数量:19家网站:德丰杰Draper Fisher Jurvetson位于:曼隆帕克(加利福尼亚硅谷地区中心城市)2007年早期投资数量:16家网站:德丰杰1999年进入中国,对种子公司、初创公司以及成熟、已綷-盈利的公司进行投资。

目前在北京、上海均设有办事处,其投资的空中网、分众传媒、百度、龙旗等企业已綷-上市,重点关注TMT、新媒体和其它新兴产业,如清洁能源、医疗等行业。

一文读懂什么是GP、LP、VC、PE、IB、FOF、TOT

一文读懂什么是GP、LP、VC、PE、IB、FOF、TOT

一文读懂什么是GP、LP、VC、PE、IB、FOF、TOT一、首先是GP,LP普通合伙人(General Partner,GP):大多数时候,GP,LP是同时存在的。

而且他们主要存在在一些需要大额度资金投资的公司里,比如私募基金(PE,Private Equity),对冲基金(Hedge Fund),风险投资(Venture Capital)这些公司。

你可以简单的理解为GP就是公司内部人员。

话句话说,GP是那些进行投资决策以及公司内部管理的人。

举个例子:现在投资公司A共有GP1,GP2,GP3,GP4四个普通合伙人,他们共同拥有投资公司A的100%股份。

因此投资公司A整体的盈利,分红亏损等都和他们直接相关。

如果还不明白的话,举个简单例子,在创新工场当中,李开复先生则是一个经典的普通合伙人了。

有限合伙人(Limited Partner,LP):我们可以简单的理解为出资人。

很多时候,一个项目需要投资上千万乃至数个亿的资金。

(大多数投资公司,旗下都会有很多个不同的项目)而投资公司的GP们并没有如此多的金钱——或者他们为了分摊风险,因此不愿意将那么多的公司资金投资在一个项目上面。

而这个世界上总有些人,他们有很多很多的现金,却没有好的投资方法——放在银行吃利息在金融界可是个纯粹的亏钱行为。

于是乎,LP就此诞生了。

LP会在经过一连串手续以后,把自己的钱交由GP去打理,而GP们则会将LP的钱拿去投资项目,从中获取利润,双方再对这个利润进行分成。

这是现实生活中经典的“你(LP)出钱,我(GP)出力”的情况。

为了让大家能有一个更全面的了解,我接下来会讲述一些关于LP在整个过程中所需要做的事情。

(由于我曾经在美国留学,大多数这方面的知识最早也是来自于美国学习,所以下面我会拿美国来和中国进行对比,让各位有个更全面地了解。

)在美国,绝大多数情况下,LP都有一个最低投资额度——这个数字一般是600万美金,中国的话我目前了解大多都是600万人民币。

可参考的100个较粗糙的题目

可参考的100个较粗糙的题目

1、WEB数据挖掘与知识发现系统开发2、利用概率算法的非线性方程组计算机仿真3、遗传算法在大规模0-1背包问题中的应用4、利用SQL Server2000的Analysis Service构建数据挖掘模型5、基于梯度的图像分割方法6、基于多媒体产品版权保护的数字水印技术的研究与应用7、基于电子商务信贷数据保护的数字水印系统设计8、小型语言编译器的设计与实现9、数字图像的腐蚀与膨胀算法10、适用于图像增强处理的滤波器的分析与设计11、基于Internet的数字水印技术的安全交易网络模型的设计与实现12、基于OpenGL的STL文件的显示、拼接和剖分13、基于XML的CAPP(Computer Aided Process Planning)工艺数据描述14、图像轮廓提取与跟踪算法的设计与实现15、基于模糊评价的管理数据库的知识挖掘16、文件加密解密算法的研究与实现(对当前文件加密解密算法进行分析研究,并实现其中一些算法,建议使用VC++语言)或者(文件的压缩+加密与解密+解压缩软件设计)17、缺陷跟踪系统(Defect Tracking System)18、图像点运算程序的开发19、企业网的安全策略分析20、TCP端口扫描程序设计(端口扫描技术的分析与实践)21、基于支撑向量机的模式分类22、图像几何变换的理论与实现23、ftp下一个缓冲区溢出漏洞的验证24、跨平台并行多线程下载工具的开发(基于Java)25、多媒体实时通信中同步和差错控制技术实现26、IP网络安全组播研究27、M3UA/M2UA协议消息解析工具的设计与实现28、基于Java跨平台图片浏览程序的开发29、并行计算机体系结构中面向性能的程序设计的分析与研究30、基于SPI和NDIS的网络防火墙的开发31、三维地形漫游系统32、Web搜索引擎分析与设计33、WWW服务器的攻击与防范34、数据挖掘技术的算法分析与实现35、电子邮件系统的安全问题研究36、E-mail的加解密实现37、反病毒引擎设计38、使用UDP协议通信的客户/服务器设计与实现39、USB接口驱动程序的实现40、Web路径聚类工具的设计与实现41、入侵检测中捕获程序的设计42、汽车牌照文字识别43、基于可靠性评价模型的软件可靠性评价44、MPLS基于约束路由的标签分发协议(CR-LDP)研究45、微粒群优化算法研究46、基于MP的图象稀疏分解47、集装箱箱号识别48、基于共享内存机制的进程间信息交换研究49、代理服务器原理与设计50、PFTS(物理帧时槽交换)VCI分发协议设计51、OPENSSL 的加密例程应用研究52、COM+组件分布式事务研究及应用53、网络数据帧监测与分析54、PFTS(物理帧时槽交换)转发环路监测与预防方法研究55、基于TCP/IP协议的数据传输程序设计56、Web文档聚类方法研究与实现57、Web挖掘技术研究58、蚁群算法及应用研究59、基于中间件的信息共享技术研究60、OSPF协议分析与应用61、MS SQL Server漏洞扫描器设计与实现62、SMTP协议漏洞扫描器的设计与实现63、基于EXCEL格式文件的电子水印算法设计及实现64、基于PDF格式文件的电子水印算法设计及实现65、基于WORD格式文件的电子水印算法设计及实现66、PC防火墙系统研究与实现67、IPV4向IPV6过渡技术研究68、路由协议研究69、Windows进程信息提取及监测软件的设计与实现70、城市交通径路选择算法及其实现71、Linux内存管理方法研究72、socket通信程序的设计73、WEB网页挖掘及其应用74、SQL Server并发控制策略及应用75、嵌入式SQL语言及其应用76、多媒体数字水印认证系统77、面向对象软件测试技术研究78、几种多边形填充算法的性能分析和比较79、一个小型编译器的移植80、文件加密器的设计和实现81、分布式仿真软件进程调度算法研究82、基于NDIS的防火墙系统研究与实现83、Windows网络报文截获机制的研究及其应用84、SMTP和POP3协议研究与客户端实现85、负关联规则算法研究与实现86、计算机端口扫描器的设计与实现87、企业网络安全整体解决方案88、802.16d/e MAC协议分析与仿真89、数据库脚本编辑器软件设计90、卷积码码字特性的计算机搜索算法实现91、表达式智能计算器设计92、VC++构建通用图像处理软件平台93、哈夫曼编码/译码演示系统设计94、贪心法+改进遗传算法求解TSP95、模式贪心法+改进遗传算法求解TSP96、量子遗传算法的改进及其在求解背包问题中的应用97、数据压缩解压程序设计98、神经网络边缘检测99、AES加密标准及其安全性研究100、多文件下载的Java Bean组件开发。

VC知识库5周年精华珍藏版

VC知识库5周年精华珍藏版

《VC知识库5周年精华珍藏版》/read.php?tid=592&u=83C语言经典算法100例(强烈推荐)/read.php?tid=1334&u=83《C++程序调试实用手册》(DeBUGGING C++)/read.php?tid=587&u=83【0614】【孙鑫老师】【VC++深入详解视频及电子书】【flash版】【全20集】【大小:共786MB】/read.php?tid=2522&u=83《Visual C++灵感编程教学光盘》/read.php?tid=588&u=83《Visual C+++SQL Server数据库开发与实例》【中文】【CSDN-算法精华(收集)】【(CHM)(394.7KB)】/read.php?tid=2424&u=83算法ebook(10部算法经典著作的合集)/read.php?tid=339&u=83《C++程序调试实用手册》(DeBUGGING C++)/read.php?tid=1127&u=83《边用边学C语言视频教程》完全按照高等教育自学考试C语言教材授课/read.php?tid=586&u=83《C语言速成3.0视频教程》V3.0[ISO]/read.php?tid=590&u=83《VC++深入详解》视频教学DVD光盘/read.php?tid=1119&u=83【0610】【数据结构-清华严蔚敏老师】【C语言版视频教程】【全52讲完整版】/read.php?tid=630&u=83【0611】【青岛软件实训】【C++培训资料】【全】【F】/read.php?tid=2248&u=83【0620】【清华大学】【面向对象程序设计C++】【王萍】【F】/read.php?tid=2963&u=83【0610】【xx机构】【c语言速成】【全】/read.php?tid=223&u=83【0610】【MSDN】【李建忠C++视频】【全】/read.php?tid=733&u=83《C++高级参考手册正确版》/read.php?tid=585&u=83循环递归算法设计/read.php?tid=2646&fpage=2&u=83《设计模式》中文版/read.php?tid=278&u=83【中文】【算法设计与实验题解】【王晓东】【(PDF)(8.24MB)】/read.php?tid=2427&u=83C语言经典算法100例(强烈推荐)/read.php?tid=1334&u=83算法导论(第二版)现代计算机常用数据结构和算法/read.php?tid=342&u=83数据结构与算法分析学习笔记/read.php?tid=2652&u=83【中文】【CSDN-算法精华(收集)】【(CHM)(394.7KB)】/read.php?tid=2424&u=83算法ebook(10部算法经典著作的合集)/read.php?tid=339&u=83《C++程序调试实用手册》(DeBUGGING C++)/read.php?tid=587&u=83数据结构与算法综合资料库/read.php?tid=2650&u=83《C++语言的设计和演化》/read.php?tid=589&fpage=2&u=83 【中文】【面向对象分析与设计(UML.2.0版)】/read.php?tid=290&fpage=2&u=83算法策略/read.php?tid=2648&fpage=2&u=83算法设计与分析/read.php?tid=2647&fpage=2&u=83 H.S联盟VIP东西[黑客特训班]/read.php?tid=216&u=83oracle10g快捷版使用视频/read.php?tid=996&u=83[0630][Java私塾][Spring2.0培训教程(待续)][F]/read.php?tid=3646&u=83黎活明(中国第一本EJB书籍的作者)讲的一个实战项目(巴巴运动网的实现)采用EJB技术等实现,整套项目价值8万/thread.php?fid=247&u=83《J2EE 课程视频教程》赛迪网校罗泽彬老师主讲/read.php?tid=886&u=83《张孝祥JA V A视频教程》完整版[RMVB]/read.php?tid=422&u=83尚学堂148班高清晰版本Hibernate(王勇主讲)---共40集/read.php?tid=1338&u=83新东方J2ee系列/read.php?tid=531&u=83树人J2EE高级框架实战教学(视频教程)郭克华/read.php?tid=620&u=83MLDN J2EE 开发视频(共54讲)/read.php?tid=443&u=83北大青鸟 视频(主讲:于海涛)共32 讲达内anyfo--EJB视频第一集发布!!/read.php?tid=1329&u=83郭克华J2ME/read.php?tid=241&u=83H.S联盟VIP东西[黑客特训班]/read.php?tid=216&u=83oracle10g快捷版使用视频/read.php?tid=996&u=83[0617][XX网校网络教育][JSP课程][全][F]/read.php?tid=2780&u=83《精通CSS,DIV+CSS 别具风格》数码照片版超清晰/read.php?tid=1360&u=83JSP+JA V Abean写的一个很好的新闻发布系统/read.php?tid=180&u=83仿淘宝网站SQL版本---------正版哦,大家来下啊!狂顶/read.php?tid=257&u=83【独家】【传智播客】【AJAX内部精品视频】/read.php?tid=2338&u=83软考精品内部资料----来自一流的培训机构/read.php?tid=270&u=83《赛迪网络工程师考试视频教程》[RMVB]/read.php?tid=269&u=83《赛迪网校-软件设计师》/read.php?tid=1125&u=83《补发MCSE2000微软系统专家认证考试全套视频教程》(mcse2000)mcse200[ISO] /read.php?tid=267&u=83全国计算机等级考试上机模拟系统/read.php?tid=629&fpage=2&u=83《全国专业技术人员计算机应用能力考试模拟考试系统》1~3版/read.php?tid=263&fpage=2&u=83《CISCO教程》(CBTNUGGETS CISCO CCVP Exam Pack )(更新)[Bin]/read.php?tid=399&u=83软考联盟--解压后虚拟光驱放啊/read.php?tid=291&u=83CIU软考联盟--软件设计师视频教程下载/read.php?tid=1971&u=83【0710】【赛迪】【2008网络管理员培训课程][网络基础专题班]】【全套】【F】/read.php?tid=2161&u=83强烈推荐台湾中原大学的php教程。

vb游戏编程

vb游戏编程
Const BT = 3000 '跑道底部的y坐标
Dim l1(22) As Integer '每层跑道左边有几个方块
Dim l2(22) As Integer '每层跑道右边有几个方块
Dim cx As Single '赛车的在x轴的位置
Private Sub Command1_Click()
a[1]=b[temp1];
b[temp1]=b[temp[2];
b[temp2]=a[1];
}
//输出
ListBox1->Clear();
for(i=1;i<=27;i++)
ListBox1->Items->Add(IntToStr(b[i]));
如上例所示,经过打乱,b[27]数组将不再是旧时容颜。
Select Case KeyAscii
Case Asc("a"), Asc("A")
cx = cx - D
Case Asc("s"), Asc("S")
cx = cx + D
End Select
End Sub
Private Sub Timer1_Timer()
知道了玩法,下面我将介绍程序是如何实现的:
一、猜测的奥妙——推算原理
猜测的原理其实也不复杂,我们来模拟一下猜测的过程大家就清楚了。程序初始化时是把1~27将随机打乱分别放入PageControl控件的三个选项卡中,每个选项卡放9张图片。点击一次按钮后其实不是盲目地将顺序打乱,而是进行了筛选,把有用的图片(就是点选的那组的9张图片)筛选出来平均分配到PageControl控件的三个选项卡中,再把不需要的图片集中起来平均分配到PageControl控件的三个选项卡中,最后在各个选项卡中把有用的、无用的图片随机打乱再次重新排列显示出来,从而完成猜测。用表1来说明:

软件项目管理题目-大全

软件项目管理题目-大全

每一类四班1-20,五班21-40,六班41-75目录ASP类论文题目 (2)第1-100个题目 (2)第101-200个题目............................................................................................. 错误!未定义书签。

第201-300个题目............................................................................................. 错误!未定义书签。

第301-400个题目............................................................................................. 错误!未定义书签。

类论文题目 .. (11)第1-50个题目 (11)第51-100个题目 (12)第101-150个题目 (13)DELPHI类论文题目 (14)第1-50个题目 (14)第51-100个题目 (15)JAVA类论文题目 (16)第1-51个题目 (16)JSP类论文题目 (17)第1-50个题目 (17)第50-100个题目 (18)第101-150个题目 (19)PB类论文题目 (20)PHP类论文题目 (20)VB类论文题目 (21)第1-100个题目 (21)第101-200个题目 (23)第201-300个题目 (25)类论文题目 (28)VC类论文题目 (29)第1-50个题目 (29)第51-100个题目 (30)VF类论文题目...................................................................................................... 错误!未定义书签。

VC++实验指导书

VC++实验指导书

Visual C++程序设计实验指导书实验1 认识Visual C++6.05中文版开发环境实验内容(1)熟悉VisualC++6。

05的开发环境。

(2)操作工具栏和项目工作区窗口。

(3)用应用程序向导创建一个控制台应用项目Ex_Hello。

(4)输入并执行一个新的C++程序Ex_Simple.实验准备和说明(1)建议在本教材第一次上课时进行本次实验。

(2)熟悉Windows 2000或XP操作系统的环境和基本操作。

(3)熟悉实验报告的书写格式,这里给出一下建议:实验报告采用A4纸,封面一般包括实验目次.实验题目,班级,姓名,日前和机构名称.报告内容一般包括实验目的和要求。

实验步骤,实验思考和总结。

需要指出的是,实验步骤不是书本内容的重复,而是自己结合实验内容进行探索的过程,教师也可根据具体情况提出新的实验报告格式和新的要求.(4)阅读以下关于VisualC++的说明:Visual C++是Microsoft公司推出的目前使用极为广泛的基于WINDOUWS平台的可视化编程环境。

是在以往的版本不断更新的基础上形成的,其功能强大,灵活性好,完全可以扩展以及具有强有力的Internet支持,在各种c++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。

Visual C++6。

0分为标准版,企业版和专业版3种,但其基本功能是相同。

Visual C++6。

5中文版是在Visual C++6。

0基础上进行汉化的以一个版本,本书以此版本作为编程环境。

为统一起见,我们仍称之为Visual C++6.0。

实验步骤1。

打开计算机,启动windouws2000操作系统2。

建工作文件夹3。

启动Visual C++6.04。

创建一个控制台应用项目5。

认识开发环境界面6。

认识工具栏7。

工具栏的显示和隐藏8.工具栏的浮动与停泊9。

项目工作区窗口10。

修改代码,编译运行11。

输入一个新的C++程序12。

修正语法错误13.退出Visual C++6。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

100个vc小项目开发:二、一步一点设计音乐播放器[源码解读]文章作者:July软件来源:开源==================1.有不正之处,恳请指正。

2.本文贴出的是关键实现代码部分,只做粗略展示。

3.转载,请注明出处。

谢谢。

---------一、先画对话框,IDD_MYPLAYER_DIALOG,界面如图:二、然后,对话框相关处理完成后,在CMyPlayerApp里头,编写如下代码:设置几个全局变量:CMyPlayerApp theApp;CStringArray m_strPlayListArray;int m_nPlayOrder[2000];int m_nNowPlaying;UINT m_nPlayMode;HWND hAudio;FILELIST fileList[10];int nCurrentList;CString strCurrentDir;而后,编写InitInstance()的代码:BOOL CMyPlayerApp::InitInstance(){AfxEnableControlContainer();m_hMutex=CreateMutex(NULL,FALSE,"星空物语");if (GetLastError()==ERROR_ALREADY_EXISTS ){HWND hwnd=FindWindow(NULL,"星空物语");if(hwnd!=NULL);{if(IsWindowVisible(hwnd))return FALSE;SendMessage(hwnd,MYWM_NOTIFYICON,NULL,(LPARAM)WM_LBUTTONDOWN); }return FALSE ;}hAudio=NULL;TCHAR szCurDir[MAX_PATH];GetCurrentDirectory(MAX_PATH,szCurDir);strCurrentDir=szCurDir;m_nPlayMode=MODE_RAND;CMyPlayerDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse == IDOK){}else if (nResponse == IDCANCEL){}return FALSE;}三、// MyPlayerDlg.h : header file 头文件里头:class CMyPlayerDlg : public CDialog{// Constructionpublic:CString m_strLyricPath;void DeleteNotifyIcon();void CreateNotifyIcon();BOOL fPlay;void DestroyMenuDlg();CMenuDlg* m_pMenuDlg;int m_nVolume;void WriteConfig();BOOL ReadConfig();BOOL IsFileExist(CString strFileName);BOOL GetFileList(CString strLine,int nIndex); void InitFileList();int nRollTextCounter;void CirculatePlay();void DropFilesInPlayList(HDROP hDrop);void DropFilesInMain(HDROP hDrop);BOOL IsSupportFile(CString strFileName);void GetDropFiles(HDROP hDrop);void FormatTitle(CString strFile);BOOL fPlaying;UINT m_nTime;void Play(int nIndex);CString GetFileTitle(CString strFileName); BOOL IsLyricDlgAttach();BOOL IsPlayListAttach();void MoveLyricWindow();void MovePlayListWindow();BOOL fInited;void CreateLyric();CLyricDlg* m_pLyricDlg;void CreatePlayList();CPlayListDlg* m_pPlayListDlg;void InitSize();void ExitPlayer();void MoveSlide();void InitText();void CountTime();CString strTime;void InitRect();CRect rectTitle;CRect rectTime;void DrawTime(CDC*pDC);void RollText();CString strOutText;CString strTitle;void DrawText(CDC*pDC);void DrawMainPicture(CDC*pDC);void InitButtons();CMyPlayerDlg(CWnd* pParent = NULL);// standard constructor// Dialog Data//{{AFX_DATA(CMyPlayerDlg)enum { IDD = IDD_MYPLAYER_DIALOG };CSkinButtonm_btnShowMenu;CSkinButtonm_btnLyric;CVolumeButtonm_volume;CSlideButtonm_slide;CTransparentStaticm_stcMode;CTransparentStaticm_stcPlay;CSkinButtonm_btnStop;CSkinButtonm_btnPrev;CSkinButtonm_btnPLShow;CSkinButtonm_btnPlay;CSkinButtonm_btnOpen;CSkinButtonm_btnNext;CSkinButtonm_btnMin;CSkinButtonm_btnHide;CSkinButtonm_btnExit;CButtonm_buttonOK;//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMyPlayerDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); //}}AFX_VIRTUAL// Implementationprotected:HICON m_hIcon;// Generated message map functions//{{AFX_MSG(CMyPlayerDlg)virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnBtnExit();afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnStaticMode();afx_msg void OnStaticPlay();afx_msg void OnBtnVolume();afx_msg void OnBtnSlide();virtual void OnCancel();virtual void OnOK();afx_msg void OnBtnPlaylistShow();afx_msg void OnMove(int x, int y);afx_msg void OnBtnLyric();afx_msg void OnBtnOpen();afx_msg void OnBtnNext();afx_msg void OnBtnPlay();afx_msg void OnBtnPrev();afx_msg void OnBtnStop();afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnBtnShowmenu();afx_msg void OnKillFocus(CWnd* pNewWnd);afx_msg void OnMenuNext();afx_msg void OnMenuOpen();afx_msg void OnMenuPlay();afx_msg void OnMenuPrev();afx_msg void OnMenuRand();afx_msg void OnMenuSeq();afx_msg void OnMenuSingle();afx_msg void OnMenuStop();afx_msg void OnMenuVoldown();afx_msg void OnMenuPause();afx_msg void OnMenuVolslc();afx_msg void OnMenuVolup();afx_msg void OnAboutStar();afx_msg void OnNotifyIcon(WPARAM wParam,LPARAM lParam); afx_msg void OnBtnHide();afx_msg void OnBtnMin();afx_msg void OnSetLyricpath();afx_msg void OnMenuOpenLyricpath();//}}AFX_MSGDECLARE_MESSAGE_MAP()};四、对应的// MyPlayerDlg.cpp : implementation file 实现文件里头:void CMyPlayerDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyPlayerDlg)DDX_Control(pDX, IDC_BTN_SHOWMENU, m_btnShowMenu);DDX_Control(pDX, IDC_BTN_LYRIC, m_btnLyric);DDX_Control(pDX, IDC_BTN_VOLUME, m_volume);DDX_Control(pDX, IDC_BTN_SLIDE, m_slide);DDX_Control(pDX, IDC_STATIC_MODE, m_stcMode);DDX_Control(pDX, IDC_STATIC_PLAY, m_stcPlay);DDX_Control(pDX, IDC_BTN_STOP, m_btnStop);DDX_Control(pDX, IDC_BTN_PREV, m_btnPrev);DDX_Control(pDX, IDC_BTN_PLAYLIST_SHOW, m_btnPLShow);DDX_Control(pDX, IDC_BTN_PLAY, m_btnPlay);DDX_Control(pDX, IDC_BTN_OPEN, m_btnOpen);DDX_Control(pDX, IDC_BTN_NEXT, m_btnNext);DDX_Control(pDX, IDC_BTN_MIN, m_btnMin);DDX_Control(pDX, IDC_BTN_HIDE, m_btnHide);DDX_Control(pDX, IDC_BTN_EXIT, m_btnExit);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyPlayerDlg, CDialog)//{{AFX_MSG_MAP(CMyPlayerDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_LBUTTONDOWN()ON_BN_CLICKED(IDC_BTN_EXIT, OnBtnExit)ON_WM_CREATE()ON_WM_TIMER()ON_BN_CLICKED(IDC_STATIC_MODE, OnStaticMode)ON_BN_CLICKED(IDC_STATIC_PLAY, OnStaticPlay)ON_BN_CLICKED(IDC_BTN_VOLUME, OnBtnVolume)ON_BN_CLICKED(IDC_BTN_SLIDE, OnBtnSlide)ON_BN_CLICKED(IDC_BTN_PLAYLIST_SHOW, OnBtnPlaylistShow)ON_WM_MOVE()ON_BN_CLICKED(IDC_BTN_LYRIC, OnBtnLyric)ON_BN_CLICKED(IDC_BTN_OPEN, OnBtnOpen)ON_BN_CLICKED(IDC_BTN_NEXT, OnBtnNext)ON_BN_CLICKED(IDC_BTN_PLAY, OnBtnPlay)ON_BN_CLICKED(IDC_BTN_PREV, OnBtnPrev)ON_BN_CLICKED(IDC_BTN_STOP, OnBtnStop)ON_WM_RBUTTONDOWN()ON_BN_CLICKED(IDC_BTN_SHOWMENU, OnBtnShowmenu)ON_WM_KILLFOCUS()ON_COMMAND(IDC_MENU_NEXT, OnMenuNext)ON_COMMAND(IDC_MENU_OPEN, OnMenuOpen)ON_COMMAND(IDC_MENU_PLAY, OnMenuPlay)ON_COMMAND(IDC_MENU_PREV, OnMenuPrev)ON_COMMAND(IDC_MENU_RAND, OnMenuRand)ON_COMMAND(IDC_MENU_SEQ, OnMenuSeq)ON_COMMAND(IDC_MENU_SINGLE, OnMenuSingle)ON_COMMAND(IDC_MENU_STOP, OnMenuStop)ON_COMMAND(IDC_MENU_VOLDOWN, OnMenuVoldown)ON_COMMAND(IDC_MENU_PAUSE, OnMenuPause)ON_COMMAND(IDC_MENU_VOLSLC, OnMenuVolslc)ON_COMMAND(IDC_MENU_VOLUP, OnMenuVolup)ON_COMMAND(IDC_ABOUT_STAR, OnAboutStar)ON_MESSAGE(MYWM_NOTIFYICON,OnNotifyIcon)ON_BN_CLICKED(IDC_BTN_HIDE, OnBtnHide)ON_BN_CLICKED(IDC_BTN_MIN, OnBtnMin)ON_COMMAND(IDC_SET_LYRICPATH, OnSetLyricpath)ON_COMMAND(IDC_MENU_OPEN_LYRICPATH, OnMenuOpenLyricpath)//}}AFX_MSG_MAPEND_MESSAGE_MAP()五、以下是MyPlayerDlg对话框的初始化代码:BOOL CMyPlayerDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);// Set big iconSetIcon(m_hIcon, FALSE);// Set small icon// TODO: Add extra initialization hereInitButtons();InitRect();InitText();InitSize();CreateLyric();CreatePlayList();m_pMenuDlg=NULL;InitFileList();strTitle=" 星空物语 ";strTime="00:00";m_nTime=0;fInited=TRUE;fPlaying=FALSE;fPlay=TRUE;nRollTextCounter=0;SetWindowText("星空物语");m_strLyricPath="";if(ReadConfig()){m_pPlayListDlg->OpenList(nCurrentList);m_volume.SetPos(m_nVolume);if(m_nPlayMode==MODE_SEQ)OnStaticMode();if(m_nPlayMode==MODE_SINGLE){OnStaticMode();OnStaticMode();}}else{m_nPlayMode=MODE_RAND;nCurrentList=0;m_pPlayListDlg->OpenList(nCurrentList);m_nVolume=8;m_volume.SetPos(m_nVolume);}CreateNotifyIcon();SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);m_pLyricDlg->SetPlayListWnd(m_pPlayListDlg);return TRUE; // return TRUE unless you set the focus to a control }//字幕的画法void CMyPlayerDlg::DrawText(CDC *pDC){pDC->SetBkMode(TRANSPARENT);CFont font,*pOldFont;LOGFONT logFont;pDC->GetCurrentFont()->GetLogFont(&logFont);logFont.lfCharSet=134;logFont.lfWidth=6;logFont.lfWeight=10;lstrcpy(logFont.lfFaceName,"华文彩云");font.CreateFontIndirect(&logFont);pOldFont=pDC->SelectObject(&font);pDC->SetTextColor(RGB(255,255,0));pDC->TextOut(21,48,"Love You Forever");font.DeleteObject();logFont.lfWidth=6;logFont.lfHeight=12;logFont.lfWeight=0;lstrcpy(logFont.lfFaceName,"宋体");font.CreateFontIndirect(&logFont);pDC->SelectObject(&font);pDC->SetTextColor(RGB(0,255,0));pDC->TextOut(22,35,strOutText);pDC->TextOut(22,66,"状态:");pDC->TextOut(75,90,"☆For My Lover☆");pDC->SetTextColor(RGB(0,150,0));pDC->TextOut(60,103,"★星空物语MADE BY July★");font.DeleteObject();pDC->SelectObject(pOldFont);}六、计时器部分,OnTimer、RollText、CountTime、MoveSlide等4个函数:int CMyPlayerDlg::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CDialog::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code hereSetTimer(1,1000,NULL);fInited=FALSE;DragAcceptFiles(TRUE);return 0;}void CMyPlayerDlg::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call default RollText();if(fPlaying){CountTime();MoveSlide();CirculatePlay();}CDialog::OnTimer(nIDEvent);}void CMyPlayerDlg::RollText(){TCHAR ch;strOutText="";for(UINT i=0;i<16;){ch=strTitle.GetAt(nRollTextCounter+i);strOutText+=ch;i++;}nRollTextCounter+=2;if(nRollTextCounter>=strTitle.GetLength()-16)nRollTextCounter=0;InvalidateRect(&rectTitle,TRUE);}//计时void CMyPlayerDlg::CountTime(){m_nTime=MCIWndGetPosition(hAudio)/MCIWndGetSpeed(hAudio); int nMinute=m_nTime/60;int nSecond=m_nTime%60;if(nMinute<10){if(nSecond<10)strTime.Format("0%d:0%d",nMinute,nSecond);elsestrTime.Format("0%d:%d",nMinute,nSecond);}else{if(nSecond<10)strTime.Format("%d:0%d",nMinute,nSecond);elsestrTime.Format("%d:%d",nMinute,nSecond);}InvalidateRect(&rectTime,TRUE);}//滚动条设置void CMyPlayerDlg::MoveSlide(){if(hAudio!=NULL)m_slide.SetSlidePos(MCIWndGetPosition(hAudio));}七、关键的播放代码,Playvoid CMyPlayerDlg::Play(int nIndex){if(nIndex>=m_strPlayListArray.GetSize())return;CString strFileName=m_strPlayListArray.GetAt(nIndex);if(!IsFileExist(strFileName)){m_pPlayListDlg->m_playlist.DeleteString(nIndex);m_strPlayListArray.RemoveAt(nIndex,1);return;}if(hAudio!=NULL){MCIWndDestroy(hAudio);hAudio=NULL;}try{hAudio=MCIWndCreate(GetSafeHwnd(),AfxGetInstanceHandle(), WS_CHILD|MCIWNDF_NOMENU,strFileName);}catch(...){if(nIndex>=0){m_pPlayListDlg->m_playlist.DeleteString(nIndex);m_strPlayListArray.RemoveAt(nIndex,1);}return;}if(hAudio!=NULL){MCIWndPlay(hAudio);if(!m_strLyricPath.IsEmpty()){if(!m_pLyricDlg->OpenLyric(m_strLyricPath,nIndex))m_pLyricDlg->OpenLyric(nIndex);}elsem_pLyricDlg->OpenLyric(nIndex);strTitle=GetFileTitle(strFileName);FormatTitle(strTitle);nRollTextCounter=0;m_nTime=0;fPlaying=TRUE;m_slide.SetRange(0,MCIWndGetLength(hAudio));m_slide.SetSlidePos(0);m_pPlayListDlg->m_playlist.SetCurSel(nIndex);int nSetVol=63*m_nVolume;if(nSetVol>1000)nSetVol=1000;MCIWndSetVolume(hAudio,nSetVol);}}void CMyPlayerDlg::OnBtnPlay(){// TODO: Add your control notification handler code here int n=m_pPlayListDlg->m_playlist.GetCurSel();if(n<0){if(m_strPlayListArray.GetSize()>0){Play(m_nPlayOrder[0]);m_nNowPlaying=0;}return;}Play(n);if(m_nPlayMode==MODE_RAND){for(int i=0;i<m_strPlayListArray.GetSize();i++){if(m_nPlayOrder[i]==n){m_nNowPlaying=i;break;}}}else{m_nNowPlaying=n;}}八、打开文件void CMyPlayerDlg::OnBtnOpen(){// TODO: Add your control notification handler code here CString strFilter="所有支持文件(*.mp3,*.wav,*.wma)|*.mp3;*.wav;*.wma||";CFileDialog fdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,strFilter); if(fdlg.DoModal()==IDOK){CString strFileName=fdlg.GetPathName();m_strPlayListArray.RemoveAll();m_strPlayListArray.Add(strFileName);CString strList,strFile;strFile=GetFileTitle(strFileName);strList.Format("01 %s",strFile);m_pPlayListDlg->m_playlist.ResetContent();m_pPlayListDlg->m_playlist.AddString(strList);Play(0);}}九、获取文件名CString CMyPlayerDlg::GetFileTitle(CString strFileName) {CString str;int nPos=-1;int nOldPos=-1;while((nPos=strFileName.Find("\\",nPos+1))>0)nOldPos=nPos;str=strFileName.Right(strFileName.GetLength()-nOldPos-1); strFileName=str.Left(str.GetLength()-4);return strFileName;}十、停止播放void CMyPlayerDlg::OnBtnStop(){// TODO: Add your control notification handler code here if(hAudio!=NULL){MCIWndStop(hAudio);m_nTime=0;fPlaying=FALSE;strTime="00:00";m_slide.SetSlidePos(0);InvalidateRect(&rectTime,TRUE);}}。

相关文档
最新文档