📄 9925.txt
字号:
================================================================
《编 程 技 术》
一份属于广大编程爱好者的电子杂志
这是一份完全关于探讨编程的免费电子杂志
您可以任意传播本刊,但必须保持它的完整
本刊承诺绝不向订户发送任何形式的垃圾邮件!
================================================================
第25期 99/09/11 本期发送数: 4094
================================================================
◆本期栏目◆
*刊首语*
*网友作品*
*技术文档*
在Delphi中侦测剪贴板的变化
DELPHI中安装动态提示功能的两种方法
如何在Windows操作系统中改变文件打开方式
Visual Basic控制与Visual C++开发
VC++程序中用对话框的形式显示HTML文件
PB中数据窗口的两点应用技巧
Visual FoxPro多媒体表单设计
*有问必答*
================================================================
◆刊首语◆
最近,有好几位朋友向我反映23、24期刊物他们收到了多份。其实为
了监测刊物的发行,我自己的信箱也同时订阅了一份,果然第23期我收到
了两份,24期我收到了4份,具体是何道理,我也不清楚,但有一点可以
肯定,我绝对不是垃圾制造者(其实我也找不到理由要这么做),这点请
大家明察。我想可能是发送邮件时出了问题,如果本期还出现这样的问题
的话,我会去反映情况的。
****************************************************************
****************************************************************
◆网友作品◆
001.名称:Update Robot
版本:2.02
作者:王海丰
Email: wanghaifeng_1@163.net
主页: http://whf.soim.net
运行平台: Windows95&98
性质:共享软件
下载地址: http://home.online.tj.cn/~whf/whf/updaterob.zip (295KB)
功能简介:
UpDate Robot是一个全自动更新网站的工具,如果你经常通过FTP服务器更
新你的主页,你可能需要这个智能文件传输工具,它只上载你新创建的或
者经过更新文件和目录,并且能够删除无用的文件,的确,它足够聪明。
002.名称:Windows Cracker
Email: wanghaifeng_1@163.net
作者:王海丰
主页: http://whf.soim.net
运行平台: Windows95&98
性质:共享软件
下载地址: http://home.online.tj.cn/~whf/whf/wincrack.zip (417KB)
功能简介:
Windows Cracker是个轻松地修改Windows 95/98中绝大部分的系统隐藏选
项的软件,Windows Cracker类似WinHacker,WinChanger,从能修改的项目来
说,Windows Cracker全面超越WinHacker,WinChanger.Windows Cracker足
以满足您对Windows的大改特改.功能多多,一用便知.特点:
1.可能是目前同类软件中能修改项目最多的,目前能修改173项.
2.全中文界面,你能清楚知道要设置什么,最适合中国用户使用.
3.内部整合拨号上网优化,"***"密码查看两个非常实用的功能.
您自己开发过软件吗? 您有自己满意的作品吗? 您希望发布推广您的作品
吗? 本刊竭诚为您提供宣传空间。有意的朋友请把您的作品介绍以及下载
地址、您的网址、联系方法等相关信息发给我(具体格式请参照上面)。
本刊免费为您宣传三期。如有疑问可以与我联系。
我的信箱: yaozheng@kali.com.cn
****************************************************************
****************************************************************
◆技术文档◆
在Delphi中侦测剪贴板的变化
(上海 钱可栋)
许多提供剪切、复制和粘贴功能的应用程序都有一个共同特点,那就是:
工具栏上表示这三个功能的按钮会随着剪贴板的变化而变化,具体来说,粘贴
按钮只有在剪贴板上有内容时才处于使能状态,而当剪贴板空时则变灰,也就
是不能使用;相似地,剪切、复制按钮也只有在当前有文本或位图被选择时才
有效。那么,这是怎么实现的呢?笔者曾经想在Delphi4.0中放置一个Timer控
件,在其OnTimer事件中加入侦测剪贴板变化的代码,但最后放弃了,原因是
Timer控件比较消耗系统资源,得不偿失,而且笔者也相信,那些应用程序的
源代码也不是这么做的。其实,这个问题的关键在于怎么样响应Windows消息,
这里就是响应剪贴板消息。Delphi体贴地将所有的Windows消息都重新定义,
令我们可以方便地通过message关键字访问这些消息而不用理会恼人的API。下
面,就用一个实例说明Delphi是怎么做的。
程序需要一个ToolBar控件,在其上建立三个按钮;一个ImageList控件,
为其加入三个小位图,分别表示剪切、复制和粘贴,将ImageList 赋予ToolBar
的images属性;一个Memo控件,将其Lines属性置空。以下是程序清单:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,ClipBrd, ComCtrls, ImgList, ToolWin;
type
TForm1 = class(TForm)
ToolBar1: TToolBar;
ImageList1: TImageList;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
private
{ Private declarations }
viewhandle:HWND;
procedure Change(var msg:TWMdrawclipboard);
message wm_drawclipboard;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Align:=alClient;
ToolBar1.Flat:=True;
viewhandle:=SetClipboardviewer(Handle);
ToolButton1.Enabled:=False;
ToolButton2.Enabled:=False;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ChangeClipboardChain(Handle,viewhandle);
end;
procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Memo1.SelText<>`' then
begin
ToolButton1.Enabled:=True;
ToolButton2.Enabled:=True;
end
else
begin
ToolButton1.Enabled:=False;
ToolButton2.Enabled:=False;
end
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
Memo1.CutToClipboard;
end;
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
Memo1.CopyToClipboard;
end;
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
Memo1.PasteFromClipboard;
end;
procedure TForm1.Change(var msg:TWMdrawclipboard);
begin
ToolButton3.Enabled:=Clipboard.Hasformat(cf_text)
end;
end.
注意程序中的关键字:message,它使Change过程可以响应剪贴板消息,
即剪贴板中有文本内容时粘贴按钮有效,反之无效;而剪切、复制按钮的状
态在Memo1的MouseUp事件中响应。程序中的SetClipboardviewer函数用来登
陆剪贴板,ChangeClipboardChain函数用来退出剪贴板。另外还有一点要说
明的是:由于代码中有剪贴板类的操作,因此Uses子句中要加上ClipBrd。
****************************************************************
DELPHI中安装动态提示功能的两种方法
(广西 王有明)
在WINDOWS95系统的应用程序中,动态提示功能已经非常普及,其中大部
分工具条或其它操作对象都具有此功能,当鼠标移到上面时都会显示出简短的
提示,无疑这给操作带来了很大的方便,在DELPHI程序设计中同样可以实现这
种功能,下面介绍两种方法供参考。
一、 利用其它控件的方法
其基本操作过程是:在需要安装提示的控件旁适当位置安放一个可显示文
本信息的控件,比如LABEL、EDIT等,假如使用LABEL控件,在初始状态置此所
有的用于提示的LABEL控件的VISIBLE属性为FALSE,使其隐藏起来,然后在安
装提示控件的MouseMove()事件中置所有LABEL不可显示,这样当鼠标移到一个
控件上时,就只在该控件的旁边显示相应的提示信息,而其它对象的提示信息
都处于隐藏状态,当鼠标移到窗体空白处时则所有LABEL都不再显示,这就完
成了动态帮助信息的安装工作,此方法的优点是适应性强,工作可靠,缺点是
必须使用多个用于文本显示的控件,占用较多的系统资源;
二、 利用CANVAS类的方法
CANVAS的译意为画布,也就是DELPHI为用户提供的一个可以作图的场所,
它允许在某些控件表面进行灵活的绘图操作或信息显示,如FROM、IMAGE、
LILELISTBOX等多种控件都支持CANVAS,CANVAS具有多种属性并支持多种操作
命令,可以实现在指定的对象上画点、画线、画圆等多种绘图操作,并且可以
在指定位置显示指定颜色、指定尺寸的字符串;安装动态帮助功能主要使用它
的字符串显示功能,所需要的命令如下:
form1. canvas. brush. color:定义填充颜色,即字符串的背景颜色;
form1. canvas. font. size:定义字符的字号;form1. canvas. font. color:
定义字符的颜色;
form1. canvas. TextOut(x. y. STRING):显示字符串,X. Y为待显示的
位置坐标值,STRING为待显示的字符串内容;
此方法也必须利用各个控件的MouseMove()事件,即当鼠标移到该控件上
时在其旁边显示指定的字符串,当鼠标离开此控件时可用form1. repaint命令
重新绘制窗口,以快速清除原来显示的信息;使用此方法的优点是不需要多余
的控件,编程简单方便并且节省资源;但它有一个局限性,就是需要安装帮助
信息的控件旁边必须存在可作图的“画布”,否则无法正常显示信息,此点在
具体应用时需要注意。
****************************************************************
如何在Windows操作系统中改变文件打开方式
(合肥 张建军 滕明贵 韩莹)
在Windows 95/NT/98操作系统中改变文件打开方式的问题,又可称为改
变文件类型关联的问题,即把某类型(扩展名)的文件与某应用程序关联,例
如通常当双击*.txt文件时系统自动调用Notepad.exe。本文介绍利用Windows
注册表编辑器Regedit.exe手工或编程改变文件打开方式的方法,并提供程序
实例。
一、基本思路:
1、注册表编辑器Regedit.exe是用于更改系统注册表设置的高级工具,包
含了关于系统配置及运行的重要信息,默认访问路径为C:\Windows\Regedit.exe。
双击Regedit.exe图标,运行注册表编辑器。在左侧显示栏内看到HKEY_CLASSES_ROOT、
KEY_CURRENT_USER、HKEY_LOCAL_MACHINE等主键。与文件类型有关的所有主键、
键名、键值都存放在HKEY_CLASSES_ROOT下。
◆双击HKEY_CLASSES_ROOT,向下拖动滚动条,找到.txt主键,右侧显示栏
内“txtfile”说明:在HKEY_CLASSES_ROOT下有一txtfile主键,其下存放了打
开*.txt文件应用程序的有关信息。
◆向下拖动滚动条,找到txtfile主键,右侧显示栏内“文本文档”为文件
类型描述。双击txtfile,DefaultIcon右侧显示栏内“shell32.dll,-152”为
*.txt文件的图标;shell\open\command,右侧显示栏内
“C:\WINDOWS\NOTEPAD.EXE %1”为打开*.txt文件的应用程序名称及参数。
改变打开文件方式的方法(例如用VISIO打开*.exc文件):
◆手工:打开系统注册表,在HKEY_CLASSES_ROOT下找到.exc及另一主键名,
找到此主键,将shell\open\command右侧显示栏内“C:\WINDOWS\NOTEPAD.EXE %1”
改为“C:\VISIO.EXE %1”(假设VISIO.EXE的访问路径是C:\,具体视情况而定),
按F5刷新系统注册表。
◆编程:利用VB、Delphi、C++Builder等读写系统注册表,可自动改变文
件打开方式。本文提供VB、Delphi编程实例。
二、编程实例:
㈠利用VB编程
1、在VB5.0 IDE中,新建工程Project1,在Form1上添加命令按钮Command1。
2、选择菜单“工程”—“添加模块”—“模块”—“打开”,在Project1中
添加模块Moudle1。
3、在Moudle1“通用—声明”部分声明API函数和常量。
Const REG_SZ = 1
Global Const HKEY_CLASSES_ROOT = &H80000000
Declare Function OSRegQueryValueEx Lib “advapi32”Alias
“RegQueryValueExA”(ByVal hKey As Long, ByVal lpszValueName As String,
ByVal dwReserved As Long, lpdwType As Long, lpbData As Any, cbData As Long) As Long
Declare Function OSRegOpenKey Lib “advapi32”Alias
“RegOpenKeyA”(ByVal hKey As Long, ByVal lpszSubKey As String,
phkResult As Long) As Long
Declare Function OSRegSetValueEx Lib“advapi32”Alias
“RegSetValueExA”(ByVal hKey As Long, ByVal lpszValueName As String,
ByVal dwReserved As Long, ByVal fdwType As Long, lpbData As Any,
ByVal cbData As Long) As Long
Declare Function OSRegCloseKey Lib“advapi32”Alias
“RegCloseKey”(ByVal hKey As Long) As Long
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -