📄 9922.txt
字号:
===========================================================
《编 程 技 术》
一份属于广大编程爱好者的电子杂志
这是一份完全关于探讨编程的免费电子杂志
您可以任意传播本刊,但必须保持它的完整
本刊承诺绝不向订户发送任何形式的垃圾邮件!
===========================================================
第22期 99/08/22 本期发送数: 3317
===========================================================
◆本期栏目◆
*刊首语*
*雕虫小技*
一组VB应用技巧
*技术文档*
DIY!制作一款简洁实用的图片浏览器
如何在VC5中控制工具条的停靠位置
如何在VB中判断Windows9x的运行模式
在Visual Basic中使用Rundll32.exe和Rundll.exe
用DELPHI实现菜单的汉化
在PB应用中实现声音与动画
*有问必答*
===========================================================
◆刊首语◆
小弟的新主页《C++Builder世界》已经正式开张,这是一个完全
探讨C++Builder编程的专题网站,本站的宗旨就是为C++Builder爱好
者搜集关于C++Builder的一切。由于该站刚刚建立,内容还不是很丰
富,很多下载还不是本地下载,但我会在开学前尽力加入更多的内容
并全部提供本地高速下载,欢迎C++Builder爱好者们常来光临,多多
提些意见,谢谢!
由于开学在即,最近就已经开始忙着其他的事了,现在已经不像
前些时候那样有更多的时间泡在电脑上了,主页的更新已经开始缓慢
下来了,唉,实在是没办法。但是请大家放心的是,本刊还是会定期
发送的。因为现在要在外面找一台能上网的电脑已经不是难事了。
***********************************************************
***********************************************************
◆雕虫小技◆
一组VB应用技巧
路径问题
很多程序员在打开文件、调用程序时喜欢使用绝对文件路径,结果在另
一台计算机上运行时便会遇到路径不对或需要重新拷贝到该目录的问题。
其实,只要使用相对路径,就完全可以避免这个问题。在Windows下,某个
程序一旦运行,除非特别指定了工作目录,一般该程序文件所在的目录就
是工作目录,其他目录可以用工作目录为参照系。在编程中"App.Path"即
为当前工作目录。
另外,用安装程序向导制作安装盘时,只要在步骤"文件小结"中添加
某文件时指定"文件详细资料"的路径即可安装该文件到指定的目录下。
生成透明窗体
利用API函数可做出透明窗体。以下为一种方法:
Me.AutoRedraw = True
hBitmap = CreateCompatibleBitmap(Me.hdc, 0, 0)
SelectObject Me.hdc, hBitmap
调用Bitblt API函数
在编程中我们经常遇到需要拷贝图形的问题,一般利用API函数Bitblt
或Stretchblt(后者可缩放).
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC
As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long,
ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long,
ByVal ySrc As Long, ByVal dwRop As Long) As Long
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal
hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long,
ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long,
ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As
Long, ByVal dwRop As Long) As Long
当所拷贝的图形为画图语句所创建时,有时就会出现拷贝不上去的毛病,
这时不用着急,请确认在拷贝之前对所画的图形进行刷新,即调用Refresh方法.
Findwindow()函数用法
要使用此函数,先从API VIEW中拷贝如下的FindWindow()函数的声明:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口
的标题。在搜索的时 候不一定两者都知道,但至少要知道其中的一个。有
的窗口的标题是比较容易得到的,所以应使用标题进行搜索。但有些软件的
标题是不固定的,如一些MDI程序,如果打开的文 件不同,窗口标题也不同,
这时使用窗口类来搜索就比较方便。如果找到了满足条件的窗口,这个函数
会返回该窗口的句柄,否则返回0。
前面提到的VB的FindWindow()函数的声明将两个参数都定义为String类
型,而在实际使用过 程中,如果我们要忽略某个参数,应将该参数的定义由
As String改为As Any。这里的As Any相当 于C语言中的强制类型转换。例
如,如果我们忽略窗口的类,应将定义修改如下:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As Any, ByVal lpWindowName As String) As Long
然后,在调用时使用如下语句:
hwndCalc = FindWindow(0&, "abc")
这里的0&就表示忽略类名。
防止运行多个实例
在程序开始部分添加如下代码:
If App.PreInstance=True then
End
End If
为应用程序创建快捷方式
一般来说,软件在安装时都会创建一个快捷方式来方便用户使用,我们也
可为自己的应用程序在桌面上创建一个快捷方式。安装Microsoft Visual Basic 4 .0
后,将会有一个Setup Kit工具,其所带的STKIT432.DLL文件中提供了一个API
函数fCreateShellLink可供用户来为应用程序创建快捷方式。下来举例说明其
使用方法。
在这里我们为NOTEPAD创建一个快捷方式。
1、在VB4.0中打开一个新工程文件,在FORM1上添加一个命令按钮Command1。
2、双击窗体,在General Declarations中输入下面代码:
Private Declare Function fCreateShellLink Lib ″STKIT432.DLL"″
(ByVal_ lpstrFolderName As String,ByVal lpstrLinkName As String,
ByVal_lpstrLinkPath As String,ByV al lpstrLinkArgs As String) As Long
3、双击Command1命令按钮,写如下代码:
Sub Command1_Click()
Dim lReturn As Long
lReturn=fCreateShellLink("..。.\Desktop",_"快捷方式Notepad","c:\win95\notepad.exe"," ")
lReturn=fCreateShellLink(" ","快捷方式Notepad",_"c:\\win95\notepad .exe"," ")
lReturn=fCreateShellLink("\startup","快捷方式Notepad",_"c:\win95\notepad.exe"," ")
End Sub
4、按F5运行,单击命令按钮command1,如果没有输入错误的话,桌面上就会
出现NOTEPAD的快捷方式。
运行环境:VB4.0(32),中文WINDOWS95。
***********************************************************
***********************************************************
◆技术文档◆
DIY!制作一款简洁实用的图片浏览器
作者:张中华
自己动手制作一款简洁实用的图片浏览器,要编写多少行代码?
不超过100行!
DIY,Do It Yourself的缩写,意思是自己动手。有时侯,东西
虽好,但价钱太贵,你会选择DIY;也有一些发烧友,本领高强,不
屑于现成东西,为了追求完美,也会选择DIY。于是便有了音响DIY,
音响发烧友;电脑DIY,电脑发烧友。时常想起那些DIY的日子,紧张
刺激,令人回味无穷。特别是经过千辛万苦之后,你DIY的东西终于
可以按你想象的那样工作了,你不由得豪气顿生:Yes,I can do it
!心中充满了成就感,飘然若醉。
上面只是提了音响DIY和电脑DIY,但你是否试过,软件也可以
DIY?软件DIY,说白了就是利用现有的类库、组件,快速构造出自己
的程序出来。就象你找来各种电脑配件,然后把它们装配成整机一样
;但也有不一样的地方,电脑配件即使是旧的二手配件,怎么说也得
花一点钱,而软件的类库、组件,你有时侯可以免费得到。
我想要DIY的,是一款简洁实用的图片浏览器。众所周知,ACDSee
是最流行的图片浏览器,确实很不错。但作为一名程序员,我想,要
是我也能制作出一款简洁实用的图片浏览器,可以在我开发的软件中
有图片浏览功能,那该多好。
而我确实DIY出了这么一个图片浏览器,她简洁实用,小巧玲珑,
取名为:SimpleBrowse。现将制作过程介绍如下,与大家分享,并期
望能起到抛砖引玉的作用。
第一步:定规格1.样子要象ACDSee一样,左边是目录树,右边是
文件列表,显示图片文件的缩图。
2.缩图要好看,浏览速度要快,能浏览的图片格式要多。
3.简洁实用,制作难度不要太大。
4.在Win98,WinNT下都能用。
第二步:选材料由于界面主要分为两大部分,即左边的目录树和
右边的文件列表,故材料也就主要是这两大件。
1.左边目录树从http://www.codejockeys.com/kstowell/上,我
们可以得到一个免费的MFC扩展类库CJ60Lib.dll,这个类库包含有许
多用于界面设计的类,其中有一个CShellTree类,可以显示和Windows
Explorer左边目录树一样的效果,正好符合我想要的,选定了它。
2.右边文件列表这是关键的部分,它要求能创建、显示、管理图
片文件的缩图,要求能浏览多种格式的图片文件,要求有较精美的缩
图显示效果和较快的浏览速度,要求易于使用难度不大。泰来影像科
技有限公司在图像处理应用软件开发方面有较深的造诣,推出了一个
MFC扩展类库thl.dll,其中有一个CThumbListCtrl类,正是用来创建
、显示图片缩图用的,选定了它,从http://www.thalia.com.cn/上
获取之。
第三步:生成程序框架象开发其他程序一样,用VC++6.0 App
Wizard生成程序框架。
1.选菜单项File->New,到Projects面板,选取MFC AppWizard
(exe),Project name为SimpleBrowse。OK确定后,进入一个向导中,
共有6步。
2.Step 1,选single document,其它不动,用缺省值。
3.Step 2 of 6,不动,用缺省值。
4.Step 3 of 6,不动,用缺省值。
5.Step 4 of 6,选Internet Explorer ReBars,其它不动,用
缺省值。
6.Step 5 of 6,选Windows Explorer,其它不动,用缺省值。
7.Step 6 of 6,不动,用缺省值。Finish确定后,即生成程序
框架。
第四步:使用类库、组件1.左边的目录树对应的类是CLeftView,
修改之。
class CLeftView : public CView/*CTreeView*/
{
...
// Attributes
public:
CShellTree m_TreeCtrl; // use shell tree control
...
// Generated message map functions
protected:
//{{AFX_MSG(CLeftView)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
...
};
(1)将其父类由CTreeView改为CView,原因后述。
(2)加入CShellTree类的成员变量m_TreeCtrl,目录树的具体内
容就是由它实现的。
(3)增加消息响应函数OnCreate(),在其中把m_TreeCtrl创建起
来。
(4)增加消息响应函数OnSize(),使m_TreeCtrl总是占满
CLeftView的区域。
(5)增加消息响应函数OnItemexpanding(),在此响应展开目录的
操作。如果CLeftView的父类是CTreeView的话,将不能得到希望的结
果,这就是(1)中把父类改为CView的原因。
(6)增加消息响应函数OnSelchanged(),在此响应点击目录的操
作。
具体修改请看源文件leftview.h和leftview.cpp,都很简单。
2.右边的文件列表对应的类是CSimpleBrowseView,修改之。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -