窗体全屏 隐藏任务栏与菜单栏
在WIN MOBILE中,常常要全屏显示某个窗体,但是如果通过"SHFullScreen"方法,最大只能扩大到工作区,任务栏与菜单栏依旧还在,需要隐藏这两个栏。处理方法是先Find再Hide,如要恢复则Find再Show,在每次操作后,均需要MoveWindow调整工作窗体。
MS_SIPBUTTON:下方中间的拼字那个窗口
menu_worker:下方的带颜色的长条,不算中间的拼字
HHTaskBar:上方的任务条
[DllImport("CoreDll.dll", SetLastError = true)]
public static extern IntPtr FindWindow(string className, string WindowsName);
[DllImport("coredll.dll", EntryPoint = "EnableWindow")]
public static extern bool EnableWindow(IntPtr hwnd, bool bEnable);
[DllImport("coredll.dll", EntryPoint = "ShowWindow")]
public static extern bool ShowWindow(IntPtr hwnd, bool bEnable);
[DllImport("coredll.dll")]
private static extern IntPtr ShowWindow(IntPtr hWnd, int _value);
[DllImport("aygshell.dll")]
public static extern bool SHFullScreen(IntPtr hWnd, uint dwState);
[DllImport("coredll.dll", SetLastError = true)]
public static extern bool EnumWindows(IntPtr lpEnumFunc, uint lParam);
[DllImport("coredll.dll")]
public static extern void GetClassName(IntPtr hwnd,StringBuilder s, int nMaxCount);
public const int SW_SHOW = 5; //显示窗口常量
public const int SW_HIDE = 0; //隐藏窗口常量
1. 先使用FindWindow找到某窗体的句柄,然后使用ShowWindow来控制窗体的显示与隐藏。只能控制一个窗体
2. 先使用EnumWindows枚举所有的窗体句柄,然后使用GetClassName获取某一个句柄对应窗体的名字,再使用ShowWindow来控制窗体的显示与隐藏。可以控制所有窗体
隐藏任务栏
1. 使用FindWindw+ShowWindow
2. SHFullScreen
CRect rc;
SetRect( &rc, 0, 0, GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ) );
MoveWindow( rc );
隐藏菜单栏
使用FindWindw+ShowWindow
在很多时候,我们仅需要隐藏任务栏,而对下方的输入法栏并不需要隐藏,如手机QQ的做法.但是在这个时候,弹出输入法软键盘的时候,屏幕上窗口将会自动向下收缩并露出上方被隐藏任务栏的区域.解决方法是在主窗口里响应 WM_WININICHANGE 消息即可,不需要在里面添加自定义代码,如下:
// 按动输入法时不自动弹出任务栏
void CMainFrame::OnWinIniChange(LPCTSTR lpszSection)
{
CFrameWnd::OnWinIniChange(lpszSection);
// TODO: 在此处添加消息处理程序代码
}
SHFullScreen的使用
public static bool FullScreen(IntPtr hWnd, bool isFull)
{
uint dwState = 0;
if (isFull)
{
dwState = SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON;
}
else
{
dwState = SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON | SHFS_SHOWSTARTICON;
}
return SHFullScreen(hWnd, dwState);
}
const uint SHFS_SHOWTASKBAR = 0x1;//任务栏
const uint SHFS_HIDETASKBAR = 0x2;
const uint SHFS_SHOWSIPBUTTON = 0x4;//输入法
const uint SHFS_HIDESIPBUTTON = 0x8;
const uint SHFS_SHOWSTARTICON = 0x10;//开始菜单栏
const uint SHFS_HIDESTARTICON = 0x20;
这种方法隐藏任务栏,在程序退出的时候不需要做什么特殊处理.但是在对 CWnd, CFrameWnd 一类的窗口做处理的时候一定要先 SetForegroundWindow 一次,而 CDialog 类型的窗口则不需要这一步.
另外在对 CWnd, CFrameWnd 类型窗口做处理的时候,还必须响应 WM_ACTIVATE 消息,在其中做同样的处理才能做到完全的隐藏任务栏效果.
由于此消息在程序退出及窗口切换的时候也被调用,因此直接在其中响应消息,会导致程序退出之后任务栏的刷新问题,及程序窗口无法切出.解决办法是设置成员变量判断程序是否退出,并检测此消息的参数来判断是否切换窗口.相关代码如下:
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CFrameWnd::OnActivate(nState, pWndOther, bMinimized);
if( !nState && !pWndOther )
return;
if( !m_bExit )
{
// 全屏窗口
SetForegroundWindow();
DWORD dwState = ( SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON );
::SHFullScreen( m_hWnd, dwState );
CRect rc;
SetRect( &rc, 0, 0, GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ) );
MoveWindow( rc );
}
}
窗体全屏 隐藏任务栏与菜单栏相关推荐
- C#窗体全屏隐藏任务栏
任务栏 隐藏 全屏模式一 (窗体无外边框) 优点:全屏显示,移除多余的外边框,使窗体与界面融为一体: 缺点:需要添加 比如:双击 退出全屏: private void Form1_Load(objec ...
- C# 窗口全屏 隐藏任务栏 (代码)
From: http://blog.csdn.net/mask_of_zorro/article/details/2351091 为了解决C# Windows应用程序全屏显示,在网上找了很多解决方法. ...
- C# 窗口全屏 隐藏任务栏 (代码)
为了解决C# Windows应用程序全屏显示,在网上找了很多解决方法.当然其中也有成功的方法,但看起来复杂且对我等菜鸟级的人来说更难于理解.其中发现以下几行代码实现真正的全屏显示,又隐藏了任务栏,最简 ...
- Android Window悬浮窗窗口全屏(隐藏导航栏状态栏)
在应用开发中,有时候需要利用弹出全屏的悬浮窗,因为有导航栏显示所以总是不能全屏,所以需要设置某些属性 让窗口全屏显示 例如: 在onCreate中的这段代码 Window window = getWi ...
- 电脑全屏时任务栏没有隐藏,解决办法
右键任务栏选择任务栏设置,如图 打开平板模式下自动隐藏任务栏: 设置完毕,在此尝试看全屏状态任务栏是否隐藏,如还是没有隐藏,则打开任务管理器,找到资源管理器进程并重启:
- SetFormFullScreen()窗体全屏显示
{让窗体全屏显示} //SetFormFullScreen(Form1); procedure SetFormFullScreen(Form:TForm); begin Form.BorderSt ...
- html隐藏浏览器菜单栏,移动设备(手机)上浏览器全屏隐藏工具栏和菜单栏的设置...
让手机上易于浏览阅读,meta viewport 必不可少.作为一款 webApp,你可能更希望默认为全屏模式.通过 meta 配置,在某些浏览器版本上可以实现这种效果. 以下内容仅供参考. meta ...
- 使用Electron将html网页转为exe可执行文件(全屏, 遮住任务栏, Esc退出, exe的图标/文件名修改)
成品源码: https://download.csdn.net/download/weixin_42960873/13130175 方法一: 基础源码下载 https://github.com/ele ...
- chrome全屏隐藏状态栏_PS技巧丨18个让你相见恨晚的PS隐藏技巧!
Photoshop一定是你再熟悉不过的软件,不管是专业还是非专业摄影师.可是你是否知道这些Photoshop里神奇的隐藏技能?看了这篇文章,一定让你跟这18个技巧相见恨晚 - 1 - 在画布中调整笔刷 ...
最新文章
- 修饰符private和protected详解以及调用Object类Clone方法报错:clone() has protected access in java.lang.Object的原因及解决方案
- 《Cassandra实战》CassSeller程序源代码下载
- XorPay.com 支付平台介绍【支持个人申请】
- linux调用odbc接口乱码,linux中pypyodbc读取GB编码mdb中文乱码解决办法
- 在JDT中使用Java 8 Lambda
- vue路由切换组件没有加载_Vue面试题: 如何实现路由懒加载?
- windows平台下载编译好的webrtc代码vs2015
- 代码行云流水..这位刚高中毕业的 UP 主,告诉我人的学习能力没有上限
- 由先序遍历序列和中序遍历序列恢复二叉树以及统计叶子节点个数和树的深度...
- Stolz定理及其在求极限上的应用
- 2021年社招字节跳动测试开发工程师面试题
- 北京调频(FM)无线广播发射频率/频道表 (转载)
- python图灵机器人教程_Python-微信图灵机器人
- vscode Run coder 支持c++11
- Cross Domain Person Re-Identification With Large Scale Attribute Annotated Datasets参考文献解读
- grafan 6.3.x pannel研究
- Redis客户端访问
- flowable工作流简单请假流程,自定义完成的流程图表颜色字体以及连接线的颜色字体。
- 逆向最大匹配分词RMM
- 8、信息收集篇————Kali Linux自带工具