博文

在RichTextBox 控件中实现上、下标形式(2005-10-12 20:37:00)

摘要:在RichTextBox 控件中实现上、下标形式   VB提供了一个优秀的控件RichTextBox,我们可以在其中实现文本的各种编辑方式。下面的程序是在RichTextBox 控件中实现上标和下标的形式,主要是使作为上、下标的字符的尺寸小一些,位置在基线上下浮动。程序利用属性SelCharOffset,由它确定RichTextBox 控件中的文本是出现在基线上(正常状态),当SelCharOffset >0 时,文本出现在基线之上,成为上标形式;   当SelCharOffset< 0 时,文本出现在基线之下,成为下标形式。   该属性在设计时无效。   在表单的Load事件中添加以下代码:   Private Sub Form_Load()   RichTextBox1.Font.Name = "Times New Roman"   RichTextBox1.Font.Size = 10   RichTextBox1.Text = "H2SO4"   " Move the numbers down 2 points.   OffsetRichText RichTextBox1, 1, 1, 2   OffsetRichText RichTextBox1, 4, 1, -2   End Sub   Private Sub OffsetRichText(box As RichTextBox, start As Integer,   length As Integer,   offset As Integer)   "box指RichTextBox控件;start指作为上下标的   "字符的起始位置;length指上下标字符的长度;   "offset指上标还是下标,大于0上标;小于0下标。   box.SelStart = start   box.SelLength = length   box.SelFontSize = box.Font.Size -abs(offset)   box.SelCharOffset = ScaleY(offset,vbPoints, vbTwips)   box.SelStart = 0   box.SelLength = 0   End Sub   上述程......

阅读全文(2910) | 评论:0

Visual Basic6编程中的汉字处理(2005-10-12 20:36:00)

摘要:Visual Basic6编程中的汉字处理
                  作者:unknown 更新时间: 2005-05-02  
                  
                          在DOS时代,拥有一个华丽的汉字菜单几乎是每个高档中文应用程序必须的包装。中文Windows操作系统的出现使得高级开发平台实现全中文的提示和界面非常容易和方便。在一般的应用程序中已经很少需要去专门考虑汉字处理的问题。                           但是在许多工程控制和字符串处理的环境中,汉字字符的处理仍然有别于西文字符的处理,需要加以专门的考虑。
                          一、VB6对汉字处理的支持
                  ......

阅读全文(2626) | 评论:0

KeyCode常数一览表(2005-10-12 20:35:00)

摘要: KeyCode常数用法 日期:2005年1月13日 作者:-=不详=- 人气: 270 人   可在代码中的任何地方用下列常数代替实际值: 常数 值 描述 vbKeyLButton 0x1 鼠标左键
vbKeyRButton 0x2 鼠标右键
vbKeyCancel 0x3 CANCEL 键
vbKeyMButton 0x4 鼠标中键
vbKeyBack 0x8 BACKSPACE 键
vbKeyTab 0x9 TAB 键
vbKeyClear 0xC CLEAR 键
vbKeyReturn 0xD ENTER 键
vbKeyShift 0x10 SHIFT 键
vbKeyControl 0x11 CTRL 键
vbKeyMenu 0x12 MENU 键
vbKeyPause 0x13 PAUSE 键
vbKeyCapital 0x14 CAPS LOCK 键
vbKeyEscape 0x1B ESC 键
vbKeySpace 0x20 SPACEBAR 键
vbKeyPageUp 0x21 PAGE UP 键
vbKeyPageDown 0x22 PAGE DOWN 键
vbKeyEnd 0x23 END 键
vbKeyHome 0x24 HOME 键
vbKeyLeft 0x25 LEFT ARROW 键
vbKeyUp 0x26 UP ARROW 键
vbKeyRight 0x27 RIGHT ARROW 键
vbKeyDown 0x28 DOWN ARROW 键
vbKeySelect 0x29 SELECT 键
vbKeyPrint 0x2A PRINT SCREEN 键
vbKeyExecute 0x2B EXECUTE 键
vbKeySnapshot 0x2C SNAPSHOT 键
vbKeyInsert 0x2D INSERT 键
vbKeyDelete 0x2E DELETE 键
vbKeyHelp 0x2F HELP 键
vbKeyNumlock 0x90 NUM LOCK 键
A 至 Z 键......

