rainstormmaster的blog
rainstormmaster的blog
摘要: 当用户点击dropdown button时,toolbar会发送TBN_DROPDOWN这条通知消息,所以我们只要用代码模拟发送这条通知消息即可 阅读全文
posted @ 2006-03-24 14:34 学剑学诗两不成 阅读(3241) 评论(1) 推荐(0) 编辑
摘要: 简单的说,有两个需要注意的地方,一是要用postmessage发送消息,二是这两个消息lparam参数比较复杂,发送消息的时候要构造好lparam参数 阅读全文
posted @ 2006-03-24 10:19 学剑学诗两不成 阅读(5810) 评论(1) 推荐(0) 编辑
摘要: 大致就是实现IDocHostUIHandler接口,挂接IDocHostUIHandler接口可以利用ICustomDoc接口或IOleObject接口实现,这里演示了利用ICustomDoc接口进行挂接。由于只是想屏蔽webbroswer的弹出菜单,所以只在IDocHostUIHandler的ShowContextMenu方法上做点文章就够了,IDocHostUIHandler的其它的方法不必进行处理,但是你必须实现它们,哪怕你只写上一些注释 阅读全文
posted @ 2006-02-27 01:51 学剑学诗两不成 阅读(7617) 评论(7) 推荐(0) 编辑
摘要: 我们知道ComboCox的Height属性是只读的,那么怎么改变ComboBox控件自身的高度呢,答案很简单,就是发送CB_SETITEMHEIGHT消息 阅读全文
posted @ 2006-02-20 05:26 学剑学诗两不成 阅读(2705) 评论(0) 推荐(0) 编辑
摘要: 随着vb6几个补丁的退出,事实上richtextbox正悄悄发生变化,它已经支持richedit2.0了,所以我们可以设置结构体PARAFORMAT2的dyLineSpacing成员,然后将PARAFORMAT2结构体作为lparam参数,对richtextbox发送EM_SETPARAFORMAT消息,即可实现我们的要求 阅读全文
posted @ 2006-02-20 03:02 学剑学诗两不成 阅读(3869) 评论(0) 推荐(0) 编辑
摘要: 原理是先获得richtextbox的 IRichEditOle接口,由于IRichEditOle接口没有提供setobject方法,所以我们需要变通实现,大致步骤是: 1.利用 IRichEditOle接口的getobject方法获得richtextbox指定的ole对象的信息,对象的信息包含在REOBJECT结构体中 2.删除指定的ole对象 3.修改结构体中的dwFlags成员(当然你也可以修改其它的成员)后,调用IRichEditOle接口的InsertObject 方法重新插入对象 阅读全文
posted @ 2006-02-19 01:36 学剑学诗两不成 阅读(3432) 评论(1) 推荐(0) 编辑
摘要: Private Declare Function CallWindowProcA Lib "user32" ( _ ByVal addr As Long, _ ByVal p1 As Long, _ ByVal p2 As Long, _ ByVal p3 As Long, _ ByVal p4 As Long) As LongPrivate Declare Sub RtlMoveMemory L... 阅读全文
posted @ 2006-02-15 20:01 学剑学诗两不成 阅读(847) 评论(2) 推荐(0) 编辑
摘要: 没什么需要特别说明说的,有疑问就看msdn吧,窗体上两个按钮,一个treeview:Option ExplicitPrivate Declare Function SetWindowLong Lib "user32" _Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _ByVal dwNewLong As Long... 阅读全文
posted @ 2006-02-11 23:08 学剑学诗两不成 阅读(1589) 评论(0) 推荐(0) 编辑
摘要: 其实没什么说的,无非就是先找到“网络连接”这个虚拟文件夹,然后找到要控制的本地连接对应的folderitem,然后枚举verb,找到需要的verb后,调用verb的DoIt方法 阅读全文
posted @ 2006-02-11 17:38 学剑学诗两不成 阅读(9094) 评论(7) 推荐(0) 编辑
摘要: Option ExplicitPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)'测试Private Sub Command1_Click() selectitem "e:\mc\mmtest.jpg" Sleep 10000 selectitem "e:\mc"End SubPrivate Sub sel... 阅读全文
posted @ 2006-01-26 21:39 学剑学诗两不成 阅读(1362) 评论(0) 推荐(0) 编辑
摘要: 一个远程调用api函数的模块,今天整理资料时发现的,忘记从哪里找到的了,不过感觉它应该有用,就把它贴出来了Option ExplicitPublic Enum ARG_FLAG arg_Value arg_PointerEnd EnumPublic Type API_DATA lpData As Long 'Pointer to data or real data dwDataLength As ... 阅读全文
posted @ 2006-01-26 14:28 学剑学诗两不成 阅读(1629) 评论(6) 推荐(0) 编辑
摘要: Option Explicit'需要引用 Microsoft CDO for Windows 2000 Library和 Microsoft ActiveX Data Objects 2.5 LibraryPrivate Sub Command1_Click()Const cdoSendUsingMethod = _ "http://schemas.microsoft.com/cdo/config... 阅读全文
posted @ 2006-01-24 23:38 学剑学诗两不成 阅读(1826) 评论(0) 推荐(0) 编辑
摘要: 这个问题是CSDN网友MattHgh (黎明破晓前)提出来的,这个问题其实有很多种解决的办法,这里我用WH_SHELL钩子解决,WH_SHELL钩子可以获得很多信息,比如窗口创建、窗口销毁、窗口被激活、窗口的标题栏被重绘等等,但是这些信息都是基于窗口的,而MattHgh 希望同时获得相应的程序。那么怎么根据窗口的句柄的句柄获得对应的程序路径呢,这个当然可以通过枚举所有的进程获得,不过这样一来,速度... 阅读全文
posted @ 2006-01-24 17:28 学剑学诗两不成 阅读(5086) 评论(2) 推荐(1) 编辑
摘要: 这是个很有意思的问题,通常的思路是先保存数据、再动态添加数据,这里给出的是另外一种方法,即先将该列的列宽设为0,在想办法让用户无法改变该列的列宽,原理我不多说了,看看MSDN,那上面都有^_^。还是给出代码吧:一个模块,一个窗体:模块代码:Option ExplicitPublic Type POINTAPI X As Long Y As LongEnd TypePublic Const GWL_... 阅读全文
posted @ 2006-01-20 21:00 学剑学诗两不成 阅读(5378) 评论(4) 推荐(0) 编辑
摘要: 我们知道ClipCursor可以将指针限制到指定区域,那么如何反其道而为之,禁止鼠标进入某个区域呢,答案是用鼠标钩子,在WIN NT 4.0 SP3以上系统可以用WH_MOUSE_LL这个钩子实现,这个钩子的特殊之处是不需要用dll,另外,这个钩子用到了一个结构体,简单说明一下:typedef struct { POINTpt; DWORDmouseData; DWORDflags; DWORDt... 阅读全文
posted @ 2006-01-18 22:54 学剑学诗两不成 阅读(2965) 评论(0) 推荐(0) 编辑
摘要: Frame控件是vb中使用得比较频繁的控件之一,它在本质上是个button,因此可以用setwindowlong为其附加或者移除BS_LEFT、BS_RIGHT、BS_CENTER之类的风格,以改变其caption的对齐方式,程序如下:'窗体上有一个Frame控件Option ExplicitPrivate Declare Function GetWindowLong Lib "user32" A... 阅读全文
posted @ 2006-01-14 14:33 学剑学诗两不成 阅读(1831) 评论(0) 推荐(0) 编辑
摘要: 只去掉图标是很困难的(用自绘标题栏可以解决),今天我们讨论的是一种变通的方法,即创建一个空图标代替现有的图标,程序如下:Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam ... 阅读全文
posted @ 2006-01-09 16:32 学剑学诗两不成 阅读(1067) 评论(0) 推荐(0) 编辑
摘要: '作为测试,添加1个按钮,两个listboxPrivate Declare Sub CopyMemory Lib "kernel32" Alias _ "RtlMoveMemory" (dest As Any, source As Any, _ ByVal numBytes As Long)Sub InsertStringItem(strArr() As String, ByVal index A... 阅读全文
posted @ 2006-01-09 14:48 学剑学诗两不成 阅读(3101) 评论(1) 推荐(0) 编辑
摘要: 环境:XP sp2 ,vb6 (未打sp6补丁)测试:新建一个工程,在窗体上加一个ImageList控件(预先为控件加入几个图标),然后在窗体上加一个按钮,添加如下代码:Private Declare Function ImageList_GetImageCount Lib "comctl32" ( _ByVal himl As Long) As LongPrivate Sub Command1_... 阅读全文
posted @ 2006-01-03 17:24 学剑学诗两不成 阅读(1108) 评论(2) 推荐(0) 编辑
摘要: Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, source As Any, ByVal numBytes As Long)Private Declare Sub ZeroMemory Lib "kernel32" Alias "RtlZeroMemor... 阅读全文
posted @ 2006-01-02 17:38 学剑学诗两不成 阅读(4420) 评论(1) 推荐(0) 编辑
摘要: 首先设计好你的菜单然后在窗体上加入一个按钮代码如下:Option ExplicitPrivate Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As LongPrivate Const MIM_BACKGROUND As Long = &H2Private Const MIM_APPLYTOSUBM... 阅读全文
posted @ 2005-12-26 18:10 学剑学诗两不成 阅读(2525) 评论(2) 推荐(0) 编辑
摘要: Option ExplicitPrivate Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlZeroMemory" (dest As Any, ByVal numBytes As Long)Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal ... 阅读全文
posted @ 2005-12-24 19:14 学剑学诗两不成 阅读(4891) 评论(2) 推荐(0) 编辑