你发个VB?

为什么第一次不出雪,处女是什么回事vVB根本E发v

健康咨询描述: 为什么第一次不出雪,处女是什么回事vVB根本E发vGV哥古古怪怪哈哈哈哈换个呵呵哈哈哈

朝阳县中心医院   副主任医师 擅长: 擅长子宫肌瘤、子宫内膜癌、子宫颈癌、子宫内膜异位症 帮助网友:34289称赞:2

微信扫一扫,随时问医生

      一般情况下,第一次性生活会出现处女膜破裂出血的情况。但是临床上也有第一次性生活不出血的情况,有的人先天性处女膜缺如。所以不能仅凭这一点来判断是否为处女。

济南市中西医结合医院   主治医师 擅长: 颈椎病,腰椎间盘突出,风湿类风湿性关节炎,强直性脊 帮助网友:4155

微信扫一扫,随时问医生

      当处女膜上血管分布少、性生活时裂伤浅,女生性器官发育良好,或者男生丁丁偏小时,处女膜出血就较少或不出血。而且有些女生处女膜弹性很好,伸展性强,虽经多次性生活仍然可能保持最初的模样,自然也不会出血。

沛县大屯镇中心卫生院   副主任医师 擅长: 脑梗后遗症,糖尿病后遗症,狂犬病预防,小儿麻痹症, 帮助网友:19889称赞:5

微信扫一扫,随时问医生

SendMessage函数的常用消息及其应用(有点长,希望能对大家有所帮助)

  其中四个参数的含义和说明如下:

  对象的句柄。希望将消息传送给哪个对象,就把该对象的句柄作为实参传送,在 VB 中可以简单地
柄。它是一个长整型数。Windows给每个控件一个编号,这个编号就称为窗口句柄。有了这个句柄,我们
就可告诉 Windows 我们要控制哪个控件,所以这个句柄在 API 调用中至关重要。VB 的大多数控件都包
括hwnd属性,如下拉框、TreeView等,窗体也有这个属性。但也有一些控件没有这个属性,如标签控件。
没有这个属性就无法利用Windows API函数,但可以节省系统资源。

  被发送的消息。根据具体需求和不同的对象,将不同的消息作为实参传送,以产生预期的动作。使
SendMessage 传递消息,大多是为了完成以下几个工作:
  ①设置控件的一些选项,象我们要使用的CB_SETDROPPEDWIDTH的就属于这种情况。尽管VB的每个控
件都提供了许多属性,但仍然有许多控件的选项没有包括在其中。而这些选项中的大多数都可以利用该
  ②获得控件的一些设置。同上一种情况相反,有时我们需要获得控件的一些设置,相当于读取属性。
例如,如果想知道一个下拉框的下拉部分的宽度是多少,就可以向控件发送CB_GETDROPPEDWIDTH消息。
对于这种情况,SendMessage函数的返回值就是结果。
  ③执行一定的操作。例如,我们要在下拉框中寻找是否有“ABC”这个字符串,当然,我们可以编写
一个循环,逐条比较看是否存在这样的字符串。如果使用API,我们只需要向下拉框发送CB_FINDSTRING
消息,这条消息就会自动进行查找工作并返回结果。
  ④模拟用户操作。我们有时希望模拟用户的操作,比如关闭其他应用程序的窗口。其实只要我们能知
道那个窗口的句柄,我们就可以发送WM_CLOSE消息给那个窗口,窗口接受到这条消息就会关闭,如同用户

  附加的消息信息。这两个是可选的参数,用来提供关于wMsg消息更多的信息,不同的wMsg可能使用这
两个参数中的0、1或2个,如果不需要哪个附加参数,则将实参赋为NULL(在VB中赋为0)。
  lParam定义为Any类型。指定 Any类型可禁止VB进行类型检查,从而允许将任意数据类型传递给该过
程。由于每条消息对参数的类型和传递方式的要求都不同:有的可能要求为Long型,有的可能要求为自定
义类型;大多数要求按传值方式传递,但也有一些要求按传地址方式。为了满足各种要求,我们将这个参
数定义为Any类型。比如,我们要传递一个Long型变量lData。如果消息要求传地址方式传递,可以使用:
  而如果要求传值方式传递,则使用
  如果传递常数,我们则需要使用类型后缀来指定常数的类型,比如"0&",表示Long型的常数0,如
  我们也可以使用类型转换函数CLng将常数指定为Long型,如CLng(0)。

SendMessage函数,lParam的使用是很灵活的,在一般情况下,lParam是一个指针,它指向的数据类型
有三种:长整形、自定义数据结构类型、字符串类型。对于前两种类型,需要将 lParam定义为 lParam
lParam As String,因为字符串类型数据不同,只有定义 ByVal,得到的才是字符串的指针,如果没有
ByVal,得到的将是指向字符串指针的指针。另外对于少数的消息来说,SendMessage 函数需要的只是

  当用户在编辑控件上进行各种操作时,其父窗口将收到 WM_COMMAND 通知消息,lParam带控件句柄
(hWnd),同时 wParam 的低16位带控件的 ID,高16位带有如下表的消息代码:

EM_CHARFROMPOS(&HD7=215),0, 取得编辑控件中指定位置的字符相对于文本头部的偏移量。使用本操作应先在第4个参数的高16位指定行号,低16位指定列号(或一个POINTAPI结构),行列是按编辑控件的客户区左上角为原点(0,0)计算的。如果指定的位置超出控件客户区则返回-1
EM_CANUNDO(&HC6=198),0,0   决定前一次编辑操作是否能够撤消:检测控件撤消缓冲区是否为空,通常控件把最后一次在控件的编辑操作保存在一个撤消缓冲区,如果缓冲区非空则返回TRUE表示上次操作可以撤消,否则返回FALSE,应用程序可以利用该返回值来禁止或允许菜单或工具条的"撤消"项。

设置编辑控件中文本选定内容范围(或设置光标位置),该范围被反相显示,用于为复制、替换、粘贴、剪切、删除等编辑功能指定范围,光标将被移至指定的终点后面。还可使用指定相同起点和终点来移动光标而不是选定范围。当指定的起点等于0和终点等于-1时,文本全部被选中,此法常用在清空编辑控件。当指定的起点等于-2和终点等于-1时,全文均不选,光标移至文本未端,此法常用在文本未端追加内容。注意:当控件没有输入焦点时,本操作将会失败,一般在执行本操作前都应调用SetFocus先取得输入焦点。
EM_UNDO(&HC7=199),0,0 撤消前一次编辑操作,当重复发送本消息,控件将在撤消和恢复中来回切换

。此外,倘若不允许自动进行水平滚动,同时插入点要超出控件的宽度;或者不允许自动垂直滚动,同时插入点要超出控件的高度,那么也会触发这条消息。在没有ES_AUTOHSCROLL或ES_AUTOVSCROLL的编辑框中,当正文超出了编辑框的边框时也会发出该消息。

ES_MULTILINE   指定编辑控件能否进行多行文本编辑,若多行编辑器不指定ES_AUTOHSCROLL风格,则会自动换行,用户每按一次Enter,在当前光标处输入一个回车换行符(0Dh,0Ah),文本增加一行。若不指定ES_AUTOVSCROLL,则多行编辑器会在窗口中正文装满时发出警告声响。
ES_LOWERCASE  把用户输入的字母统统转换成小写字母。
ES_UPPERCASE  把用户输入的字母统统转换成大写字母。
ES_OEMCONVERT  把输入的文本从ANSI码转换成OEM码,然后又转换成ANSI码,目的是保证函数AnsiToOem的正确调用。这在编辑框中包含文件名时是很有用的。
ES_AUTOHSCROLL(自动增加水平滚动条?) 当用户在行尾键入一个字符时,正文将自动向右滚动10个字符,当用户按回车键时,正文总是滚向左边。
ES_AUTOVSCROLL  当用户在最后一个可见行按回车键时,正文向上滚动一页。
ES_NUMBER  只接收数码输入,其它字符输入一律无效。
ES_NOHIDESEL(&H100=256) 当编辑框失去输入焦点时,选中的文本将隐藏,正文中的选择保持不变。缺省时正文中的选择将失效,当获得输入焦点后才又显示出来。
ES_WANTRETURN  使多行编辑器接收回车键输入并换行。如果不指定该风格,按回车键会选择缺省的命令按钮,这往往会导致对话框的关闭。

在Windows系统的很多消息中,有一些不仅仅是提供一个窗口消息那么简单。它们可以控制窗口的
动作和属性。下面向大家介绍SendMessage函数在扩充列表(ListBox)控件功能方面的应用。
  在 Windows 中,有一系列的以 LB_ 开头的列表消息,这里介绍的就是利用LB消息控制的ListBox

1、使列表中光标移动到不同的列表项上有不同的提示(ToolTip)
  在列表框控件中有一个 ToolTipText 属性,该属性决定了当光标在列表框上移动时出现的提示文
字。但是如何使得当光标在不同的列表项上移动时的提示文字也不同呢?问题的关键是要知道在光标移
  在 Form1 中加入一个 ListBox 控件,运行程序,当光标在列表中移动时,可以看到根据光标所在
的不同的列表项,提示文字也不相同。代码如下(我已试验成功):

2、向列表中加入横向滚动条使得可以浏览长列表项
  当向列表中加入的列表项超出了列表的显示范围后,列表并不会出现横向滚动条让你可以通过滚动来浏览
项目的全部内容。利用 LB_SETHORIZONTALEXTENT 消息可以设置列表框的横向滚动条以及滚动长度。
  在 Form1 中加入一个 ListBox 控件,运行程序,可以看到列表中出现了横向滚动条,而且滚动范围正好
是列表项的长度。代码如下(我已试验成功):

3、使列表框可以响应用户击键
  有时我们需要列表根据用户的敲入字符串自动调整列表的ListIndex到最接近的列表项,就象VB中动态
响应用户输入控件属性的编辑器一样。问题的关键是如何在列表中查找含有指定字符串的列表项,使用
LB_FINDSTRING消息可以在列表中查找指定字符串。
运行程序,在文本框中敲入字符,例如"av" "gm",列表就会高亮显示相近的列表项。代码如下(已成功):

4.在列表框中查找匹配的项目
在Win95风格的帮助系统中一般都有一个“索引”页,索引页含有一个文本框和一个列表框,当用户
在文本框中输入文字时,下拉列表会动态地显示与文本框中文字最匹配的项目,为用户提供了最大的方
便。这种效果在应用程序的帮助系统中很容易实现(只要按照 Win95帮助系统的正常制作过程制作就可
以实现),如果想在应用程序的其它地方实现这种特性就需费一番心思了。
而使用SendMessage函数实现上述特性则非常简单,甚至只需一条语句就足够了,那就是在文本框的
Change事件中给列表框发一条LB_FINDSTRING(&H18F)消息,该消息告诉列表框在列表中查找匹配的项
在发LB_FINDSTRING消息时,wParam参数代表从列表框的哪一个项目后面开始查找,一般情况下该参
数可定为-1,表示从List1(0)即第一项开始向后循环查找,lParam则传进欲搜索的字符串(必须采用值
具体的代码和运行画面与下面的 5. 合并在一起演示。
在VB中,列表框控件仅提供垂直滚动条,没有设置水平滚动条的能力,当某些项目的文本宽度较长
时,超出列表框宽度部分的文本就无法显示出来,因此,很有必要为ListBox添加一个水平滚动条来方
时,wParam为滚动条的长度(以像素为单位,可通过计算得出准确的长度,上面例2 就是如此的,也可
随便给一个数字,如本例的 250),lParam无用。代码如下(已试验成功):

6.在API文本浏览器里,当我们在搜索栏输入任意字母,“可用项”里以该字母开头的项目以高亮显
示以引起我们注意该项是不是我们所需的。象这样的功能一切提供搜索选项的程序都应该具备。以下例
子采用SendMessage函数实现这一技术。

  以上程序适用于单项目为多个字母的查询,但必须注意,在TextBox的KeyPress事件中要作相应的

  介绍如何利用消息函数来扩展树型列表 TreeView 控件的功能。相信对于树型列表控件大家十分的
熟悉,典型的应用就是 Windows 资源管理器中的目录列表。而在VB中,树型列表控件包含在Microsoft
有一系列的以 TVM_ 开头的消息值,这些消息就是扩展树型列表控件所特定的消息值,下面向大家介绍

1、设置树型列表控件的背景颜色

As Long,而不是象前面的那些范例那样定义为 Any 或者 String 类型,关于这个问题,我会在最后的

2、设置树型列表控件标题行高度
  TVM_SETITEMHEIGHT 消息设定控件的标题行的高度,该消息的定义及调用方法如下:

3、为树型列表控件中不同的标题行设置不同的提示
  介绍如何为树型列表控件中的每一个标题设置不同的提示。同 ListBox控件不通,树型列表控件中
并没有根据光标位置获得标题行索引的消息,我们需要另外想办法。在TVM类消息中有一个TVM_HITTEST
消息,发送该消息可以检测控件表面上的某一点,如果该点位于一个标题上,则返回该标题的句柄。而
利用 TVM_GETITEM消息,则可以根据标题句柄返回该标题行的文本。所以结合利用这两个消息可以获取
光标所在标题行的标题文本。具体的范例代码如下:

  运行上面的程序,当光标在 TreeView1上面移动时,TreeView1的 ToolTips就会根据光标所在的不

1.在Windows消息中,以EM_开头的消息是专门控制TextBox类控件和RTF类控件的。下面介绍的是如何利
可以从剪贴板中获取文本或者位图类数据并拷贝到 RTF 上。
  运行程序,点击Command1,可以将剪贴板中的数据(位图或者文本)拷贝到RichTextBox1上。
则将整个数据显示在 RTF 上,如果是 DVASPECT_ICON ,则只在 RTF 上显示一个图标。
  经试,repastespecial 格式没有作用,因此参数4设为0即可。

  要运行上面的程序,首先要确保ListView1的Arrange属性为1,View属性为0。在上面的程序中,我
高位为纵向间距,低位为横向间距,在上面的范例中,我们将图标的纵向间距定义为60像素,横向间距

  说明:在调用SendMessage获取第N行字符串时,lParam需要说明为字节数组,在调用完成后,再将
字节数组转换为字符串;另外,调用前必须在lParam的前两个字节指明允许存放的最大长度,其中第一
个字节为低位,第二个字节为高位,本例将高位(即str(1))置1.说明最大允许存放256个字符。

4.程序控制拉下或收起组合框的下拉列表
一般情况下,为了拉下或收起组合框的下拉列表,需要用键盘或鼠标进行操作,而有时我们希望程
序运行的某个时刻自动拉出下拉列表(比如在一些演示程序中),为了实现这个目的,我们也只有借助
为说明具体的使用方法,下面提供简单的程序片段:

当程序中某处需要拉下组合框Combol的列表时,调用如下语句:

当需要收起组合框Combol的列表时,调用如下语句:


5. 返回控件中显示的第一行的行号。

7.下面的函数将返回控件能显示的行数:(经试,总是引起程序崩溃)

8.设置控件的左边距。

9.利用SendMessage函数还可以实现一些有趣的效果:
  例如在按钮的Click事件中加入如下语句:

  运行后点击按钮,就可以把按钮变成一个收音机按钮(经试,变成一个圆孔,有点象单选按纽)。
  如要得到圆形或椭圆形按纽可使用另外2个API函数:

  实现这个效果首先TextBox的MultiLine属性必须为True(多行文本,其实这个属性关系创建TextBox内部

使用哪个类,因此一旦创建就不能修改这个属性,所以不能在代码中修改这个属性)

释是:获取和设置编辑控件的左、右边距(不得用于NT3.51)。具体是左还是右由该消息的参数决定。
  这样做有什么意义呢?有的时候如果你想在texebox中放入其他对象,而又不希望文本被覆盖掉,你就需要用

RichEdit 控件具有几种正文操作,搜索指定正文就是其中的一种。搜索正文是通过发送

①FR_DOWN(&H1):搜索方向。如果指定了这个标志值,搜索操作从当前选定的 end 位置开始,直到控件
  的缺省行为。RichEdit 2.0或以后版本的缺省行为是:在当前选定正文内的从结尾搜索到开始位置
  (向前搜索)。概括来说就是,如果你使用 RichEdit 1.0, 无论你做什么都没法影响搜索的方向,它
  总使用向后搜索。但是如果你使用 RichEdit 2.0 而且你想使用向后搜索的话,你必须指定这个标
  志值,否则使用的是向前搜索了。

  基本上,要搜索一个正文串,你必须指定要搜索的字符范围。cpMin 和 cpMax 的具体意义根据搜索是向
  如果是向后搜索,cpMin 指定搜索的开始字符索引,而 cpMax 则是结束字符索引。
  如果是向前搜索,则反过来才对,也就是说 cpMin 包含结束字符索引而cpMax 包含开始字符索引。

lpstrText 是要搜索的正文串的指针。

  返回控件中跟搜索串匹配的的正文串的一个字符的索引。如果没找到匹配的则返回 -1。

chrgText 是一个 CHARRANGE 结构,如果搜索到匹配串的话,其开始/结束字符索引会被填入这个结构中。

FINDTEXTEX 结构有一个另外的chrgText成员, 如果搜索到匹配串的话,其开始/结束字符索引会被填入这个成
员中。如果我们想对这个正文串进行更多的正文操作的话,有这个就方便多了。

codepage 是一个常量,指定你的正文想要的代码页。我们通常简单的使用 CP_ACP。

我们可以使用消息 EM_SETSEL 或者 EM_EXSETSEL 来编程选择正文.其中任意的一个都可以工作的很好。
要使用哪一个消息要根据可用的字符索引格式来选择。如果它们保存在一个 CHARRANGE 结构中,则使用

在使用多行Edit控件时,你必须子类化它以便得到输入信息象鼠标/键盘事件等。RichEdit 控件提供了一
个更好的方案,它可以把这些消息通知父窗口。为了注册得到通知消息,父窗口发送 EM_SETEVENTMASK 消息
给 RichEdit 控件,指定它对哪些消息感兴趣。

lParam = 事件掩码值,可以是以下标志值的任意组合:

上面的所有通知都被做为 WM_NOTIFY 消息来发送:你必须检查 NMHDR 结构的 code 成员来得到通知消
息。譬如,如果你想注册得到鼠标消息(也就是说,你想提供一给上下文相关的弹出菜单)

我要回帖

更多关于 vbbbnn 的文章

 

随机推荐