阅读全文(3857) | 评论:0

用VB编写键盘拦截程序(2005-10-12 20:33:00)

摘要: 用VB编写键盘拦截程序 日期:2005年1月13日 作者:-=不详=- 人气: 1138 人   我们知道,在一些程序中,有一些快捷方式(如:Shift键最小化、ESC键退出、Ctrl+S存盘、Alt+x退出等等)。以前有一些介绍使用Win32 API可以做到,但过于繁琐,其实VB本身已经给我们提供了这个功能。
  我们来新建一个窗体Form1,对于键盘操作可以看到有三个事件KeyPress(),KeyDown和KeyUp,下面我对它们分别介绍:
  KeyPress()事件是当用户按下和松开一个 ANSI 键时发生(ANSI是可见ASCII字符1-127)。
  语法
  Private Sub object_KeyPress([index As Integer,]keyascii As Integer)
  KeyPress 事件语法包含下列部分:
   部分 描述
  object 一个对象表达式,其值是“应用于”列表中的一个对象。
  index 一个整数,它用来唯一标识一个在控件数组中的控件(仅有控件数组时才有)。
  keyascii 是返回一个标准数字 ANSI 键代码的整数。Keyascii 通过引用传递,对它进行改变可给对象
  发送一个不同的字符。将 keyascii 改变为 0 时可取消击键,这样一来对象便接收不到字符。
  说明
  具有焦点的对象接收该事件。一个窗体仅在KeyPreview 属性被设置为 True 时才能接收该事件。一个 KeyPress 事件可以引用任何可打印的键盘字符,一个来自标准字母表的字符或少数几个特殊字符之一的字符与 CTRL 键的组合,以及 ENTER 或BACKSPACE键。KeyPress()事件过程在截取 TextBox 或 ComboBox 控件所输入的击键时是非常有用的。它可立即测试击键的有效性或在字符输入时对其进行格式处理。改变 keyascii 参数的值会改变所显示的字符。
  可使用下列表达式将 keyascii 参数转变为一个字符:
  Chr(KeyAscii)
  然后执行字符串操作,并将该字符反译成一个控件可通过该表达式解释的 ANSI 数......

阅读全文(1882) | 评论:0

开发通信软件的技术与技巧(2005-10-11 21:42:00)

摘要:开发通信软件的技术与技巧



国防大学图书馆技术室 王渤

【提要】随着计算机应用领域的不断扩展,计算机之间的远程通信用得也越来越广泛,计算机间的远程通信所使用的通信软件,在市面上可以买到,但是通用的通信软件虽然能发送和接收文件,在许方情况下这些通信软件并不能满足实际工作的需要。本文就这一技术进行了探讨,介绍了有关的知识和技术,并由实例分步骤说明如何进行通信软件的开发。

一、前言
  本文将以VB5.0所带的通信控件MSCOMM进行通信软件的开发,它有约30个属性和事件(可以从联机帮助中找到其使用资料)。本文简述它的主要属性及事件,并归类整理。
利用串行端口与调制解调器进行连接时,对于用MSCOMM控件编制通信软件来说,只需了解以下五根线的代号及作用。以下五根线的高电平/低电平状态分别对应MScomm控件的相应属性的True/False值。
  (1)DTR线:PC发往MODEM,表示PC机是否已准备好。
  (2)RTS线:PC发往MODEM,表示PC机是否允许modem发回数据.
  (3)DSR线:MODEM发往PC,表示MODEM是否已做好操作准备
  (4)CTS线:MODEM发往PC,表示MODEM是否允许发送数据
(5)CD线:MODEM发往PC,表示MOEDM已经与呼叫的远方MODEM处于连结状态

二、MSCOMM控件的属性
属性

