问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vb 写OCX读取ini

发布网友 发布时间:2022-07-15 09:26

我来回答

1个回答

热心网友 时间:2024-11-17 00:21

VB资源文件的多种使用技巧2009-06-18 10:13一、 开发中英(简、繁)双版本
现在比较流行的软件都会有中文版、英文版、繁体版等等多个版本,并可以根据系统的语言自动显示相适应的版本,那么这个功能在 VB 是如何实现得呢的:
1、 首先通过 API 函数GetSystemDefaultLCID 判断系统的语言
Option Explicit
Dim lang As String
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Sub Form_Load()
Dim LocaleID As Long
LocaleID = GetSystemDefaultLCID
Select Case LocaleID
Case &H404
MsgBox "当前系统为:中文繁体", , "语言"
Case &H804
MsgBox "当前系统为:中文简体", , "语言"
lang = "1"
Case &H409
MsgBox "当前系统为:英文", , "语言"
lang = "2"
End Select
End Sub
2、然后程序就可以加载保存在资源文件(这里我们就是使用的这种方法)、注册表、INI 文件、文本文件或其他文件中的各类字符串,以达到达到实现多种语言的目的。
⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”
⑵在 VB 资源编辑器窗口中,点击“编辑字符串表格”输入如下资料:
标识号 中文(中国)
101 例子
102 中文
103 英文
201 Ensample
202 Chinese
203 English
⑶保存资源文件,写如下代码:(自定义装载字符的函数 LoadString)
Sub LoadString()
Me.Caption = LoadResString(Int(lang & "01"))
Command1(0).Caption = LoadResString(Int(lang & "02"))
Command1(1).Caption = LoadResString(Int(lang & "03"))
End Sub
⑷怎么样一个简单的中英双版本的程序就做出来了,如果把 lang 的值设置为 1,则显示中文,如果把 lang 的值设置为 2,则显示英文。
二、 实现“绿色”软件
现在非常流行“绿色”软件,不需要什么安装程序只要一个 EXE 文件就可以运行程序
了,而在 VB 的编程中有许多地方需要调用第三方的控件(很难用 API 函数搞定所有的功能),这就需要制做一个安装程序,把所需要的控件、DLL 文件或其他文件打包进去了,那么在 VB 中怎么用变通的方法实现“绿色”软件呢,请看:
示例:
1、主程序.EXE
用 VB6.0 编写的程序,调用了 Winsock 控件,如果在没有安装 VB5.0、6.0 的机器上运行则会出现错误,导致程序运行失败,这时如果按一般的方法,只有把这个程序用 VB5.0、6.0 的安装程序进行打包,不然只有用用2的方法来解决了。
2、注册程序.EXE
用 VB6.0 编写的程序,使用资源文件的方法,把 Winsock 控件封装到本程序中,在运行主程序.EXE之前,先运行本程序,通过 API 函数 GetSystemDirectory 取得系统的 Winddows\System 的目录,然后把 Winsock 控件复制到该目录下,并用 Shell 来完成控件的注册。
⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”
⑵在 VB 资源编辑器窗口中,点击“添加自定义资料”,增加 Winsock 控件(C:\Winddows\System\nsck.ocx),再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下:
类型: “OCX”
标识号: 101
语言: 中文(中国)
⑶保存资源文件,写如下代码:
Option Explicit
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Const MAX_PATH = 260 注释:定义足够长的字符串
Private Sub Form_Load()
Dim TempFile() As Byte
Dim FileNum As Integer
Dim TempDir As String
TempDir = GetWinSysDir 注释:自定义函数取得系统的 Winddows\System 的目录
TempFile = LoadResData(101, "OCX") 注释:用以从资源 (.res) 文件装载若干可能类型的数据,并返回一个 Byte 数组
FileNum = FreeFile
Open TempDir & "\nsck.ocx" For Binary Access Write As #FileNum 注释:新建文件(把 Winsock 控件复制到指定目录下)
Put #FileNum, , TempFile
Close #FileNum

注释:Shell "regsvr32 " & TempDir & "\nsck.ocx ", vbNormalFocus 注释:注册控件,有弹出对话框
Shell "regsvr32 " & TempDir & "\nsck.ocx /s", vbNormalFocus 注释:注册控件,无弹出对话框

MsgBox "注册成功,现在本程序可正常运行了!!", vbOKOnly, "注册控件"

Unload Me
End Sub

