|
|
|
Visual Basic lacks of the capability to display a short description of the menu command being highlighted with the mouse or the keyboard, a feature that all professional applications should have. To add menu descriptions to your program, you must subclass the form and trap the WM_MENUSELECT message.
When this message arrives, you must extract the menu ID from the low-word of wParam, and then use it as an argument to the GetMenuString API function to retrieve the caption of the menu. At this point it is pretty easy to provide a short description of the menu command, on a StatusBar or a Label control:
Note that this technique doesn't work with menu items that point to a submenu. |
Click here to copy the following block |
Const WM_MENUSELECT = &H11F Private Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" _ (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, _ ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Dim WithEvents FormHook As MsgHook
Private Sub Form_Load() Set FormHook = New MsgHook FormHook.StartSubclass hWnd End Sub
Private Sub FormHook_AfterMessage(ByVal uMsg As Long, ByVal wParam As Long, _ ByVal lParam As Long, retValue As Long) If uMsg = WM_MENUSELECT Then Dim menuId As Long, menuCaption As String, Dim length As Long, menuDescr As String menuId = (wParam And &HFFFF&) menuCaption = Space$(256) length = GetMenuString(lParam, menuId, menuCaption, Len(menuCaption), 0) menuCaption = Left$(menuCaption, length)
Select Case menuCaption Case "&New" menuDescr = "Create a new file" Case "&Open" menuDescr = "Open an existing file" Case "&Save" menuDescr = "Save a file to disk" Case "E&xit" menuDescr = "Exit the program" End Select lblStatus = menuDescr End Select End Sub |
|
|
|
Submitted By :
Nayan Patel
(Member Since : 5/26/2004 12:23:06 PM)
|
|
|
Job Description :
He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting. |
View all (893) submissions by this author
(Birth Date : 7/14/1981 ) |
|
|