用C++Builder设计动态网页按钮
当前位置:以往代写 > C/C++ 教程 >用C++Builder设计动态网页按钮
2019-06-13

用C++Builder设计动态网页按钮

用C++Builder设计动态网页按钮

副标题#e#

在信息爆炸式增长的本日,天天都有大量新的网站降生,时时刻刻网上都通报着难以计数的信息。成立网站来举办自我宣传和信息交换已成为一种新潮的媒体宣传方法,多姿多彩的网页也成为Internet中最为烂漫的部门。您也许已经留意到,在网络速度不绝提高的本日,网站的站主们为了留住会见者的视线,开始越来越多地在网页中利用精细的动画、交互式的表单以及其他网页特效。不外我们要实现这些特效,一般都需要借助雷同Photoshop、Flash这样巨大的图象设计软件,并且由这些图象软件生成的特效,字节容量往往城市很大,这相对付今朝并不抱负的带宽来说不能不算是个遗憾。虽然,并不是所有的特效都需要复杂的图象软件才气完成,我们同样可以通过编写措施的要领来到达设计网页特效的目标。下面,笔者就以C++Builder来设计动态网页按钮为例,来说明一下我们完全可以利用措施来建造网页的特效。    

笔者在这里设计的动态网页按钮要实现的结果是,鼠标移动到按钮上时,鼠标形状变为手形,同时按钮会动态地酿成别的一幅画面,从而将会见者的视线瞬间吸引住;一旦鼠标分开按钮之后,按钮又规复到以前状态。在详细开拓时,我们主要操作C++Builder提供的SpeedButton构件来显示按钮处在抬起、克制、按下与保持按下的差异状态,下面是其详细的设计步调:

1、首先选择一张本身满足的位图作为按钮的原始面孔

将图定名为one.bmp,接着可以用图象建造软件将one.bmp转换为色彩越发亮丽的two.bmp,这个位图就是按钮在鼠标颠末期显示的图形,别的为了能“强行”吸引会见者的“眼球”,笔者同时还选取1个声音文件名为crush.wav,以便让鼠标移动到按钮上时发作声音来提醒用户留意。

2、做好筹备事情后,我们下面就开始正式举办措施的原代码编写事情。

打开一个纯文本编辑软件,并输入下面的代码:

crush WAV crush.wav

start BITMAP one.bmp

start1 BITMAP two.bmp

生存为资源文件app.rc。

3、下面我们开始利用以C++Builder。

首先启动Builder,新建一个项目,并将资源文件app.rc添加进项目中。虽然,各人也可以通过BIN目次下的brcc32.exe将RC文件编绎为RES文件,然后用 #program resource "*.res" 语句将其联编进项目中,笔者在这里回收了更简朴的前一种要领。在当前窗体上插手新的SpeedButton,取名为StartSpeedButton。属性按下表配置:

Caption 空

Cursor crHandPoint

Flat true

Hint

Glyph None

Showhint true

接下来,打开所对应的头文件,在个中的private项中增加:

Graphics::TBitmap *one,*two;//界说位图

Char *chWavHandle;//界说声音句柄

然后在主表单的CPP文件的表单创键事件(onCreate)所对应的函数中先初始化位图,

one=new Graphics::TBitmap();

two=new Graphics::TBitmap();

下面,初始化后再载入位图

one->Handle=LoadBitmap(Hinstance, "one");//从内存中载入位图

two->Handle=LoadBitmap(Hinstance, "two");

接着,再加载声音文件

HRSRC temp=FindResource(Hinstance,"crush", "WAV");//从内存中载入声音

HGLOBAL h=LoadResource(Hinstance,temp);

ChWavHandle=(char *)LockResource(h);

随后我们再将浮动按钮的画面显示为two.bmp的图象

StartSpeedButton->Glyph->Assign(two);


#p#副标题#e#

当所有的初始事情竣事今后,我们还应该实时释放所占用的资源,操纵时只要在主表单的OnDestroy事件所对应的函数中插手

delete chWavHandle;

delete two,one;

到这里为止,鼠标形状变革、按钮突起及动态提示已经有了,下面所要做的事情就是完成图形变革及声音提示。在做这部门事情之前,可追念一下欣赏网页的环境。我们的动态按钮的响应步调应该是:鼠标移入按钮时,图形由第一幅图变为第二幅图,同时发作声音来提示用户;移出时图形再变回原貌,但此时不发作声响。因此应让措施知道什么时候鼠标正好移入、什么时候正好移出。凭据这个思路,我们可以在头文件的private项中增加状态变量:

bool blStart;

在主表单文件的OnCreate中为其配置初始值

blStart=true;//在TRUE状态下,一旦产生OnMouseMove事件就可以点亮按钮

选中SpeedButton按钮,在其OnMouseMove事件所对应的函数StartSpeedButtonMouseMove()中增加

if(blStart)//可以点亮按钮

{
StartSpeedButton->Glyph->Assign(one);//加载第一幅图
// 通过chWavHandle句柄挪用内存中声音文件
SndPlaySound(chWavHandle,SND_MEMORY|SND_SYNC);
blStart=false;// 再产生OnMouseMove事件不行以点亮按钮
}

#p#分页标题#e#

虽然,还必需在鼠标分开按钮时再将图形规复为原貌。如何才气知道鼠标分开呢?较量原始的步伐自然是用鼠标的坐标位置来判定,但这样很艰辛。一个巧妙的招数是用包括(在位置上)此按钮的其它部件的OnMouseMove事件来判定(留意:选用的外围部件相对付此按钮来说需有足够的纵深,不然,一旦鼠标移动太快,有大概会漏过OnMouseMove事件而产生紊乱。确决的步伐是,再加上更外围的部件的OnMouseMove事件来双保险)。

以按钮的外围部件是主表单MainForm为例,在其OnMouseMove事件所对应的函数MainFormMouseMove()中插手

if(!blStart)//鼠标正好由按钮内移出

StartSpeedButton->Glyph->Assign(two);// 加载第二幅图

blStart=true;//为鼠标从头进入按钮作筹备

#include //在主表单CPP文件前部插手为SndPlaySound提供声明的头文件

上面就是笔者利用C++Builder来实现简朴动态按钮的设计,虽然,假如您是一位编程喜好者的话,完全也可以通过编程来实现各类百般的非凡结果的设计。

    关键字:

在线提交作业