无法忍受如此耻辱!竟然说csdn无人!!!!tchvb进来!

shawls 2002-05-28 12:10:40
解决方案:
model中:

Option Explicit

Public OldWindowProc As Long
' 保存默认的窗口函数的地址
Public Const WM_CONTEXTMENU = &H7B
' 当右击文本框时,产生这条消息

Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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 Function SubClass1_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Long
If Msg <> WM_CONTEXTMENU Then
SubClass1_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp)
' 如果消息不是WM_CONTEXTMENU,就调用默认的窗口函数处理
Exit Function
End If
SubClass1_WndMessage = True
End Function


自定义控件中:

加入一个usermenu的菜单--测试
加入两个textbox:text1,text2

Option Explicit
Private Const GWL_WNDPROC = (-4)

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Exit Sub
OldWindowProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
' 取得窗口函数的地址
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf SubClass1_WndMessage)
' 用SubClass1_WndMessage代替窗口函数处理消息
End Sub

Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Exit Sub
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWindowProc)
' 恢复窗口的默认函数
PopupMenu usermenu
' 弹出自定义菜单
End Sub


其他接口自己写,实现了功能!
...全文
110 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
Paul888 2002-05-28
  • 打赏
  • 举报
回复
吊就一个字。。。。
shawls 2002-05-28
  • 打赏
  • 举报
回复
to jshyjyw(紫狐)

我只是表达我自己的情感罢了,不好意思



我是小山,我喜欢VB,现在在学习C#和.net的相关知识

欢迎您使用: SourceCode Explorer(源代码数据库)
当前版本: 1.0.690
作者: Shawls
来自: Http://www.dapha.net
个人主页: Http://Shawls.Yeah.Net
E-Mail: ShawFile@163.Net
QQ: 9181729
shawls 2002-05-28
  • 打赏
  • 举报
回复

工程2.vbp

Type=Exe
Form=Form1.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\WINNT\System32\stdole2.tlb#OLE Automation
Object=*\A工程1.vbp
Form=Form2.frm
Startup="Form1"
Command32=""
Name="工程2"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="HeroKingSoft"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1

[MS Transaction Server]
AutoRefresh=1


工程1.vbp

VERSION 5.00
Object = "*\A工程1.vbp"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3195
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
LinkTopic = "Form1"
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command1
Caption = "Command1"
Height = 555
Left = 4110
TabIndex = 1
Top = 1620
Width = 495
End
Begin 工程1.UserControl1 UserControl11
Height = 2925
Left = 30
TabIndex = 0
Top = 90
Width = 4605
_ExtentX = 8123
_ExtentY = 5159
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub Command1_Click()
Form2.Show
End Sub

form2.frm

VERSION 5.00
Object = "*\A工程1.vbp"
Begin VB.Form Form2
Caption = "Form2"
ClientHeight = 3195
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
LinkTopic = "Form2"
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin 工程1.UserControl1 UserControl11
Height = 2835
Left = 240
TabIndex = 0
Top = 300
Width = 4155
_ExtentX = 7329
_ExtentY = 5001
End
End
Attribute VB_Name = "Form2"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

lihonggen0 2002-05-28
  • 打赏
  • 举报
回复





tchvb(tchvb):这样的家伙,问问题就老实点,先学会做人!!!!!


再者,谁都不是CSDN的职业答题人,看到了,心情好,就答,象tchvb这样,激将法是没有用的,只会令大家反感!!!!!!!

jshyjyw 2002-05-28
  • 打赏
  • 举报
回复
实在没有耐心把原来那个帖子看完。
发这样的帖子,说这样的话的人头脑有病!
我只有三颗★,说明我的水平不高。
但我仍然尽可能帮助别人。
永远不要嘲笑别人。帮助别人使自己快乐。
shawls 2002-05-28
  • 打赏
  • 举报
回复
beta1:
组1.vbg

VBGROUP 5.0
Project=工程1.vbp
StartupProject=工程2.vbp

工程1.vbp
Type=Control
UserControl=UserControl1.ctl
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\WINNT\System32\stdole2.tlb#OLE Automation
Module=Module1; Module1.bas
Startup="(None)"
Command32=""
Name="工程1"
HelpContextID="0"
CompatibleMode="1"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="HeroKingSoft"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=1
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
ThreadingModel=1

[MS Transaction Server]
AutoRefresh=1

UserControl1.ctl
VERSION 5.00
Begin VB.UserControl UserControl1
ClientHeight = 3600
ClientLeft = 0
ClientTop = 0
ClientWidth = 4800
ScaleHeight = 3600
ScaleWidth = 4800
Begin VB.TextBox Text2
Height = 1065
Left = 450
TabIndex = 1
Text = "Text2"
Top = 1500
Width = 3465
End
Begin VB.TextBox Text1
Height = 885
Left = 300
Locked = -1 'True
TabIndex = 0
Text = "Text1"
Top = 270
Width = 3675
End
Begin VB.Menu usermenu
Caption = "usermenu"
Visible = 0 'False
Begin VB.Menu sss
Caption = "ss"
End
Begin VB.Menu sfs
Caption = "sf"
End
Begin VB.Menu sfa
Caption = "sfs"
End
Begin VB.Menu erw
Caption = "asf"
End
Begin VB.Menu afsa
Caption = "sfa"
End
End
End
Attribute VB_Name = "UserControl1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Private Const GWL_WNDPROC = (-4)

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Exit Sub
OldWindowProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
' 取得窗口函数的地址
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf SubClass1_WndMessage)
' 用SubClass1_WndMessage代替窗口函数处理消息
End Sub

Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Exit Sub
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWindowProc)
' 恢复窗口的默认函数
PopupMenu usermenu
' 弹出自定义菜单
End Sub


Module1.bas
Attribute VB_Name = "Module1"
Option Explicit

Public OldWindowProc As Long
' 保存默认的窗口函数的地址
Public Const WM_CONTEXTMENU = &H7B
' 当右击文本框时,产生这条消息

Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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 Function SubClass1_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Long
If Msg <> WM_CONTEXTMENU Then
SubClass1_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp)
' 如果消息不是WM_CONTEXTMENU,就调用默认的窗口函数处理
Exit Function
End If
SubClass1_WndMessage = True
End Function



shawls 2002-05-28
  • 打赏
  • 举报
回复

怕什么,技术是需要交流的,他不愿意就算了!

我无所谓的,他不公开,我公开,请大家批判!

有了批评才会有提高,
chenyiwei 2002-05-28
  • 打赏
  • 举报
回复
打了这么多,搞不好最后还会招来tchvb的嘲笑。哈
shawls 2002-05-28
  • 打赏
  • 举报
回复

补充:text1.lock=true!
shawls 2002-05-28
  • 打赏
  • 举报
回复

原来的帖子:
http://www.csdn.net/expert/topic/757/757198.xml?temp=.9023554

可以看看人家多么高大!!!!

哼!
shawls 2002-05-28
  • 打赏
  • 举报
回复
控件+代码下载:http://listenshaw.myetang.com/textmenu.rar

2002-5-28的下午5点以后才会上传,我要睡觉了!
doyang 2002-05-28
  • 打赏
  • 举报
回复
有本事把这个解决了
http://www.csdn.net/expert/topic/746/746920.xml?temp=.6127588
hillmanweb 2002-05-28
  • 打赏
  • 举报
回复
小山,支持你!
ningkang 2002-05-28
  • 打赏
  • 举报
回复
那个鸟人不敢来了??????
acev 2002-05-28
  • 打赏
  • 举报
回复

sorry,不谈政治。
孙小雄 2002-05-28
  • 打赏
  • 举报
回复
acev(acev) 谢谢你的评价阿 我和小山都是被他骂的患难兄弟
小山很了不起
大家应该记住tchvb(tchvb)
lyqof908 2002-05-28
  • 打赏
  • 举报
回复
支持Shawls (小山(求职的程序员-谁让我发挥作用?))
我除了不会他说的继承外,功能我都能制作出来。
lihonggen0 2002-05-28
  • 打赏
  • 举报
回复
u p
wzsswz 2002-05-28
  • 打赏
  • 举报
回复
我行我素,你们说,谁管谁。。。。
yclyz 2002-05-28
  • 打赏
  • 举报
回复
难的!!!
支持Shawls (小山(求职的程序员-谁让我发挥作用?)) !
加载更多回复(20)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