Option Explicit

原创 2007年10月16日 00:52:00

Option Explicit

Public Const WM_USER = &H400
Public Const EM_EXGETSEL = WM_USER + 52

Public Const EM_LINEFROMCHAR = &HC9
Public Const EM_LINEINDEX = &HBB
Public Const EM_GETSEL = &HB0

Public Type CHARRANGE
    cpMin As Long
    cpMax As Long
End Type

Public Type POINTAPI
        x As Long
        y As Long
End Type

Public Declare Function SendMessage Lib "user32" Alias _
        "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As _
        Long, ByVal wParam As Long, lParam As Any) As Long

Public Declare Sub CopyMemory Lib "kernel32" Alias _
        "RtlMoveMemory" (pDst As Any, pSrc As Any, _
        ByVal ByteLen As Long)


'取得光标所在的行和列
Public Function GetCurPos(ByRef TextControl As Control) As POINTAPI
    Dim LineIndex As Long
    Dim SelRange As CHARRANGE
    Dim TempStr As String
    Dim TempArray() As Byte
    Dim CurRow As Long
    Dim CurPos As POINTAPI

    TempArray = StrConv(TextControl.Text, vbFromUnicode)

    '取得当前被选中文本的位置 适用于 RichTextBox
    'TextControl 用 EM_GETSEL 消息
    Call SendMessage(TextControl.hWnd, EM_EXGETSEL, 0, SelRange)

    '根据参数wParam指定的字符位置返回该字符所在的行号
    CurRow = SendMessage(TextControl.hWnd, EM_LINEFROMCHAR, SelRange.cpMin, 0)

    '取得指定行第一个字符的位置
    LineIndex = SendMessage(TextControl.hWnd, EM_LINEINDEX, CurRow, 0)

    If SelRange.cpMin = LineIndex Then
        GetCurPos.x = 1
    Else

        TempStr = String(SelRange.cpMin - LineIndex, 13)

        '复制当前行开始到选择文本开始的文本
        CopyMemory ByVal StrPtr(TempStr), ByVal StrPtr(TempArray) + LineIndex, SelRange.cpMin - LineIndex
        TempArray = TempStr

        '删除无用的信息
        ReDim Preserve TempArray(SelRange.cpMin - LineIndex - 1)

        '转换为 Unicode
        TempStr = StrConv(TempArray, vbUnicode)

        GetCurPos.x = Len(TempStr) + 1
    End If
    GetCurPos.y = CurRow + 1
End Function

 

从 Option Explicit 开始的零碎知识点(一)

这两天一直在围着 Visual Basic 转,敲了一些例子,记录了一些零碎的知识点,自己都觉得自己有点小幼稚,不过还好啦,至少没有放弃!      Option Explicit '定义变量X D...
  • u010282984
  • u010282984
  • 2016-01-26 22:13:47
  • 914

Option Explicit语句的重要性

本文章摘自《VBScript程序员参考手册》第81-82页   尽管这三个变量都没有显式的生命,但VBScript并不在意。这段代码能正常的执行,最终会出现一个对话框并显示数字3。这似乎...
  • tiantuanzi
  • tiantuanzi
  • 2015-10-14 17:11:21
  • 1090

asp中,option explicit的作用

在asp中,option explicit的作用是检查未定义的变量。意思是当你使用一个未定义的变量时,asp编译时就会报错。    (option exiplicit只能放在asp代码的最前面。...
  • wkj001
  • wkj001
  • 2016-12-04 10:15:39
  • 446

VBA中Option的四种用法

下面的内容出处于:VBA标准模块与类模块中的部分,这里仅仅为了作者查找的方便.  1、Option Explicit。当使用Option Explicit时,必须在模块中的所有过程声明每一个变量,否则...
  • hello_wyq
  • hello_wyq
  • 2008-07-03 17:31:00
  • 3729

Option Explicit On 和Option Strict Off

VB.NET中的Option Explicit  和 Option Strict是针对编译器的语句。作为程序员总是想在程序编译期时候发现程序的错误,而不愿在运行期来发现。当一个程序成功编译以后,你可能...
  • u010052030
  • u010052030
  • 2013-10-03 15:00:16
  • 1784

从 Option Explicit 开始的零碎知识点(二)

每次开始敲一页代码的时候,经常会遇到“定义”这个东西 Option Explicit,今天在写程序的时候碰到了一个不需要“Option Explicit”直接定义的,如下: Option Expl...
  • u010282984
  • u010282984
  • 2016-01-27 21:56:44
  • 577

<% Option Explicit %>

中文名 Option Explicit 应    用 模块级别 位    置 模块的所有过程之前 领    域 程序设计 Option Explicit 语...
  • wkj001
  • wkj001
  • 2016-11-02 15:05:09
  • 90

option explicit

  • 2014年10月25日 13:00
  • 78KB
  • 下载

致新手:用VB6解决一些有趣的问题(三)

屏幕保护 循环显示某个文件夹的图片设置Form1 BorderSytyle属性为0添加FileListBox 取名File1  添加一个Timer 取名Timer1使用如下代码 Option Expl...
  • prsniper
  • prsniper
  • 2010-04-06 10:30:00
  • 1897

多用户登录窗口

  • 2011年10月13日 22:13
  • 2KB
  • 下载
收藏助手
不良信息举报
您举报文章:Option Explicit
举报原因:
原因补充:

(最多只允许输入30个字)