41
Q:在 VB 编程中检测声卡是否存在? 42
Q:在 VB 中终止 Windows95 的运行
43
Q:给一大段 VB 程序一次性加上注释符号 44
Q:VB 中在一个窗体中执行另一个窗体中的代码
45
Q:Visual Basic 5.0 支持类吗? 46
Q:在 VB 5.0 中文版中,表单上最多允许有多少个控件?
47
Q:Visual Basic 能用来创建在 Windows CE 环境下运行的应用程序吗? 48
Q:Visual Basic5.0/6.0 能用来创建 Windows NT 服务吗?
49
Q:Microsoft Visual Basic 5 除了支持本机编译的代码外,还支持 p 代码吗? 50
Q:Microsoft Visual Basic 可以在 Macintosh 上使用吗?
51
Q:Visual Basic 5.0/6.0 支持 16 位开发吗? 52
Q:Visual Basic 5.0 中文版内的 Text Box 能存储 64K 以上的数据吗?
53
Q:在 ASP 编程中统计查询结果的记录数 54
Q:为何无法编译成 dll 文件?
55
Q:资源文件有什么用处? 56
Q:如何在 DOS 程序结束执行时,自动将其关闭?
57
Q:VB 编程中打开默认网址和 Email 的更简单的方法 58
Q:我用 VB6.0 的 ActiveX dll 工程开发了一个在 ASP 中调用的 dll 类型库,里面有好多封装的函数,我能不能在 VB 的 EXE 工程中利用它们?
59
Q:“我爱你”病毒传播的秘密 60
Q:在 PowerBuilder 中使用 RichTextEdit 控件,属性中没用 Font,我想设置字体怎么办(如果不设字体,读入一个文本文件,缺省的字体对不齐)?
61
Q:在一个 PowerBuilder 程序中,我想用 RichTextEdit 控件从本地取文本文件显示,可是在我的机器上 RTE 只能显示出少量英文和乱码,程序并没有编错,因为相同的程序在其他人的机器上显示出的是正确的文本,不知是什么原因? 62
Q:如何在 PowerBuilder 的 BLOB 字段中写入大于 1M 的文件(数据库为MSSQL 7.0)?
63
Q:用程序控制电脑说英语? 64
Q:怎样判断、防止程序重复执行?
65
Q:如何结束 Shell 所启动的程序? 66
Q:用 VB5.0 创建 Windows 程序组中的快捷方式
67
Q:VB 中使 TextBox 按 Mouse 右键时只出现自定 PopUp Menu? 68
Q:用 VB 实现拖放功能
69
Q:用 VB 程序如何改变桌面墙纸的图片? 70
Q:用 VB 程序捕捉屏幕图像
71
Q:测试表中的记录总数又一法(笨而准确) 72
Q:如何判断生成的记录集是“空集”(记录数为 0)?
73
Q:VB 编程中如何使窗口右上角的关闭按钮(X)失效? 74
Q:用 VB 实现超级链接功能
75
Q:在 VB 安装程序中加入“卸载”功能 76
Q:怎样在 VC++ 中产生闪烁的光标
77
Q:VFP 程序编译成 .EXE 文件后运行,为在什么屏幕上一闪而过就结束了? 78
Q:VB 中如何在保存并覆盖文件时让其出现对话框,询问是否替换
79
Q:VB6 中的字体出现乱码怎么办? 80
Q:怎样用 VB 编写多线程程序
81
Q:加快 Delphi5.0 启动速度 82
Q:观察 Delphi5.0 内存堆分配情况
83
Q:Delphi 中如何在打印或打印预览前获取报表页数 84
Q:如何在 Delphi 中实现普通文件的拷贝?
85
Q:用 Delphi 编写支持多国语言的程序 86
Q:在 SQL Server 中怎么样恢复数据的存储?
87
Q:Asp 中无 DSN 法连接 SQL Server 数据库的方法及其注意问题 88
Q:Delphi 中判断系统是否已经安装了声卡
89
Q:用 ASP 打开 Web 服务器上的应用程序 90
Q:一个用进度条表示的时钟
91
Q:Delphi 中实现对日期数据的有效性检验 92
Q:PHP4 的 CGI 版本和 ISAPI 版本有什么区别?
93
Q:VFP6.0 一条语句有多长? 94
Q:Delphi 中调用 Windows API 函数 ShellExecute 实现打开 IE 和 Outlook 应用程序?
95
Q:用一条 SQL 语句找出“相同的客户代码中序号最大”的那些数据 96
Q:在 Delphi5.0 中怎么找不到 Html 组件?
97
Q:在 Delphi 中实现控件焦点转移? 98
Q:在 Delphi 中判断本程序是否已经运行?
99
Q:Delphi 与 VB、ASP 带变量参数 SQL 语句的比较 100
Q:Delphi 实现渐变窗口背景
第五卷 第二章
?101,Q:用 Visual Basic 保存 BMP 文件:
A: 在用VB编制绘图程序时,有时需要将窗体或图片框上的绘图结果形成一个定制的图形文件保存起来,以便以后浏览或修改。这一功能可以用 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。然后安装引用 TTS 的 vtxtauto.tlb 类库文件,方法是点击菜单“工程-Import Type Library”,点“add”按钮,然后选中 Windows\speech 下的 Vtxtauto.tlb 文件,放入安装包后,再将其添加成 Delphi 的一个 Unit,自动产生的名字为“VTxtAuto_TLB”。
Back to home |
File page
Subscribe |
Register |
Login
| N