📄 9916.txt
字号:
}
其中:TMessage和TWMGetMinMaxInfo类型的定义可参见:
C:\Program Files\Borland\CBuilder\inlucde\vcl\Messages.hpp;其它的消息
响应方法与此相同。
另外,可以为自定义的消息也定义一个对应的消息结构(如:TSearchNode_Mes
sage),至于如何定义消息结构, 可以参考:
C:\Program Files\Borland\CBuilder\inlucde\vcl\Messages.hpp
***********************************************************
用Delphi制作欢迎屏幕
(山东 许振华)
大家对WIN95的欢迎屏幕可能都很熟悉了,安装完毕后第一次启动WIN95时就
会出现欢迎屏幕,提供一些信息,而且很好的一个功能是提供了许多WIN95的使用
技巧。如果用户对WIN95熟悉了,就可以将“下次启动时显示此屏幕” 前的复选
框不选择,那么以后启动时就不再出现欢迎屏幕了,这种欢迎屏幕在其他一些软
件中也有使用。本文给出一种用Delphi实现的方法,你也可以在自己的程序中实
现这种功能了。
这种欢迎屏幕应具有的特点是:1.每次启动时提示一条使用技巧,按“下一
条”按钮可显示下一条技巧,下次启动程序时显示的技巧应是本次最后显示技巧
的下一条,这样才能提供给用户新技巧而不是已看过的技巧。2.用户不想使用时
欢迎屏幕要能关闭它,以后需要使用时应能再恢复它。
第一步,制作欢迎屏幕中需要使用的技巧文件
这种文件一般采用文本文件,每条技巧占用一行,简明扼要,不宜太长。可
用记事簿等来编写,注意若一行写不下应由记事簿自动换行,不可用硬回车换行。
对于如何让程序知道下次是否出现欢迎屏幕,我们可采用一种简单的方法来实现:
在技巧文件的第一行写下标志TRUE或者FALSE,如果为TRUE说明欢迎屏幕是激活
的,下面的程序注释将说明如何切换状态。下面就开始制作欢迎程序,设计思路
见程序详细注释。
第二步,制作程序的主界面
本文目的是做欢迎屏幕,所以本程序没任何实际功能,主要是为了给大家一
个完整的示例。在窗体FORM1中添加两个命令按钮:Button1、Button2,Caption
属性分别为“欢迎屏幕开关”、“退出”。在窗体的代码单元UNIT1中写如下代码:
在private部分添加如下语句:
Tips:TStringList;//用来读取技巧文件中的技巧
在窗体的onshow事件中写如下代码:
procedure TForm1.FormShow(Sender: TObject);
begin
Tips:=TStringList.Create;
//读取技巧文件中的技巧
Tips.LoadFromFile(`C:\myprog\tip.txt');
//如果第一条技巧内容为TRUE,说明欢迎屏幕是处于激活状态,那么就显示欢迎屏幕,
//并且将
if Tips[0]=`True'
then form2.showmodal;
end;
双击命令按钮Button1写如下代码:
procedure TForm1.Button1Click(Sender:TObject);
begin
//将欢迎屏幕显示出来,供用户选择下次是否出现欢迎屏幕
form2.show;
end;
双击命令按钮Button2写如下代码:
procedure TForm1.Button2Click(Sender: TObject);
begin
close; //关闭程序
end;
第三步,制作欢迎屏幕窗体。在窗体中放置一个面板Panel1,在面板中放置一
个小图片,比如一个灯泡或一个问号,在图片旁边放置一个标签Label1,标题为
“你知道吗?”,再在面板中标签Label1下方放置一个标签(名字TIP)用来显示
技巧信息。在面板的下方放置一个复选框,供用户选择是否在下次启动时使用欢迎
屏幕,Caption属性为“每次启动时显示此屏幕”,NAME属性:OnStartup。在窗体
中再放置两个按钮,name=Okbtn, caption=“ok”,name=Nextbtn, caption=“下
一条技巧”。欢迎屏幕的界面参见本文的附图。下面是程序代码
在private部分添加如下语句:
Tips: TStringList; //用来读取技巧文件中的技巧
“下一条技巧”按钮的事件代码:
procedure TForm2.NextBtnClick(Sender: TObject);
begin
//显示下一条技巧,循环显示
Tips.Move(1, Tips.Count - 1);
Tip.Caption := Tips[1];
end;
“OK”按钮的代码:
procedure TForm2.OKBtnClick(Sender: TObject);
begin
//如果复选框选中,那么将一条信息置为True,否则置为False
if OnStartup.Checked
then Tips[0] :=`True'
else Tips[0]:=`False';//将下次要显示的技巧放在第二行(第一行为显示标志)
Tips.Move(1, Tips.Count - 1);
//保存当前的设置,下次有效
Tips.SaveToFile(`c:\myprog\tip.txt');
Tips.Free;
Close;
end;
//欢迎窗体的ONSHOW代码:
procedure TForm2.FormShow(Sender: TObject);
begin
Tips := TStringList.Create;
Tips.LoadFromFile(`c:\myprog\tip.txt');
//显示技巧,显示欢迎屏幕的设定标志
Tip.Caption := Tips[1];
if Tips[0]=`True'
then OnStartup.Checked := True
else OnStartup.Checked := False;
end;
第四步,保存和运行。运行此程序时,会有一个提示,大意是将UNIT2包含到
UNIT1中,选择YES,则会在UNIT1中的implementation部分自动添加代码uses Unit2;
如果没有错误的话就会看到欢迎屏幕了,当然你的tip.txt文件的第一行最初必须
是True,再试一试其他的功能吧。
本程序在Delphi 3.0、WIN9X下调试通过。
***********************************************************
用VB实现拖放功能
(广东 陈立)
拖放是用鼠标拖动一个文件到其它对象的活动。在图形操作过程中,拖放是最
常用的功能之一,下面我们来看看怎样用VB实现拖放功能。
首先介绍与拖放有关的控件:
1.属性:DragMode决定拖动操作的初始化是人工方式还是自动方式
DragIcon确定在拖动过程中显示的指针的图标形状
2.方法:Drag开始,结束或取消拖动控件
3.事件:MouseDown事件发生于用户按下鼠标按钮时。
DragOver事件发生于拖动操作完成时。
DragDrop事件发生于拖动操作正在进行时。
然后编写一个小程序,这个程序能实现在窗口中或窗口间拖动图标的功能。建
立窗口Form1和Form2,在窗口中都加入Image1,其中Form1下的Image1.picture为你
想显示的图标。
Form1下程序代码为:
Option Explicit
Dim dragx As Single
Dim dragy As Single
Const BEGIN_DRAG=1
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Image1.Picture=Source ;Sourse为被拖动的控件
Form2.Image1.Picture=LoadPicture(″″)
Image1.Move(X-dragx),(Y-dragy); X,Y为鼠标所在目标窗体或控件的当前坐标
End Sub
Private Sub Form_Load()
Load Form2
Form2.Show 0
End Sub
Private Sub Image1_MouseDown(Button As Integer,Shift As Integer,
X As Single,Y As Single)
dragx=X
dragy=Y
Image1.Drag BEGIN_DRAG ;开始拖动操作
Image1.DragIcon = LoadPicture(″按下鼠标时想显示的光标″)
End Sub
Form2下程序代码为:
Option Explicit
Dim dragx As Single
Dim dragy As Single
Const BEGIN_DRAG=1
Private Sub Form_DragDrop(Source As Control,X As Single,Y As Single)
Image1.Picture=Source
Form1.Image1.Picture=LoadPicture(″″)
Image1.Move(X-dragx),(Y-dragy)
End Sub
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer,
X As Single,Y As Single)
dragx=X
dragy=Y
Image1.Drag BEGIN_DRAG
Image1.DragIcon=LoadPicture(″按下鼠标时想显示的光标″)
End Sub
本程序在VB5.0,Window95环境下通过。
***********************************************************
开机,自动更换墙纸
每次开机都面对同样的墙纸,真让人感到单调乏味。是不是可以在每次开机的时候,
都能给你一个意外的惊喜,自动地更换墙纸呢?笔者用VB 5.0编了一个小程序,可以轻松
地解决这个问题。而其关键在于一个WINDOWS API函数的使用,该函数的功能是用来设置
或询问系统范围参数的,其表达形式如下:
Declare Function SystemParametersInfo Lib “user32"Alias “SystemParametersInfoA"(ByVal uAction As Long,ByVal uParam As Long, ByVal lpvParam As Any,ByVal fuWinIni As Long) As Long
1、第一个参数uAction是用来动作设置的,该参数分GET和SET两种行动,有约80种
不同的参数设置,其中设置墙纸的参数为SPI_SETDESKWALLPAPER=20。
2、第二个参数uParam的设置是随第一个参数的设置作相应调整的。这里置空值。
3、第三个参数lpvParam是用来设置要更换上去的图片路径。该参数的设置也是随第
一个参数作相应调整的。
4、第四个参数fulWIni规定了在设置系统参数的时候,是否应更新用户设置参数。
可以是零(禁止更新),或下述任何一个参数:
SPIF-UPDATEINIFILE:更新WIN.INI和注册表中的用户配置文件。
SPIF-SENDWININICHANGE:倘若也设置了SPIF-UPDATEINIFILE,将一条
WM-WININICHANGE消息发给所有应用程序,否则没有作用。这条消息告诉应用程序已经改
变了用户配置设置。
自动更换墙纸的具体实现如下:
1、启动VB,选择STANDARD.EXE创建一个新项目,删除FORM1的同时添加一个模块(MODULE1)。
2、在模块代码窗口填代码如下:(假设墙纸文件都在D:\JX目录下按1-20的序号命
名,每次开机自动抽取墙纸)
Private Const SPI_SETDESKWALLPAPER
=20
Private Const SPIF_SENDWININICHANGE
=&H2
Private Const SPIF_UPDATEINIFILE=&H1
Private Declare FunctionSystemParametersInfo Lib "user32"Alias "SystemParametersInfoA"
(ByVal uAction As Long, ByVal uParam As Long,ByVal lpvParam As Any, ByValfuWinIni As Long)As Long
Sub Main()
Dim myvalue
SPIFlags%=()
Ramdomize
myvalue=20*Rnd
bmpfiles
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -