博文

如何在VB.NET中创建Windows应用程序之一  (2005-09-27 13:20:00)

摘要: 如何在VB.NET中创建Windows应用程序之一 作者:苦丁 发文时间:2005.07.26 对于一个Visual Basic程序员来说,创建的每一个应用程序都是胖客户端的。Web开发从来不是VB的目的,VB专注于开发具有Windows用户界面的单机或C/S结构应用程序,使得VB语言和其窗体引擎得到紧密的结合。在VB6中没有必要区分语言和创建界面的工具,但是在.NET中却是非常有必要的。

在VB.NET中,创建"标准"windows 应用程序的技术是.NET框架的一部分,在任何其它.NET语言中也都可以实现,这是和原先有着巨大改变的。在以下几个部分中,在详细讨论VB.NET中新的窗体技术如何工作。

崭新的Windows 窗体模型

在.NET中的窗体改变了在VB6中的窗体模型,窗体不再是一个专门的文件。编辑窗体或窗体上的控件的属性会产生与你在代码里设置属性一样的真正的VB.NET代码,下面我们通过一个例子来剖析一下VB.NET的新窗体设计器的特点,并看一下通过可视化的编辑所产生的代码。

让我们来看一下窗体Form1的代码,你可以看到这个窗体中的按钮的点击处理程序和一个被称作Windows Form Designer generated code的区域,如下图所示:



在这个区域里,你会看到几个关键的元素:

一个窗体的构造器(constructor)(a Sub New())

一个释放(Dispose)程序

窗体中所有控件的声明

一个名为InitializeComponent的子程序

构造器和释放程序与VB6中的Class_Initialize和Class_Terminate事件基本等效。设计器所产生的代码的实质是其他两部分-控件声明的列表和InitializeComponent程序。看一下创建这个简单的例子所产生的代码。如下:

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the......

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

个老问题:搜索文件(包含子目录名) (2005-09-26 13:01:00)

摘要: 一个老问题:搜索文件(包含子目录名) 
 
  '这个问题我在论坛发过帖子
'现在这个帖子找不到了
'这是重新优化过的过程
'CALL absolute 过程是由QB45提供的
'这个过程能够搜索到当前路径下的所有文件名及子目录名(不管文件什么属性)
'如果在根目录,也能够获得分区的卷标名

DEFINT A-Z
FUNCTION Dirs$ (Path AS STRING, Attr AS INTEGER, Size as LONG)
'******************************************************
'  搜索目录下的所有文件和文件夹,适用7.1和4.5版本
'  Attr位 8=卷标 16=目录 其他为文件
'  第一次调用时Path为要搜索的路径,第二次调用时Path请置空
'  返回:Attr=文件属性  Size=文件长度
'******************************************************
STATIC Lc AS INTEGER
STATIC ErrCode AS INTEGER
STATIC FileDATA AS STRING * 44
STATIC FirstCode AS STRING * 28
STATIC NextCode AS STRING * 18
STATIC FileName AS STRING * 64
IF Lc = 0 THEN
      Lc = 1
      DIM AsmCode AS STRING * 12
      '=====================================================......

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

文件操作的实际应用,有原代码(2005-09-26 13:00:00)

摘要: 文件操作的实际应用,有原代码
 
  们来做个文件分割程序
这个程序网上遍地都是,所以我们就从这个简单的东西入手
不要说已经有了就不用做,关键是你没有,你没有做过!
通过做这个程序来锻炼一下自己!


用途:一个文件太大,用u盘装不下,或者上传时有的对大小有限制,总而言之,这个东西有用才有人做!

前期准备:把一个文件分成规定的大小,在这里可以自定义每个分割的大小,也可以规定分割
的份数,在这里我们要学习一下有关文件操作相关的语句
我体会,文件这一章放在后面讲,并不是因为它难,我在真正开始做的时候就是从
文件这个开始的,一个学dos编程的人必须对dos系统有所了解,一定要对路径这个概论
很清楚,目前微软的操作系统在文件的管理上都是这个东西!
(1).OPEN 语句
格式:OPEN <文件名> FOR <读写方式> AS#<文件号>
<读写方式>:
这里我们只用二进制方式BINARY
<文件号>:即文件缓冲区号,每一个文件都要指定一个不同的文件号(1~225);
说明:
以BINARY方式打开已存在的文件,指针指向首记录;
(2)CLOSE语句
关闭已用的文件
CLOSE [#<文件号1>][,#<文件号2>]……
关闭由文件号指定的文件缓冲区,将内容存盘,如不指定文件号,则关闭所有已打开的文件;
(3)、GET#语句
格式:GET #<文件号> [,<地址>][,<记录变量>]
功能: 用于从文件中读一个指定地址的记录,赋给一个记录变量。
(4)、PUT#语句
格式:PUT #<文件号> [,<地址>][,<记录变量>]
功能: 将一个记录变量的内容写到指定地址的记录中去
(5)SEEK语句
格式:SEEK#<文件号>,<字节位置>
把指针移动指定地方
(6)LOF语句
格式:LOF<......

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

该模块用于打印(2005-09-25 22:55:00)

摘要:Option Explicit

'该模块用于协调打印机 和打印预览控件
'使预览结果和打印结果一样
',从别处复制又修改过的,可能有错误
'

Private Type BITMAPINFOHEADER_TYPE
    biSize As Long
    biWidth As Long
    biHeight As Long
    biPlanes As Long
    biBitCount As Long
    biCompression As Long
    biSizeImage As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed As Long
    biClrImportant As Long
    bmiColors As String * 1024
End Type

Private Type BITMAPINFO_TYPE
    BitmapInfoHeader As BITMAPINFOHEADER_TYPE
    bmiColors As String * 1024
End Type

' Enter each of the following Declare statements as one, single line:

Private Declar......

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

''快速排序(2005-09-25 22:51:00)

摘要:'快速排序
Public Function QuickSortASC(vData As Variant, Low As Long, Hi As Long) As Boolean
   If Not IsArray(vData) Then Exit Function
  
   Dim lTmpLow As Long
   Dim lTmpHi As Long
   Dim lTmpMid As Long
   Dim vTempVal As Long
   Dim vTmpHold As Long
   On Error GoTo QuickSort
   QuickSortASC = False
  
   lTmpLow = Low
   lTmpHi = Hi
  
   If Hi <= Low Then Exit Function
  
   If lTmpMid = 0 Then
      lTmpMid = (Low + Hi) \ 2
   End If
  
   vTempVal = vData(lTmpMid)
  
   Do While (lTmpLow <= lTmpHi)
    
      Do While (vData(lTmpLow) < vTempVal And lTmpLow < Hi)
        ......

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

vb玩转windows(2005-09-25 22:48:00)

摘要:这是我最近作为练习时写的一些东东,也算是一些经验和技巧。主要是CWinApp.Cls、CWindows.Cls和WinAppModule.Bas。以上三者共同协作,使你方便地在VB中处理
各种各样的消息,子类化窗口,很容易就能屏蔽掉消息。希望它能为大家提供方便。
也很希望大家指正错误之处,谢谢大家。另外有一些声明是多余的。这是因为有些东西我以后还会在添加的,所以没有清理。如果你认为不必要,大可把它删掉。
************************WinAppModule.Bas************************* Option Explicit '-------------------------------------------------------------------------------
'******************************** WinAppModule *********************************
'-------------------------------------------------------------------------------
'    作者:无影无踪
'    时间:2003年5月14日
'-------------------------------------------------------------------------------
'    WinAppModule主要为CWinApp提供一些最原始的服务(RawWndProc)。唯一用户
'    必须调用的是InitApp,并且必须在使用CWinApp和CWindow之前。
'--------------------------------------------------------------------------------
'---------------------------------------------------------------------------......

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

自绘弹出式菜单(2005-09-25 22:46:00)

摘要: 近日见到广大的爱好者对菜单或各个控件的样式和效果产生很多的问题,于是就把自己所写的菜单类加上大量的注释,希望帮助大家能明白到其实各种多姿多彩的控件究竟是怎样生成的,其实最主要的就是把控件标志为自绘就行了然后就到自己绘制这个控件,而可以定为“自绘”的控件有LISTBOX,TEXT,LABEL,LISTVIEW,TAB,MENU等等,而且自要学会了自绘菜单的话要完成像OUTLOOK那样的界面就马上变得一点难度都没有了(其实也还是有一点点的)好了废话小说现在就开始自绘的旅程吧    

__________________
欢迎交流,QQ:234693669 群:9891420,18小时OnLine
返回页首   UpU@Com
版主


VB技巧 版主

注册时间: 2003-12-20
来自: China
在线状态: 离线
发贴数: 457 发表于: 2004-07-27 at 22:53 | IP已记录 标准模块里:Option Explicit
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function D......

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

''XOR加密/解密函数(2005-09-25 22:43:00)

摘要:Option Explicit Private Const strEncryption As String = "Wa7kao19Oh54My256God!" 'XOR加密/解密函数
Public Function XOREncryption(strDataIn As String, Optional ByVal strCodeKey As String = "") As String
   Dim lonDataPtr As Long
   Dim intXORValue1 As Integer
   Dim intXORValue2 As Integer
   Dim strDataOut As String
  
   If Len(strCodeKey) < 2 Then
      strCodeKey = strEncryption
   End If
  
   Mid(strCodeKey, 2, 1) = Asc(Chr(1))
  
   For lonDataPtr = 1 To Len(strDataIn)
  
      '第一个XOR的值来自加密字符串
      intXORValue1 = Asc(Mid$(strDataIn, lonDataPtr, 1))
     
      '第二个XOR的值来自需要加密的数据(字符串)
      intXORValue2 = Asc(Mid$(strCodeKey, ((lonDataPtr Mod Len(strCodeK......

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

VB实现窗口的弹出式菜单 (2005-09-25 22:42:00)

摘要: VB实现窗口的弹出式菜单   在Windows95、Windows98或NT的风格中,有按动鼠标器右键弹出下拉菜单的操作,在VB执行环境下,有一些 控件本身具有弹下拉菜单的功能,如TexTbox控件等,但大多数编辑类控件以及窗体本身却没有此功能,要在窗口中任意位置实现 PopUpMenu(弹出式菜单),可借助VB的菜单工具来实现。   首先,打开VB的“工具”菜单条,利用“菜单编辑器”为窗体生成一个菜单:   标题(Caption) 菜单条名(Name)   编辑 menuEdit   ……复制 mnuCopy   ……剪切 munCut   其次,将生成的menuEdit菜单设置为不可视。   Private Sub Form_Load()   Me.menuEdit.Visibe=False   'menuEdit菜单设置为不可视   End Sub   然后,利用MouseDown事件实现任意位置弹出PopUpMenu,如下例:   本例中以RichTexBox控件为例,在其上面实现复制、剪切功能。   1.复制功能的实现。   Private Sub MnuCopy_Click()   Clipboar.Clear'将剪贴板清空   '将RichTexBox控件上选择上的内容复制到剪贴板   Clipboard.SetTextRichTexBox1.SelText   End Sub   2.剪切功能的实现。   Private Sub MnuCut_Click()   Clipboard.Clear '将剪贴板清空   '将RichTextBox控件上选择了的内容复制到剪贴板   Clipboard.SetTextRichBox1.SelText   '将RichTexBox控件上选择了的内容删除   SendKeys"{DELETE}",True   End Sub   3.在RichTexBox控件的MouseDown事件中实现任意位置弹出PopUPMenu。   OPrivate Sub RichTexBox1_MouseDown(Button As Integer,Shift As Integer,x As Si......

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

vb菜单(2005-09-25 22:40:00)

摘要:一、菜单类模块
'========================================================================================
' Alarm Clock 1.05
' 版权所有(C) 2001-2002  江建及其两位女友
' 本代码摘自我的 Alarm Clock
' Alarm Clock 下载地址:http://h.7i24.com/vbcc/work/setup.exe
'=======================================================================================
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
' 本程序可以看看 MSDN
' 我建议大家参照 MSDN 然后自己写不要直接拷贝我的程序
' 因为这样你可能学不到东西。
' 用 VB 的集合来存储菜单的文字。(用API可以创建所有的菜单)
' 如果用物主绘图可以创建任何风格的菜单(Office 97, OICQ, Windows XP)
' (建议 从资源文件中创建菜单 你可以用 宝蓝的 Delphi 或 C++ 光盘中的
' Resource Workshop)来创建资源文件和对话框(以及基本的控件)
' 有那位能告诉我VB怎么从指针取结构的数据
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Private Declare Function CreateMenu Lib "user32" () As Long
Private Declare Function CreatePopupMenu Lib "user32" () As Long
Private Declare Function InsertMenuItem Lib "user32" Alias "InsertMenuItemA" (ByVal hMenu As Long, ByVal ......

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