- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安VB教程基地 来源:黑客防线网安VB教程基地 浏览次数:0 |
SendMessage函数在RichTextBox中实现:
一、一次撤销功能
二、无限地撤销功能
生活中的What's done cannot be undone在我们的程序中应该改为What's done can always be undone。你不相信?那么请看——
如果仅仅象MS的小记事本那样只有一次undo功能,那不是一件麻烦事,用SendMessage函数就可以轻松实现。下列代码能使RichTextBox有一次撤销操作的功能:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_UNDO = &H304
'下一行为按钮或菜单代码
SendMessage RichTextBox1.hwnd, WM_UNDO, 0, 0
是不是很容易?不过,想要无限地undo下次,就不那么简单了。土人曾拟编写一个,却无意中发现了Bart Lorang,一个年仅十多岁的美国小子已经在网上公开了类似的代码。这家伙敢跟老盖叫劲儿,号称"Not the next Bill Gates, but the first Bart Lorang",好大的口气!不过他的程序确实不错,现特意将其内容拿出来给大家瞧瞧。为了适用于中文环境,土人对源码作了些微改动。注意:不仅可以undo,还可以redo哟!
(如果你用此代码于你编制的记事本,Bart Lorang要求给他发一个拷贝:BartLorang@POBoxes.com)
' ****** 模块代码:
'申明API函数
Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Long) As Long
'常数
Public Const WM_USER = &H400
Public Const EM_HIDESELECTION = WM_USER + 63
' ****** 类模块代码:
Public SelStart As Long '文本框中的开始位置
Public TextLen As Long '文本长度
Public Text As String '文本内容
' ****** 窗体代码:
'请给窗体添加按钮两个、RichTextBox一个,取默认值;
'菜单若干:——
'层次 Name属性 Caption属性
' 1 Edit 编辑
' 2 mnuUndo 撤销
' 2 mnuRedo 恢复
' 2 mnuCut 剪切
' 2 mnuCopy 复制
' 2 mnuPaste 粘贴
' 2 mnuDelete 删除
' 2 mnuSelectAll 全选
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |