您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 计算机应用/办公自动化 > VB上机练习题(五)-2
VB上机练习题(五)(设计性)-2实验1:添加“关于……”对话框。创建一个工程,移除普通的Form窗体,添加一个“‘关于’对话框”(AboutDialog)窗体,不用输入任何程序代码,然后运行这个程序,仔细观察体会程序中的各种信息。实验2:创建一个工程,移除普通的Form窗体,添加一个“登录对话框”(LoginDialog)窗体,不用输入任何代码,然后运行这个程序,这是一个验证密码的程序,默认的密码是“Password”,试一试修改这个密码。实验3:创建一个工程,移除普通的Form窗体,添加一个“展示屏幕”(SplashDialog)窗体,不用输入任何代码,然后运行这个程序,观察效果。可以参考高教教材例4.19的内容。实验4:创建一个工程,移除普通的Form窗体,添加一个“日积月累”(TipoftheDay)窗体,不用输入任何代码,然后运行这个程序,观察效果。实验5:实现全屏幕图形界面。提示:将窗体的边框设置为无边框,将窗体的显示模式设置为极大化来实现。即设置属性:BorderStyle=NoneWindowState=Maximized实验6:设计一个程序,每次单击窗体时可以更换一幅背景图片,同时调节背景图像大小适应窗体的大小,双击窗体退出程序。提示:更换背景图片可以用通用对话框来实现;调节背景图像大小用窗体的PaintPicture方法。窗体尺寸变化时背景图片也相应变化。参考代码如下:PrivateSubForm_Paint()'在窗体上绘制图像Me.PaintPictureMe.Picture,0,0,Me.ScaleWidth,Me.ScaleHeightEndSubPrivateSubForm_Resize()Form_PaintEndSub实验7:对于一个比较小的图像,在窗体或是图像控件中显示时,如何实现图像的平铺?提示:用图片框控件Picture1存放用于窗体背景平铺的图像源。设置Picture.Visible=False参考代码如下:PrivateSubForm_Paint()DimPicW_SngAsSingleDimPicH_SngAsSingleDimxAsSingleDimyAsSingle'获取图像的尺寸PicW_Sng=Picture1.ScaleWidthPicH_Sng=Picture1.ScaleHeight'绘制平铺图像y=0DoWhileyScaleHeightx=0DoWhilexScaleWidthPaintPicturePicture1.Picture,x,yx=x+PicW_SngLoopy=y+PicH_SngLoopEndSubPrivateSubForm_Resize()Form_PaintEndSub实验8:如何制作闪烁的窗体标题栏?提示:调用Windows的API函数FlashWindow可以实现标题栏闪烁,通过给定不同的参数值决定窗体标题栏是否闪烁。FlashWindow函数声明如下(可以通过API文字浏览器获得):DeclareFunctionFlashWindowLibuser32AliasFlashWindow(ByValhwndAsLong,ByValbInvertAsLong)AsLong其中hwnd指定要闪烁显示的窗体的句柄;bInvert确定是否切换窗体标题,bInvert=True(非零)表示切换窗口标题,bInvert=False则返回初始状态。函数返回一个Long型数值,表征窗体所处状态,如果返回非零值则窗体处于活动状态。程序举例:使用两个命令按钮(Flash_Btn和NoFlash_Btn)控制窗体标题栏是否闪烁,使用计时器(Timer1)的时间间隔控制窗体的闪烁频率。参考代码:'窗体的通用/声明部分PrivateDeclareFunctionFlashWindowLibuser32(ByValhwndAsLong,ByValbInvertAsLong)AsLongPrivateSubForm_Load()Timer1.Interval=200'设定计时器间隔Timer1.Enabled=False'初始时计时器无效NoFlash_Btn.Enabled=False'“标题栏不闪烁”按钮无效EndSubPrivateSubFlash_Btn_Click()Timer1.Enabled=True'计时器有效NoFlash_Btn.Enabled=True'“标题栏不闪烁”按钮有效Flash_Btn.Enabled=False'“标题栏闪烁”按钮无效EndSubPrivateSubNoFlash_Btn_Click()Timer1.Enabled=False'计时器无效Flash_Btn.Enabled=True'“标题栏闪烁”按钮有效NoFlash_Btn.Enabled=False'“标题栏不闪烁”按钮无效EndSubPrivateSubTimer1_Timer()FlashWindowMe.hwnd,1'调用函数使窗体标题栏闪烁EndSub实验9:如何实现简单的动画窗体,让程序运行开始和结束时的窗体动起来?提示:用计时器(Fly_Timer)来控制窗体的位置与大小,从而实现动画效果。参考代码(实现窗体飞入屏幕的动画效果):'窗体的通用/声明部分DimEnd_XAsIntegerDimEnd_YAsIntegerDimSpeed_XAsIntegerDimSpeed_YAsInteger'编写计时器事件PrivateSubFly_Timer_Timer()IfAbs(Me.Left-End_X)Abs(Speed_X)Then'如果已经到达最终位置则停止执行计时器事件Fly_Timer.Enabled=FalseElse'否则移动窗体位置Me.Left=Me.Left+Speed_XMe.Top=Me.Top+Speed_YEndIfEndSubPrivateSubForm_Load()'初始化窗体位置Me.Top=-500Me.Left=7000'设置窗体最终位置End_X=3200End_Y=4000'计算窗体移动速度Speed_X=(End_X-Me.Left)/100Speed_Y=(End_Y-Me.Top)/100'设置计时器Fly_Timer.Interval=10Fly_Timer.Enabled=TrueEndSub实验10:如何实现窗体的动态图标?提示:通过动态改变窗体的Icon属性值,可以实现动态图标的效果。使用计时器控件控制图标改变的频率。可参考高教教材例6-21。程序举例:实现窗体的动态图标。这里用图像框控件数组(Icon_Img)存放一组图标图像。OptionExplicitDimImg_IntAsIntegerPrivateSubForm_Load()Timer1.Interval=500'设置计时器时间间隔Timer1.Enabled=True'使计时器可用'隐藏图片ForImg_Int=0To3Icon_Img(Img_Int).Visible=FalseNextImg_IntImg_Int=0'初始图片索引EndSub'循环显示图片为图标PrivateSubTimer1_Timer()Img_Int=Img_Int+1IfImg_Int=4ThenImg_Int=0EndIfMe.Icon=Icon_Img(Img_Int).PictureEndSub实验11:如何改变鼠标的光标?程序举例:实现右图所示的界面,选择不同按钮切换鼠标的光标显示效果。参考代码:'“选择一个光标”按钮PrivateSubCommand1_Click()CommonDialog1.Action=1Form1.MousePointer=99Form1.MouseIcon=LoadPicture(CommonDialog1.FileName)EndSub'“恢复系统光标”按钮PrivateSubCommand2_Click()Form1.MousePointer=0EndSub'“退出”按钮PrivateSubCommand3_Click()EndEndSub'“各种系统光标”按钮PrivateSubCommand4_Click()StaticiAsIntegerForm1.MousePointer=iLabel1.Caption=ii=i+1Ifi=16Theni=0EndSub实验12:如何实现可变窗体。参考代码:PrivateSubForm_Click()EndEndSubPrivateSubForm_Load()Form1.Width=3500Form1.Height=2000EndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)IfX=Form1.Width-200ThenForm1.Width=Form1.Width+200IfY=Form1.Height-800ThenForm1.Height=Form1.Height+200EndSub实验13:如何限制鼠标移动区域。程序举例:希望用户鼠标不离开程序窗口。参考代码:OptionExplicit'声明类型PrivateTypeRECTLeftAsLongTopAsLongRightAsLongBottomAsLongEndType'声明函数PrivateDeclareFunctionClipCursorLibuser32(lpRectAsAny)AsLongDimForm_RectAsRECT'限制鼠标在窗体内活动PrivateSubForm_Load()WithForm_Rect.Left=Me.Left\Screen.TwipsPerPixelX.Top=Me.Top\Screen.TwipsPerPixelY.Right=(Me.Left+Me.Width)\Screen.TwipsPerPixelX.Bottom=(Me.Top+Me.Height)\Screen.TwipsPerPixelYEndWithClipCursorForm_RectRelease_Btn.Enabled=TrueEndSub'解除鼠标限制PrivateSubRelease_Btn_Click()ClipCursorForm_RectRelease_Btn.Enabled=FalseEndSub'退出之前确保解除鼠标限制PrivateSubExit_Btn_Click()IfRelease_Btn.Enabled=TrueThen'Release_Btn_ClickEndIfEndEndSub实验14:在很多演示程序中,鼠标会自动移动并进行单击等操作,如何实现?提示:使用API中控制光标的函数SetCursor、GetCursor、GetCursorPos、SetCursorPos可以模拟实现鼠标的自动移动以及单击等操作,为了将模拟的鼠标动作传递到窗体上,还需要使用PostMessage函数。PostMessage函数将一条消息投递到指定窗口的消息队列。投递的消息会在Windows事件处理过程中得到处理。程序举例:实现鼠标的自动移动和单击等操作。运行界面如图所示。参考代码:'窗体的通用/声明部分OptionExplicitPrivateDeclareFunctionGetTickCountLibkernel32()AsLongPrivateDeclareFunctionGetCursorPosLibuser32(lpPointAsPOINTAPI)AsLongPrivateDeclareFunctionSetCursorPosLibuser32(ByValXAsLong,ByValYAsLong)AsLongPrivateDeclareFunctionPostMessageLibuser32AliasPostMessageA(ByValhwndAsLong,
本文标题:VB上机练习题(五)-2
链接地址:https://www.777doc.com/doc-2853973 .html