Public Function GetWinSysDir() 注释:定义读取Winddows\System 的所在目录的函数
Dim S As String, Length As Long
S = String(MAX_PATH, 0) 注释:赋值
Length = GetSystemDirectory(S, MAX_PATH) 注释:S为取得目录,MAX_PATH 为长度
S = Left(S, InStr(S, Chr(0)) - 1) 注释:去掉多余的空格
GetWinSysDir = S
End Function
注释:补充:S 和 MAX_PATH 的值是可以随便赋的,
注释:如: Dim S As String * 20
注释: Length = GetSystemDirectory(S, 20)
3、补充说明
在用 VB6.0 保存上述两个程序后,请再使用 VB5.0 重新打开这两个程序,并编译为主程序.EXE、注册文件.EXE。(用 VB5.0 编译的程序,在 Win98、2000 下不需要任何 DLL 文件)
程序运行
4、程序运行
将主程序.EXE、注册文件.EXE两个文件,复制到任意机器上,先运行注册文件.EXE注册第三方的控件,再运行主程序.EXE,就不会有任何的错误了,一个变通的“绿色”软件就完成了。
三、 直接播放EXE文件中的声音文件
使用资源文件,可以直接在在EXE文件中播放声音文件(WAV文件),使程序显得更加专业。
⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”
⑵在 VB 资源编辑器窗口中,点击“添加自定义资料”,增加任意的 WAV 文件,再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下:
类型: "WAVE"
标识号: 102
语言: 中文(中国)
⑶保存资源文件,写如下代码:
Option Explicit
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Public Const SND_ASYNC = &H1&
Public Const SND_MEMORY = &H4&
Private Sub Command5_Click() 注释:播放 WAV 文件
Dim bArr() As Byte
bArr = LoadResData(102, "WAVE")
sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY
End Sub
⑷按 F5 运行本程序,点击 Command 按钮,就可以听到你选定的 WAV 文件的声音了。
四、 直接调用各类图标、光标图片
在一个程序中,我们可能需要调用多个图标、光标、图片文件,一般来说我们主要是使用 ImageList 控件,不过其时使用资源文件是最好的方法(可以少使用一个控件呀)。
⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”
⑵在 VB 资源编辑器窗口中,点击“添加光标”,“添加图标”,“添加位图”,装载所需要的文件。
⑶程序代码如下:
Me.Icon = LoadResPicture(101, vbResIcon) 注释:加载图标
Picture1.Picture = LoadResPicture(101, vbResBitmap) 注释:加载位图
Command1.MouseIcon = LoadResPicture(101, vbResCursor) 注释:加载光标
五、到此为此资源文件的多种使用技巧全部介绍完毕,希望这些技巧对大家的编程有帮助,上述程序全部在 Win98、VB5.0或6.0下运行通过

---------------------------------------------------

对“如何制作和利用资源文件”的补充

“一、 开发中英(简、繁)双版本”的方法可以使用,更简单实用的方法:

把不同语言文字放在同一个标识号ID对应的不同字符串表格中即可.
VB 会自动实现多种语言转换!

本文来自CSDN博客,转载请标明出处:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 女方起诉离婚男方几天能收到传票 用相亲相爱造句 伴娘,伴郎,主婚人,证婚人用英语怎么说 用get married to sb造句和汉意 伤口结痂脱落十天了 用遮瑕膏暂时遮盖几天 有影响吗?。 中国平安哪个岗位发展前景好 好多人都说angelababy改年龄了,是真的吗 遮暇霜对遮盖疤痕有作用吗?对皮肤有害吗?一般在哪里买的到? 怎样不让数字伸出表格 请问在同一无线网络下小米电视怎样连接电脑?“请输入服务器正确的用户名... ...电脑资源,总是显示“请输入服务器正确的用户名和密码”,是什么原因... 提交离婚诉讼多久能收到法院传票 考一级笔译的人平均年龄 特殊家长会观后感400字。急!!! “口水”一共几画? 初中数学三角形重点题型,中线的性质三角形周长求解,必须掌握! 口字组词再造句? 造句比如说你的口水好,还是你的口水了 口水造句我爱你造句麻烦快点儿,教我 初中数学三角形专题,两内角角平分线形成的角与三角形的角的关系 vb 开发ocx 平时在涂完隔离霜再涂遮瑕膏,常常用遮瑕膏会不会对皮肤不好啊,我用遮瑕膏来遮住黑眼圈和痘疤还有一点点 籍长八尺余,力能扛鼎,才气过人,虽吴中子弟,皆已惮籍矣。拜托了各位 谢... 钱大妈采购部联系电话 cs狙击枪怎么变十字准星 cs1.5不开镜怎样给AWP调出十字准星? 遮瑕膏能不能遮住疤痕?脸上有一个一厘米不到的很细小的疤痕,红红的,可不可以用遮瑕膏遮住?如果可以的 求弘扬传统文化 传承家庭美德的原创诗词 罗斯蒙特的温变和西门子比谁更好 罗斯蒙特的温度变送器什么型号既能用k性热电偶又能用pt100热电阻测温度... 上联好家风弘扬家庭美德下联孝行为什么? 请教一下高人,罗斯蒙特的温度变送器有没有安装的要求啊?具体的都有什么... 罗斯蒙特 温度变送器 罗斯蒙特248温度变送器模块是防爆还是非防爆的? 修电脑说主板坏了可信吗-电脑主板为什么会突然坏掉 电脑维修店的人都会不会修主板的啊?? 我在酷狗音乐里设置边听边存, 音乐缓存完之后本地音乐里没有, 我就 given leave by造句并翻译 谁能帮我回答几个英语问题,请根据你的理解回答,万分感谢,(不要用机器... 英语句子分析和翻译