作用
CommPort
用1,2,...表示串口COM1,COM2....
设置或返回联接MODEM的串口的编号
Settings
例用"19200,N,8,1"表示传输速率为19200bps,没有奇偶校验位,8位数据位,1位停止位。
设置或返回通信参数。
Handshaking
0没有握手协议,不考虑流量控制。
1XON/XOFF,即在数据流中嵌如控制苻来进行流控。
2RTS/CTS,既由信号线RTS/CTS自动进行流量控制(常用)。
3两者皆可。
设置或返回硬件握手协议,指的是PC机MODEM之间为了控制流速而约定的内部协议。
PortOpen
True......

阅读全文(2744) | 评论:0

VB千里行-操作Word与Excel(2005-10-11 21:41:00)

摘要:本文将告诉你如何使用VB代码连接Office应用程序,并简要接触一下在文件中输入数据的方法。实际上,在VB中用代码与Word和Excel进行会话并控制它们,是可行的。但是请注意,首先需要在机器上安装office应用程序,才能在VB代码中存取它们的对象。    下面就是一些例子,告诉你如何与这些程序会话,并控制它们。 Option Explicit Dim xlsApp As Excel.Application Dim wrdApp As Word.Application    只要相关的对象库已经被选择,在应用程序中进行对象变量的赋值是可能的。Microsoft Excel 8.0对象库是相对于Excel的,而 Microsoft Word 8.0 对象库是为Word服务的。    在VB的IDE环境中,从“工程”菜单中选择“引用”,可以看到系统可用的所有库列表。Private Sub Command1_Click() Set xlsApp = Excel.Application With xlsApp 'Show Excel .Visible = True 'Create a new workbook .Workbooks.Add 'Put text in to the cell that is selected .ActiveCell.Value = "Hi" 'Put text into A3 regardless of the selected cell .Range("A3").Value = "This is an example of connecting to Excel" End With End Sub    在上面的程序段中,我们在变量xlsApp中建立了一个对象,这样Excel就对用户可见了。当Excel象这样启动后,并不包含一个工作簿,所以必须创建或者执行打开操作。这里,我们建立了一个新的工作簿,然后,就可以操作其中的信息,或者打印,或者保存,或者你任意想做的事情。Private Sub Command2_Click() 'cl......

阅读全文(2629) | 评论:1

用VB为软件增加注册功能(2005-10-11 21:37:00)

