usingSystem.Runtime.InteropServices;
constuintTPM_LEFTBUTTON=0;
constuintTPM_RIGHTBUTTON=2;
constuintTPM_LEFTALIGN=0;
constuintTPM_CENTERALIGN=4;
constuintTPM_RIGHTALIGN=8;
constuintTPM_TOPALIGN=0;
constuintTPM_VCENTERALIGN=0x10;
constuintTPM_BOTTOMALIGN=0x20;
constuintTPM_RETURNCMD=0x100;
constuintWM_SYSCOMMAND=0x0112;

DllImport#regionDllImport
[DllImport("User32.dll")]
staticexternIntPtrGetSystemMenu(IntPtrhWnd,boolbRevert);
[DllImport("User32.dll")]
staticexternboolGetCursorPos(outPointlpPoint);
[DllImport("User32.dll")]
staticexternintTrackPopupMenu(IntPtrhMenu,uintuFlags,
intx,inty,intnReserved,IntPtrhWnd,outRectangleprcRect);
[DllImport("User32.DLL")]
publicstaticexternintSendMessage(IntPtrhWnd,uintMsg,intwParam,intlParam);
#endregion
privatevoidbutton1_Click(objectsender,EventArgse)
...{
PointvPoint;
RectanglevRect;
GetCursorPos(outvPoint);
SendMessage(Handle,WM_SYSCOMMAND,TrackPopupMenu(
GetSystemMenu(Handle,false),
TPM_RETURNCMD|TPM_LEFTBUTTON,vPoint.X,vPoint.Y,
0,Handle,outvRect),0);
}
本文介绍了一个使用C#实现的上下文菜单显示方法。通过调用.NET Framework提供的PInvoke来调用Windows API函数,实现了获取系统菜单、获取鼠标位置、发送消息以及跟踪弹出菜单等功能。这些功能对于开发桌面应用程序时提供上下文敏感的操作非常有用。
1335

被折叠的 条评论
为什么被折叠?



