必须是在自画菜单中,对 WM_MENUSELECT 消息进行拦截,给你一段子程序,用于说明:Private Function IMessageTarget_Message(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case msg Case WM_MENUSELECT Dim xxx As Long CopyMemory xxx, wParam, Len(xxx) xxx = Val("&h" + Right$(Hex$(xxx), 4)) Select Case xxx Case IDM_PROGRAMS Label1.Caption = LoadResString(IDM_PROGRAMS) Case IDM_DOCUMENTS Label1.Caption = LoadResString(IDM_DOCUMENTS) Case IDM_FIND Label1.Caption = LoadResString(IDM_FIND) Case IDM_HELP Label1.Caption = LoadResString(IDM_HELP) Case IDM_RUN Label1.Caption = LoadResString(IDM_RUN) Case IDM_SETTINGS Label1.Caption = LoadResString(IDM_SETTINGS) Case IDM_SHUTDOWN Label1.Caption = LoadResString(IDM_SHUTDOWN) End Select Case WM_COMMAND If HIWORD(wParam) = 0 And lParam = 0 Then '// only messages from menus Call CommandHandler(LOWORD(wParam)) End If IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam) Case WM_MEASUREITEM If wParam = 0 Then Call MeasureMenuItem(lParam) End If IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam) Case WM_DRAWITEM If wParam = 0 Then Call DrawMenuItem(lParam) End If IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam) Case Else IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam) End Select End Function
{ window.status="随便写了";
}在onMouseOver="inputmessage(ID)"
就可以了
如果要显示的内容不同,只要把设置ID就可以了
刚才测试没通过,我想这样应该可行的
Select Case msg
Case WM_MENUSELECT
Dim xxx As Long
CopyMemory xxx, wParam, Len(xxx)
xxx = Val("&h" + Right$(Hex$(xxx), 4))
Select Case xxx
Case IDM_PROGRAMS
Label1.Caption = LoadResString(IDM_PROGRAMS)
Case IDM_DOCUMENTS
Label1.Caption = LoadResString(IDM_DOCUMENTS)
Case IDM_FIND
Label1.Caption = LoadResString(IDM_FIND)
Case IDM_HELP
Label1.Caption = LoadResString(IDM_HELP)
Case IDM_RUN
Label1.Caption = LoadResString(IDM_RUN)
Case IDM_SETTINGS
Label1.Caption = LoadResString(IDM_SETTINGS)
Case IDM_SHUTDOWN
Label1.Caption = LoadResString(IDM_SHUTDOWN)
End Select
Case WM_COMMAND
If HIWORD(wParam) = 0 And lParam = 0 Then '// only messages from menus
Call CommandHandler(LOWORD(wParam))
End If
IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam)
Case WM_MEASUREITEM
If wParam = 0 Then
Call MeasureMenuItem(lParam)
End If
IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam)
Case WM_DRAWITEM
If wParam = 0 Then
Call DrawMenuItem(lParam)
End If
IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam)
Case Else
IMessageTarget_Message = CallOrgProc(hWnd, msg, wParam, lParam)
End Select
End Function