c# 无边框窗体显示任务栏菜单(系统菜单)
2013-12-18 20:28
344 查看
c# 里面隐藏了form 的边框,任务栏就没有了系统菜单。如何显示呢,看下文。
调用方式 在form 构造函数 或者load中 TaskMenu.ShowSYSMENU(this);
[DllImport("user32.dll" , EntryPoint = "GetWindowLong" , CharSet = CharSet.Auto)]
private static extern int GetWindowLong(HandleRef hWnd, int nIndex);
[DllImport("user32.dll" , EntryPoint = "SetWindowLong" , CharSet = CharSet.Auto)]
private static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);
private const int WS_SYSMENU = 0x00080000 ;
public static void ShowSYSMENU(Form form)
{
int windowLong = (GetWindowLong(new HandleRef(form, form.Handle), -16 ));
SetWindowLong(new HandleRef(form, form.Handle), -16 , windowLong | WS_SYSMENU | 0x20000 | 0x40000 );
int menu = Win32.GetSystemMenu(form.Handle.ToInt32(), 0 );
if (!form.ControlBox)
{
Win32.DeleteMenu(menu, Win32.SC_CLOSE, 0x0 );//关闭
Win32.DeleteMenu(menu, Win32.SC_MINIMIZE, 0x0 );//最小化
Win32.DeleteMenu(menu, Win32.SC_MAXIMIZE, 0x0 );//最大化
}
else
{
if (!form.MinimizeBox)
{
Win32.DeleteMenu(menu, Win32.SC_MINIMIZE, 0x0 );//最小化
}
if (!form.MaximizeBox)
{
Win32.DeleteMenu(menu, Win32.SC_MAXIMIZE, 0x0 );//最大化
}
}
}
相关文章推荐
- C# 无边框窗体的移动,任务栏右键菜单,调整大小
- C#Winform无边框窗体如何点击系统任务栏显示和隐藏窗体
- C# 无边框窗体的移动,任务栏右键菜单,调整大小
- C#无边框窗体在任务栏右键菜单
- Delphi中无边框窗体应用程序使任务栏右键菜单有效的方法
- C# 右下角的通知区域显示 和 隐藏主窗体 以及 为通知区域图标添加菜单 等
- C#实现系统托盘,C#窗体最小化时隐藏为任务栏图标
- C# 解决调用winform窗体顶置且解决任务栏图片显示问题
- C# 控制窗体系统菜单
- C#实现系统托盘,C#窗体最小化时隐藏为任务栏图标的Window appllication
- C# winform 开机自启动时最小化到托盘 单击显示窗体,右击显示菜单
- 【机房收费系统】MDI菜单显示子窗体
- C#隐藏与显示系统任务栏和开始菜单栏按钮
- C#显示与隐藏系统任务栏和开始菜单栏
- C# winform窗体在桌面右下角显示(任务栏上方)
- Delphi中无边框窗体应用程序使任务栏右键菜单有效的方法
- C# winform 窗体覆盖(遮住)系统任务栏
- C#实现无边框窗体点击任务栏图标正常最小化和还原
- C#在MDI父窗体菜单中显示子窗体列表的设置方法
- 给无边框窗体添加任务栏右键菜单