2024年3月19日发(作者:)
维普资讯
2006年6月 电 脑 学 习 第3期
VC 6.0开发制作二则
李志伟 任树海” 陈桦”’
摘 要 阐述了在VC6.0的开发环境下。制作彩色的弹出式菜单及桌面右下角托盘图标的方法。
关键词 VC6.0 弹出式菜单(Pop_Menu) 构造函数 视图 托盘
中图分类号TP312VC 文献标识码 B 文章编号:1002-2422(2006)03-0056-02
Discussion of Two Exploration Examples in VC6.0
Li Zhiwei Ren Shuhai Chen Hua
Abstract The paper mainly de8cribes how to make color Pop
_
Menu and the tray on the right comer of the desktop under
hte developing environment of VC6.0.
Keyword VC6.0 Pop
_
Menu Construct Function ListView Tray
别具一格的程序外观足以影响用户的选择。拥有友好 的予类,并且拥有自绘能力。它可向你提供以下功能:
而富于个性的用户界面的软件往往具有更强的功能。本文 设置字体颜色。
详细地介绍了用VC设计制作彩色弹出菜单及桌面右下角
设置高亮度颜色。
托盘图标的方法。
设置高亮度时的风格。
1彩色弹出菜单的制作方法
设置选中时和在普通状态1-的菜单显示的图标。
设置显示图标大小。
菜单是用户界面中常用的控件之一,普通的菜单往往
在CCustomMenu中定义了结构MENUDATA,你必须根
不能满足用户的需求,制作彩色的菜单对程序员非常有用。
据你的需要填充该结构,并且在增加菜单时提供该结构的
1.1彩色弹出菜单关键代码实现
指针(调用AppendMenu,InsertMenu)。下面是一个例予,在
这里提供一个C++类(CCustomMenu),该类是CMenu
音乐的导入是Flash中制作MTv的焦点,而词曲同步 显示的播放整首歌曲时间值4:18秒,即播放整首曲子所需
更是焦点中的难点。许多制作者往往采用较死板的办法: 时间为258秒。根据公式 :帧数=12.0 秒数,整首歌的帧
听、校对、再听、再校对。在听的时候,记下每句歌词开始和 数为3096(12.0*258=3096)。同样可计算出第一句歌词起
结束时的帧数,这样既耗费大量时间又不准确。笔者在制作
始帧为276(12.0*23=276),第二句歌词起始帧为336(12.
初期也是这样,经过一段时间的摸索,找到了一种科学的办
0*28=336),以此类推得出每句歌词的起始帧数。时间轴上
法,现简述如下:
显示的是:276、12.Ofps、22.9秒其中的22.9秒与公式中
3.1确定每句歌词的起始时间
的23秒只差0.1秒,误差0.1秒在欣赏MTV时完全不会受
借助歌词编辑软件LyricsMate Lyrics Editor和MP3播 影响。可见这种实现词曲同步的方法是一种科学的方法。
放软件WINAMP(网上都可下载到),以歌曲《水木年华》
4结束语
为例。打开LyricsMate Lyrics Editor界面并把歌词输入白色
区域,每句一行。 由于LyricsMate软件是配合WINAMP
基于FLASH成功制作MTV,音乐的导入是前提,词曲
的,因此要同时启动WINAMP,找到歌曲并播放。把光标放
同步是制作MTV的难点。这两项关键技术解决后,加上创
到歌词的句前,在此句歌词播放出现的时候,选择 标签 的
作者制作和编排动画的专业水平,一部好的MTV作品就可
添加时间标签 (或按快捷键F5)。这样LyricsMate软件
以完美实现。
就会在每句歌词前添上该句的播出时间(以秒数显示),你
参考文献
添一句后,光标自动条到下一行,方便、准确且容易操作。
[1]“佚名”.Flash动漫大师[M].北京:人民交通出版
3.2确定FLASH中每句歌词的起始帧
社,2005.
确定了每句歌词的播放时间后,就很容易计算出在
[2]“佚名”.、FLASH MX教程[M].北京:中国铁道出版
Flash时间轴上每句歌词对应的时间帧数。根据WINAMP所
社,2003.
}李志伟北京市经济管理干部学院信息系讲师(100102),研究方向:计算机应用 收稿日期:2006-02-24
}・任树海黑龙江省齐齐哈尔市江岸造纸厂助理工程师(160010),研究方向:计算机应用
・・・陈桦哈尔滨环保制氧设备工业公司助理工程师(150000),研究方向:计算机应用
・ 56 ・
维普资讯
CMylistView中点击鼠标右键弹出彩色的菜单,CMylistVi—
ew是ClistViewEx类的子类。
1、在CMylistView的头文件中定义:
CCustomMenu pCustomMenu
MENUDATA menuData[4];
2、在CMylistView的构造函数中添加如F代码:
∥调用CreateMenu()设置弹出菜单有关参数:
m
_
eustomlNMenu.CreatePopupMenu():
m
_
custondNMenu.SetleonSize(25.25):
m eustomINMenu.setHi gI1tstyle(Norma1):
m_customINMenu.SetTextColor(RGB(o’O,O));
m_eustomlNMenu.SetBackColor(RGB(143,167,20口)):
m
_
customlNMenu.SetHighlightColor(RGB(O,0。127));
暴加弹出菜单的功能项
latrepy(men ̄NData[o3.menuText, 添加 );
menulNData[o3.menuleonNormal=ID ADD.
_
[N
m custondNMenu.AppendMenu(MF OWNERDRAW,3,(LPCTSTR)
men ̄NDma[o3.menuText):
lstrcpy(menuINData[1].menuText, 修改 );
menuINData[1].menulconNormal=ID MODIFY_IN:
m_customlNMenu.AppendMenu(MF_OWNERDRAW,3。(LPCT-
STR)menuINData[I].menuText);
Istrcpy(menuINData[23.menuText. 删除 );
men ̄NData[2].menulconNormal=[D DELONE
IN:
_
enu(MF_OWNERDRAW,3,(LPCT-
STR)menuINData[2].menuText):
Istrcpy(menuINData[3].menuText, 删除全部 ):
menuINData[3].menulconNormal=ID—DEI。AIL IN;
(MF_OWNERDRAW,3。(LPCT-
s1R)menulNData[3].menuText);
3、在CMyfistView类右键消息响应函数中加如下代码:
CPoint point;
GetCursorPos(&point);
点击鼠标右键弹出彩色的菜单
m
_
customlNMenu.TrackPopupMenu(
TPM LEkTBU'Iq'ON,
point.x,
point.Y,
pFrame,
NULL);
2托盘的制作方法
Windows95,9 ̄000中,任务栏的右边(托盘)常驻几
个图标,如输入法切换图标、音量控制图标等,此外我们还
经常遇到拥有托盘图标的软件,如金山词霸、有实时监测功
能的杀毒软件等。这些软件在后台运行,通常不占用太多的
屏幕资源,只在通知栏上放一个小小的标志。必要时我们可
以通过用鼠标点击图标对其进行菜单操作或激活其主窗
口。有时我们自己编写的程序也希望有类似的效果。
2.1 NOTIFYICONDATA结构
N佣F、rIcONDATA结构包含了系统用来处理托盘图
标的信息,它包括选择的图标、回调消息、提示消息、图标对
应的窗口等内容。其定义为:
typedef struct
—
NOTIFYICONDATA(
DWORD dwsize;∥以字节为单位的这个结构的大小
UINT ulD://7 ̄用程序定义的该图标的lD号
UINT uFlags;∥设置该图标的属性
HWND hWnd:// ̄收托盘图标通知消息的窗口句柄
UINT uCaUbackMessage:// ̄息ID号,此消息传递给hWnd
HICON Meon: /俑标的句柄
char szTop[643,/At标停留在图标上显示的提示信息
)NOTIFYICONDATA,*PNOTIFYICONDATA:
该结构中,成员una 可以使下列之一或组合:
NIF J【CON 设置成员hIcon有效
NIF MESSAGE 设置成员uCallbaekMessage有效
NIF TIP 设置成员szTop有效
2.2 Shell
_
Notifylcon函数
全局函数SheU
_
Notifylcon()用于在托盘上增加、删除
或修改图标。其原型为:
WINSHELLAPI BOOL WINAPI
ShelLNotifyIcon(DWORD dwMessage,PNOTIFY[CONDATA
pnid);
Pnid是上面的NOTIFYICONDATA结构的指针:
dwMessage是被传递的消息,可以是以下消息之一:
NIM ADD //增加图标
NIM
_
DELETE //删除图标
NIM
_
MODIFY //修改图标
3结 论
由此可看出,通过以上代码,可以简单方便的制作彩色
弹出菜单及托盘图标。以上为作者在实际工作中积累的一
点儿经验。在VC++6.0,Windows98/2000 Professional下调试
通过,仅供参考。
参考文献
[1]李博轩等著.Visual C++图形用户界面开发指南.北
京:清华大学出版社.2000一l1.
[2][美]David J.Kruglinski。Scot Wingo。George Shepherd
著.Visual c++6.0技术内幕.北京:希望电子出版社.
・57・


发布评论