摘要:  用VB为软件增加注册功能 http://www.tongyi.net  作者:郭瑞刚   出处:china.com    点击:459   在尊重软件著作权的时代,电子注册版软件的应用也越来越广。它的出现使用户对程序中未受限制的功能有了一定了解,起到了推广和传播作用,同时也很好地保护了制作人的切身利益。那么,我们如何制作一个电子注册版软件呢? 

  经过摸索,笔者利用VB也简单地制作了一个电子注册版软件。 

  设计原理 
  利用API中的“GetVolumeInformation”函数提取使用者机器的硬盘序列号为特征码,注册时提交此码,经过软件著作权人加以运算,给出注册码,最后软件使用人输入注册码完成整个注册过程(为使说明简单,本例中以特征码减101做为注册码)。 

  新建一模块文件 
  新建一模块文件,并将如下声明的语句和常量添加到Module1.Bas模块中: 

  Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" 

  (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal 

  nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As 

  Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer......

阅读全文(3913) | 评论:0

使用 VB 编写自动反安装的程序(2005-10-11 21:35:00)

摘要: 如何使用 VB 编写自动反安装的程序? 如果您安装了某一个软件之后,想要反安装,您有二个方法:
1、打开【控制面板】中的【添加删除新程序】,选择该软件來反安装。
2、选择【开始】【程序集】中软件所产生的程序組中的反安装。

上面的第一种方法,您不需要作任何处理,一般软件在安装完后,都会在【控制面板】中的【添加删除新程序】多一个该软件的选项。而第二种方法,就必须要我们编写程序來解决了!

假设,今天我们编写了一个程序叫 Test,当您完成 Test.exe 之后,您必须再多编写一个自动反安装的程序,我们將文件名称设为 unTest.exe(先不要管如何编写,后面会說明)。二支程序都完成后,您使用 VB 提供的应用程序安装向导(Application Setup Wizard) 來制作安装程序時,必须额外再加入 unTest.exe!

加入 unTest.exe 之后,使用者安装后,安装程序並不会在【开始】【程序集】中该系統所产生的程序組【Test】中加入这个自动反安装程序 unTest.exe 的捷径,安装程序只会將unTest.exe 连同 Test.exe 一起复制到应用程序的目录中而已!所以如果您想产生unTest.exe 的捷径,您可能需要稍微修改一下 VB 提供的应用程序安装向导程序!

以下我们就实际來看看 unTest.exe 程序如何编写:

在 VB 中建立一个新文档,取名为 unTest.vbp,表单为 unTest.frm,不需要任何控制项,在表单中加入以下程序代码:

Private Declare Function GetWindowsDirectory Lib "kernel32" _
Alias "GetWindowsDirectoryA" _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Sub Form_Load()
On Error Goto BaddUn
Dim X&
Dim buffer As String * 128
Dim UnStr As String
Dim size As ......

阅读全文(6237) | 评论:0

怎样在VB中控制WORD     (2005-10-11 21:30:00)

摘要:使用VB编程时,有时需要调用Microsoft Word对文字进行编辑、排版及输出。为实现这种调用,可以使用Shell函数、OLE自动化、在包容器中嵌入Word对象等方法。经过试用和比较,总结出了这几种方法的各自特点。

 

1 使用Shell函数直接调用

    语法:Shell (pathname[,windowstyle]).Pathname是指要执行的程序的名字和任何必须的参数或命令行开关,可以包括目录和驱动器名;Windowstyle是执行程序的窗口风格的数字。

    使用Shell调用Word比较简单,编程量小,但必须明确指定Word所在路径,这不利于移植,而且,不能对Word进行控制,不利于程序和Word之间的数据交换。

 

2 使用OLE自动化控制Microsoft Word

    2.1 使用方法

    (1)Word为OLE自动化提供一种称为“Basic”的对象,要在VB中控制Word ,首先要定义一个引用Word中“Basic”对象的对象变量:Dim Wordobj as Object

    (2)将Word 中的“Basic”对象赋给该对象:Set Wordobj=CreateObject("Word.Basic")

    (3)可以使用大多数WordBasic语句和函数控制Word或Word文档,使用方法和在Word宏中使用WordBasic指令的方法基本相同。

    (4)关闭Word:Set Wordobj =Nothing。

    注意:“Basic”对象不支持关闭它自己的一个方法。即若在OLE自动化中关闭......

阅读全文(2021) | 评论:0

Winsock错误代码一览表(2005-10-11 21:29:00)

摘要:常  量

说  明

sckOutOfMemory 7 内存不足
sckInvalidPropertyValue 380 属性值不效
sckGetNotSupported 394 属性不可读
sckGetNotSupported 383 属性是只读的
sckBadState 40006 所请求的事务或请求本身的错误协议或者错误连接状态
sckInvalidArg 40014 传递给函数的参数格式不确定,或者不在指定范围内
sckSuccess 40017 成功
sckUnsupported 40018 不支持的变量类型
sckInvalidOp 40020 在当前状态下的无效操作
sckOutOfRange 40021 参数越界
sckWrongProtocol 40026 所请求的事务或请求本身的错误协议
sckOpCanceled 10004 取消操作
sckInvalidArgument 10014 所请求的地址是广播地址,但未设置标记
sckWouldBlock 10035 套接字不成块,而指定操作将使之成块
sckInProgress 10036 制造块的Winsock操作在进行之中
sckAlreadyComplete 10037 完成操作。未进行制作块的操作
sckNotSocket 10038 描述符不是套接字
sckMsgTooBig 10040 数据太大,不适于缓冲区的要求,因而被截断
sckPortNotSupported 10043 不支持指定的端口
sckAddressInUse 10048 地址在使用中
sckAddressNotAvailable 10049 来自本地机器的不可用地址
sckNetworkSubsystemFailed 10050 网络子系统失败
sckNetworkUnreachable 10051 当前不能从主机到达网络
sckNetReset 10052 在设置SO_KEEPALIVE时连接超时
sckConnectAborted 10053 由于超时或者其它......

阅读全文(2467) | 评论:0