VB 版 (精华区)
发信人: zxfsnow (别怕我伤心), 信区: VB
标 题: 来自VB论坛的一些问题解答
发信站: 哈工大紫丁香 (2000年05月31日12:31:31 星期三), 转信
发信人: ming (继续睡觉..zzZZ), 信区: VB
标 题: 来自VB论坛的一些问题解答
发信站: 虎踞龙盘东南站 (Mon Feb 14 13:24:22 2000), 转信
发信人: erain (红花会主), 信区: VisualBasic
标 题: 来自VB论坛的一些问题解答
发信站: BBS 水木清华站 (Wed Jan 5 21:52:00 2000) WWW-POST
1.怎样将VB某些控件的缺省菜单屏蔽掉而使用自己的弹出菜单,例如文本框控件
〖答〗Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
If Button = vbRightButton Then
Text1.Enabled = False
Text1.Enabled = True
Text1.SetFocus
PopupMenu mnuUserDefine
End If
End Sub
2.怎样将我自已的命令加入窗体的控制菜单栏。
〖答〗建一个Project,包含一个Form(Frmmain)和一个Module(MSysMenu)
Frmmain:
Option Explicit
Private Sub Form_Load()
Dim hSysMenu As Long
'Get Handle Of System Menu
hSysMenu = GetSystemMenu(hwnd, 0&)
'Append separator and menu item with ID IDM_ABOUT
Call AppendMenu(hSysMenu, MF_SEPARATOR, 0&, 0&)
Call AppendMenu(hSysMenu, MF_STRING, IDM_ABOUT, "About...")
Call AppendMenu(hSysMenu, MF_STRING, IDM_EXIT, "Exit")
Show
' Install system menu window procedure
procOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf
SysMenuProc)
End Sub
MSysMenu:
Option Explicit
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
Declare Function AppendMenu Lib "user32" Alias "AppendMenuA"
(ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal
lpNewItem As String) As Long
Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long,
ByVal bRevert As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const MF_STRING = &H0&
Public Const MF_SEPARATOR = &H800&
Public Const GWL_WNDPROC = (-4)
Public Const WM_SYSCOMMAND = &H112
Public procOld As Long
'User's menu
Public Const IDM_ABOUT = &H2000
Public Const IDM_EXIT = &H2001
Public Function SysMenuProc(ByVal hwnd As Long, ByVal iMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
' Ignore everything but system commands
If iMsg = WM_SYSCOMMAND Then
' Check for one special menu item
Select Case wParam
Case IDM_ABOUT
MsgBox "Hi"
Exit Function
Case IDM_EXIT
Unload FrmMain
Exit Function
End Select
End If
' Let old window procedure handle other messages
SysMenuProc = CallWindowProc(procOld, hwnd, iMsg, wParam,
lParam)
End Function
3.如何在VB 中通过编程获得 WINDOWS的工作目录路径? 在API 中有一个函数 GETPATH
是否可以用?如何使用?
〖答〗Private Const MAX_PATH = 260
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias _
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal _
nSize As Long) As Long
Public Function GetWinPath()
Dim sWinPath As String
Dim lResult As Long
sWinPath = String(MAX_PATH, 0)
lResult = GetWindowsDirectory(sWinPath, MAX_PATH)
If lResult <> 0 Then
GetWinPath = Left(sWinPath, InStr(sWinPath, Chr(0)) - 1)
Else
GetWinPath = ""
End If
End Function
4.从数据库查得的结果须用另外一个窗口中的MSFlexGrid中显示出来,但继续在其父窗口
中操作时此窗口就被覆盖,请问:如何才可象Winamp一样使其总在最前面呢?
〖答〗Type Rect
Height As Integer
Left As Integer
Top As Integer
Width As Integer
End Type
Global Const HWND_TOPMOST = -1
Global Const HWND_NOTOPMOST = -2
Global Const SWP_NOACTIVATE = &H10
Global Const SWP_SHOWWINDOW = &H40
Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal
hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long,
ByVal cy As Long, ByVal wFlags As Long)
Public Sub StayOnTop(hWnd As Long, size As Rect)
SetWindowPos hWnd, HWND_TOPMOST, size.Left / 15, size.Top / 15,
size.Width / 15, size.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
End Sub
Public Sub NotStayOnTop(hWnd As Long, size As Rect)
SetWindowPos hWnd, HWND_NOTOPMOST, size.Left / 15, size.Top / 15,
size.Width / 15, size.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
End Sub
5.有一个窗口,里面有很多的TEXTBOX,几个COMBNOBOX,COMBOBOX中有一为空,现在想在一
个按钮中,将这些控件全部清空。(用FROM.cls方法不起作用)
〖答〗
Dim i As Integer
For i = 0 To Form1.Controls.Count - 1
If TypeOf Form1.Controls(i) Is TextBox Then
Form1.Controls(i).Text = ""
ElseIf TypeOf Form1.Controls(i) Is ComboBox Then
Form1.Controls(i).Clear
End If
Next i
6.
--
巧者劳而智者忧,无能者无所求,饱食而遨游,泛若不系之舟。
请稍候,正在返璞归真中......
__________________________________________________________________
||||||||||| 20% |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
以科计为本,以产业报国!
超越自我,飞跃无限!
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.249]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.245毫秒