|
制作可以自动隐藏的弹出式菜单(1)
关键在于对WM_ENTERIDLE消息的处理 在菜单状态下移动鼠标会产生WM_ENTERIDLE消息 这时用TempPoint、WindowFromPoint可以取得当前鼠标所指窗体的句柄 再用GetClassName取得类名,与"#32768"(菜单窗体的类名)进行比较 再等待1秒钟,用keybd_event发送VK_ESCAPE取消菜单状态 但是还是有一个的缺点:无法在鼠标不移动的时候自动隐藏 这时需要Timer控件的帮忙
将下列文件粘贴到记事本,并保存为相应文件 AutoHidePopupMenu.VBp ==================================================================== Type=Exe Form=Form1.frm Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\..\WINDOWS\SYSTEM\stdole2.tlb#OLE Automation Module=Module1; Module1.bas Startup="Form1" ExeName32="AutoHidePopupMenu.exe" Command32="" Name="AutoHidePopupMenu" HelpContextID="0" CompatibleMode="0" MajorVer=1 MinorVer=0 RevisionVer=0 AutoIncrementVer=0 ServerSupportFiles=0 VersionCompanyName="zyl910" 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
Form1.frm ==================================================================== VERSION 5.00 Begin VB.Form Form1 BorderStyle = 1 'Fixed Single Caption = "AutoHidePopupMenu" ClientHeight = 3225 ClientLeft = 45 ClientTop = 330 ClientWidth = 4710 LinkTopic = "Form1" MaxButton = 0 'False
|