📄 00502.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>1</title>
</head>
<body bgcolor="#000000" text="#FFFFFF" link="#FFFFFF">
<p><span style="BACKGROUND-COLOR: #ff0000"><a href="00502.zip">源程序下载</a></span><b><span style="background-color: #000080"><br>
</span></b><span style="background-color: #000000"><br>
</span><b><span style="background-color: #000080"><a name="1"></a>1:判断系统是否安装了声卡<br>
</span></b><span style="background-color: #000000"> 欲判断系统是否安装了声卡,调用Winmm.dll中的waveOutGetNumDevs和midiOutGetNumDevs就可以判断是否安装了声卡。这两个函数在Var部分的说明如下:<br>
function waveOutGetNumDevs: longint; stdcall; external 'winmm.dll' name 'waveOutGetNumDevs';<br>
function midiOutGetNumDevs: longint; stdcall; external 'winmm.dll' name 'midiOutGetNumDevs';<br>
<br>
//判断声卡是否存在<br>
Function IsSoundcardInstalled : Boolean ;<br>
Var<br>
WaveOutPutDeviceCount: Integer ;<br>
MidiOutPutDeviceCount : Integer ;<br>
Begin<br>
Result := False ;<br>
WaveOutPutDeviceCount := waveOutGetNumDevs ;<br>
MidiOutPutDeviceCount := midiOutGetNumDevs ;<br>
if (WaveOutPutDeviceCount>0) and (MidiOutPutDeviceCount>0) Then Result := True<br>
Else Result := False ;<br>
<br>
End ;<br>
<br>
procedure TForm1.Button1Click(Sender: TObject);<br>
Begin<br>
if IsSoundcardInstalled Then ShowMessage('系统已经安装了声卡')<br>
Else ShowMessage('系统没有安装声卡') ;<br>
<br>
end;<br>
<br>
<br>
</span><b><span style="background-color: #000080"><a name="2"></a>2:如何把程序关闭的控制权掌握在自己手里<br>
</span></b><span style="background-color: #000000"> 在一般的应用程序中,按Alt+F4就可以关闭或者在系统菜单里面,选择了关闭这个菜单项,就可以关闭当前的应用程序,如何屏蔽掉系统的菜单的关闭功能(Alt+F4)失效呢,实现的方法很简单,就是当当前的应用程序收到关闭消息时,把CanClose:=FALSE; <br>
在本程序中,设置一个全局变量bClose,用他来控制能否关闭当前应用程序,只有单击Button3时才可以关闭当前的应用程序。<br>
<br>
procedure TForm1.FormCreate(Sender: TObject);<br>
begin<br>
bClose := False ;<br>
end;<br>
<br>
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br>
begin<br>
CanClose := bClose ;<br>
end;<br>
<br>
procedure TForm1.Button3Click(Sender: TObject);<br>
begin<br>
bClose := True ;<br>
Close ;<br>
end;<br>
<br>
<br>
</span>
<b><a name="3"><span style="background-color: #000080"></span></a><span style="background-color: #000080">
3:写一个简单的多线程的程序</span></b><span style="background-color: #000000"><br>
使用线程时有两个主要任务:第一,创建线程,第二,创建线程入口函数。Windows API调用CreateThread函数来创建一个线程。 <br>
hthread := CreateThread(nil, //是安全属性,如果此参数设为Nil,使用的是缺省安全属性,在Windows95/98下,标准的就设为Nil,只有想此线程有子线程时才可能脱离这种模式。<br>
0, //如果这个参数为0,就是线程的堆栈长度和此应用程序的的堆栈长度相同,可以总把此参数设置为0<br>
@ThreadFunc, //线程开始初的线程名称,<br>
nil, // argument of thread<br>
0, // Create flags<br>
ThreadID); // thread ID<br>
<br>
<br>
function ThreadFunc(P: Pointer): LongInt; stdcall;<br>
var<br>
i: Integer;<br>
DC: HDC;<br>
S: string;<br>
begin<br>
DC := GetDC(Form1.Handle);<br>
SetBkColor(DC, GetSysColor(color_btnface));<br>
for i := 0 to 100000 do <br>
begin<br>
S := IntToStr(i);<br>
TextOut(DC, 10, 10, PChar(S),
Length(S));<br>
end;<br>
ReleaseDC(Form1.Handle, DC);<br>
end;<br>
<br>
//采用一个多线程<br>
procedure TForm1.Button4Click(Sender: TObject);<br>
var<br>
hThread: THandle;<br>
ThreadID: DWord;<br>
begin<br>
hthread := CreateThread(nil, //Security attribute<br>
0, //Initial Stack<br>
@ThreadFunc, //Starting address of thread<br>
nil, // argument of thread<br>
0, // Create flags<br>
ThreadID); // thread ID<br>
<br>
if hthread = 0 then MessageBox(Handle, 'No Thread', nil, MB_OK);<br>
end;<br>
<br>
//采用单线程<br>
procedure TForm1.Button5Click(Sender: TObject);<br>
begin<br>
ThreadFunc(nil);<br>
end;<br>
<br>
</span>
<span style="background-color: #FF0000"><a href="00502.zip">源程序下载</a></span>
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -