电脑十万个为什么

第37章


这一功能可以用  VB  本身带有的  SavePicture  语句来完成。
        SavePicture语句将窗体、图象控件或图片框中的图形图象保存到磁盘上的一个文件中,这些图象可以是使用画图方法(Line,Circle,Pset)产生出来的,也可以存储那些通过设置窗体或图片框的图片属性或者通过PaintPicture  方法或  Load  Picture  函数载入的图象。这些载入的图象可以是  BMP、ICO  或  WMF  图形文件。
        SavePicture  语句的语法格式如下:
            SavePicture  picture,stringexpression
        参数  picture  为窗体或图片框的  picture  或  image  属性;参数  strngexpression  为保存的文件名。
        下面举一个具体的程序来说明定制图象文件的过程:
    1、创建一个新的项目文件,在  Forml  中加入一个图象控件  Picture1,将Picture1  的  AutoRedraw  属性设置为  True;
    2、在Form_Load()  事件中,加入如下代码:
      Private  Sub  Form-Load()
        Dim  CX  As  Integer
        Dim  CY  As  Integer
        Dim  Limit  As  Integer
        Dim  Radius  As  Integer
        CX=1000
        CY=1000
        For  Radius=0  To  Limit
        Picturel.Circle(CX,CY),Radius,RGB(Rnd*255,Rnd*255,Rnd*255)
        Next  Radius
        SavePicture  Picturel.Image,"c:custom.bmp"
      End  Sub
        执行此程序就会把图片框  Picture1  上的图象保存在  C:  盘根目录下  custom.bmp  图象文件中。
        最后有两点需要指出:
        1、在使用  SavePicture  语句之前,必须先将窗体或图片框的  AutoRedraw  属性设为  True,否则保留的将是一张空图;
        2、使用  Image  属性保存的用画图命令(如  Line,Cirele,Pset  或  Print)画出来的图形总是以  BMP  文件格式保存。但在程序设计时如果使用窗体或图片框的  Picture  属性载入或在程序运行时通过  LoadPicture  函数载入的图象,使用  SavePicture  语句存储时,存储的文件格式同其载入前的文件格式一样(如  ICO  格式等)。      
      102,Q:在  Visual  Basic  中如何拖动窗体或控件?  
            A:现在的许多  windows  下的应用程序,都采用了图形化的界面,但是在这样的界面下就不能使用  Windows  原来的标题条了,否则会影响界面的美观。那么在没有标题条的情况下如何用鼠标拖动窗体或者其它的控件呢?
        其实,采用  API  函数调用很容易实现,下面我们以拖动窗体  Form1  为例来具体讲一下实现方法:
    1、新建立一个项目,名称为  test.vbp;
    2、填加一个模块,名称为  test.bas,并且在声明部分加入以下代码:
        Declare  Function  ReleaseCapture  Lib  "user32"  ()  As  Long
        Declare  Function  SendMessage  Lib  "user32"  Alias  "SendMessageA"  (ByVal  hwnd  As  Long,  ByVal  wMsg  As  Long,  ByVal    wParam  As  Long,  lParam  As  Any)  As  Long
        Public  Const  WM_SYSCOMMAND  =  &H112
        Public  Const  SC_MOVE  =  &HF012
  其中  ReleaseCapture  函数是用来释放鼠标捕获的,SendMessage  函数是一个在  Windows  API  中非常重要的函数,在这里的作用是用来向  Windows  发送移动窗体的消息。WM_SYSCOMMAND  是向  Windows  发送消息的常量。SC_MOVE  是控制移动窗体的常量。请注意:这里  SC_MOVE  的赋值是  &HF012,表示鼠标对象。
    3、在窗体的  MouseDown  过程中加入以下代码:
      Private  Sub  Form_MouseDown(Button  As  Integer,  Shift  As  Integer,  X  As  Single,  Y  As  Single)
        ReleaseCapture
        SendMessage  Me.hwnd,  WM_SYSCOMMAND,  SC_MOVE,  0
      End  Sub
        其中  ReleaseCapture  函数用来释放鼠标捕获,SendMessage  函数向  Windows  发送移动窗体的消息。
    4、保存并运行程序,按下鼠标,你会发现窗体会随着鼠标的移动而移动。
        以上讲述了如何在  VB  中用鼠标拖动窗体,其实,控件的拖动的原理是一样的。例如以下代码可以实现图片框的拖动:
        ReleaseCapture
        SendMessage  Picture1.hwnd,  WM_SYSCOMMAND,  SC_MOVE,  0
      (注:以上程序在  Windows98、VB5.0/6.0  下调试通过。在  NT4.0、VB6.0  下不能运行。)      
    103,Q:用  Delphi5.0  编程实现  Windows  桌面的隐藏和显示
            A:实现原理是调用  Windows  的  API  函数。程序代码如下:
          procedure  TForm1.Button1Click(Sender:  TObject);
          var  hDesktop:Thandle;
          begin
          hDesktop:=FindWindow("Progman",nil);
          ShowWindow(hDesktop,SW_HIDE);  //隐藏桌面
          end;
          procedure  TForm1.Button2Click(Sender:  TObject);
          var  hDesktop:Thandle;
          begin
          hDesktop:=FindWindow("Progman",nil);
          ShowWindow(hDesktop,SW_SHOW);  //显示桌面
          end;
          procedure  TForm1.Button3Click(Sender:  TObject);
          begin
          close;
          end  
    104,Q:应用  Microsoft  TTS  语音引擎的  Delphi  语言实例
            A:建立一个单窗体工程,添加一个  Edit  和  2  个  Button  控件,分别命名为  Edit1、btnSpeak、btnStop。
小说推荐
返回首页返回目录