社区
Windows客户端开发
帖子详情
Windows Mobile 6.5 如何实现全屏,关闭输入法?
AIRFLYNET
2010-03-21 12:32:42
Windows Mobile 6.5 如何实现全屏,关闭输入法?
...全文
1830
10
打赏
收藏
Windows Mobile 6.5 如何实现全屏,关闭输入法?
Windows Mobile 6.5 如何实现全屏,关闭输入法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
terryxiezan
2010-07-08
打赏
举报
回复
重载OnInitDialog()
{
m_bFullScreen = FALSE;
CDialog::OnInitDialog();
SetForegroundWindow();
SHINITDLGINFO shidi;
shidi.hDlg = m_hWnd;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR;
::SHInitDialog(&shidi);
SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);
SHFullScreen(m_hWnd,SHFS_HIDETASKBAR);
SHFullScreen(m_hWnd,SHFS_HIDESTARTICON);
RECT rect;
SetRect(&rect, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
MoveWindow(&rect, TRUE);
}
还有在重载OnActive,OnSize
加入
SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);
SHFullScreen(m_hWnd,SHFS_HIDETASKBAR);
SHFullScreen(m_hWnd,SHFS_HIDESTARTICON);
避免从其它窗口切回来后,界面不再全屏。如按拨号键。
zxdlms
2010-06-28
打赏
举报
回复
Mark一下。
ACDINO
2010-06-25
打赏
举报
回复
学习ing
烂番
2010-03-23
打赏
举报
回复
WM的:
//隐藏输入法按钮,状态栏(开始菜单所在的那一条),开始菜单按钮
SHFullScreen(hWnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);
MoveWindow(hWnd, 0,0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), FALSE);
创建窗体时, CreateWindowEx ( WS_EX_TOPMOST, 。。。就始终最前了
不然,需要在窗体ACtive时,再SHFullScreen()一下,因为窗体被隐藏再显示时,输入法按钮又会跑出来了
AIRFLYNET
2010-03-22
打赏
举报
回复
我之前用了以下方法,在 CE 下可以, 但在 WINDOWS Mobile 6.5下却失效了。
void CWMSApp::ToggleFullScreen(BOOL mode)
{
HWND hWndInputPanel = NULL; // The SIP
HWND hWndTaskBar = NULL; // The TaskBar
HWND hWndSipButton = NULL; // The SIP Button
hWndInputPanel = FindWindow(TEXT("SipWndClass"), NULL);
hWndSipButton = FindWindow(TEXT("MS_SIPBUTTON"), NULL);
hWndTaskBar = FindWindow(TEXT("HHTaskBar"), NULL);
if (mode)
{
if(hWndTaskBar != NULL)
ShowWindow(hWndTaskBar, SW_SHOW);
//if(hWndInputPanel != NULL)
//ShowWindow(hWndInputPanel, SW_SHOW);
//Never forcibly show the input panel
if(hWndSipButton != NULL)
ShowWindow(hWndSipButton, SW_SHOW);
//if(SystemParametersInfo(SPI_GETWORKAREA, 0, &rtDesktop, NULL) == 1)
// SetWindowPos(hWnd,HWND_TOPMOST,0,0,rtDesktop.right -
//rtDesktop.left,rtDesktop.bottom - rtDesktop.top, SWP_SHOWWINDOW);
mode = false;
}
else
{
if (hWndTaskBar != NULL) ShowWindow(hWndTaskBar, SW_HIDE);
if (hWndInputPanel != NULL) ShowWindow(hWndInputPanel, SW_HIDE);
if (hWndSipButton != NULL) ShowWindow(hWndSipButton, SW_HIDE);
//SetWindowPos(hWnd,HWND_TOPMOST,0,0,GetSystemMetrics(SM_CXSCREEN),
// GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
mode = true;
}
}
Jake_Lin
2010-03-22
打赏
举报
回复
我这个程序用到全屏,希望对你有用。
Windows Mobile下GPS管理软件NavsGo之GPS监控功能的开发
gengzhen_2005
2010-03-22
打赏
举报
回复
windowsXP
void CTaskBarDlg::OnHide()
{
// TODO: Add your control notification handler code here
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);
}
void CTaskBarDlg::OnShow()
{
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);
}
winCE
void CTaskBarDlg::OnHide()
{
// TODO: Add your control notification handler code here
FindWindow(_T("HHTaskBar"),NULL)->ShowWindow(SW_HIDE);
}
void CTaskBarDlg::OnShow()
{
FindWindow(_T("HHTaskBar"),NULL)->ShowWindow(SW_SHOW);
}
CE的系统任务栏是在explorer.cpp中创建的,代码如下:
如果想去掉任务栏,注释掉这段代码即可
/*
// fork off a thread for the taskbar
hTaskbarSyncEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (!hTaskbarSyncEvent)
{
goto Cleanup;
}
hThread = CreateThread(NULL, NULL, CreateTaskBar, &hTaskbarSyncEvent, 0, NULL);
WaitForSingleObject(hTaskbarSyncEvent, INFINITE);
// GetExitCodeThread(); // Test for failure?
CloseHandle(hThread);
CloseHandle(hTaskbarSyncEvent);
*/
任务栏的各项属性在\WINCE500\PUBLIC\SHELL\OAK\HPC\EXPLORER\INC\taskbar.hxx中定义如下:
高度为26,隐藏高度为5:
#define TASKBAR_HEIGHT 26
#define TASKBAR_HEIGHT_AUTOHIDE 5
.隐藏taskbar的几种方法:
1全屏时隐藏,退出全屏时显示,在这种情况下可以先Findwindow(“HHTASKBAR”),然后用movewindow移出全屏范围之外,需要时再移入
2一直隐藏(就是从系统起来之后就不希望看到taskbar),可以通过Findwindow,和showwindow来实现,也可以通过修改 taskbar.cpp(public/shell/oak/hpc/explorer/taskbar/)中的CTaskBar::Register函 数,让其直接返回true
3动态显示和隐藏,可以修改platform.reg文件
HKEY_LOCAL_MACHINE\Software \Microsoft\Shell\AutoHide("default"=dword:1)和HKEY_LOCAL_MACHINE\Software \Microsoft\Shell\OnTop("default"=dword:0)以及 HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\SlideTaskBar("default"=dword:0)
/*************************************************************************************************************************/
动态设置系统任务栏是否在最前端
/*************************************************************************************************************************/
在文件 \WINCE500\PUBLIC\SHELL\OAK\HPC\EXPLORER\TASKBAR\taskbar.cpp中
WCHAR const c_szShellOnTop[] = L"Software\\Microsoft\\Shell\\OnTop";
void CTaskBar::SaveOnTop(BOOL bOnTop)
/*---------------------------------------------------------------------------*\
*
\*---------------------------------------------------------------------------*/
{
LONG lRet;
HKEY hkey;
DWORD dw;
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, c_szShellOnTop,
0, KEY_ALL_ACCESS, &hkey);
if (lRet != ERROR_SUCCESS)
{
lRet = RegCreateKeyEx(HKEY_LOCAL_MACHINE, c_szShellOnTop,
0, NULL, 0, KEY_ALL_ACCESS,
NULL, &hkey, &dw);
}
if (lRet == ERROR_SUCCESS)
{
RegSetValueEx(hkey, L"", 0, REG_DWORD, (LPBYTE)&bOnTop, sizeof(DWORD));
RegCloseKey(hkey);
}
}
/* SaveOnTop() */
void CTaskBar::WinIniChange(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// ......
// 代码省略
switch(lParam)
{
case INI_INTL:
{
HKL hklCurrent = InputLang_t::GetInputLocale();
InputLang_t::InitializeInputLangList();
UpdateInputLangIcon(hklCurrent);
m_fLocaleChange = TRUE;
break;
}
case 5000:
ReloadSettings();
break;
default:
break;
}
}
由此可以想到给系统任务栏发消息改变任务栏的状态:
设置系统任务栏最前端显示代码:
HWND hWnd = ::FindWindow(_T("HHTaskBar"), NULL);
SaveOnTop(1);
::SendMessage(hWnd, WM_SETTINGCHANGE, (WPARAM) 0, 5000);
设置系统任务栏不再最前端显示代码:
HWND hWnd = ::FindWindow(_T("HHTaskBar"), NULL);
SaveOnTop(0);
::SendMessage(hWnd, WM_SETTINGCHANGE, (WPARAM) 0, 5000);
我个人的总结:
要实现全屏显示,需要隐藏命令栏和任务栏
1,在OnInitDialog()函数中实现如下代码,
先要隐藏命令栏:
// 隐藏命令栏,命令栏是屏幕最下边的一条
HWND hWnd = SHFindMenuBar(m_hWnd);
::CommandBar_Show(hWnd, FALSE);
// SHFullScreen fails if dialog box is not foreground.
//如果对话框不在最前面,那么SHFullScreen()函数会失败
SetForegroundWindow();
// 隐藏任务栏,任务栏是屏幕最上边的一条
SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON|SHFS_HIDESTARTICON);
// Resize the window over the taskbar area.
CRect rcScreen;
rcScreen.SetRect( 0,
0,
GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ));
MoveWindow(&rcScreen, TRUE);
// 隐藏输入面板
SIPINFO si;
memset(&si, 0, sizeof(SIPINFO));
si.cbSize = sizeof(SIPINFO);
SHSipInfo(SPI_GETSIPINFO, 0, &si, 0);
if (si.fdwFlags & SIPF_ON)
{
si.cbSize = sizeof(SIPINFO);
si.fdwFlags = SIPF_OFF;
SHSipInfo(SPI_SETSIPINFO, 0, &si, 0);
}
gengzhen_2005
2010-03-22
打赏
举报
回复
windowsXP
void CTaskBarDlg::OnHide()
{
// TODO: Add your control notification handler code here
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);
}
void CTaskBarDlg::OnShow()
{
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);
}
winCE
void CTaskBarDlg::OnHide()
{
// TODO: Add your control notification handler code here
FindWindow(_T("HHTaskBar"),NULL)->ShowWindow(SW_HIDE);
}
void CTaskBarDlg::OnShow()
{
FindWindow(_T("HHTaskBar"),NULL)->ShowWindow(SW_SHOW);
}
CE的系统任务栏是在explorer.cpp中创建的,代码如下:
如果想去掉任务栏,注释掉这段代码即可
/*
// fork off a thread for the taskbar
hTaskbarSyncEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (!hTaskbarSyncEvent)
{
goto Cleanup;
}
hThread = CreateThread(NULL, NULL, CreateTaskBar, &hTaskbarSyncEvent, 0, NULL);
WaitForSingleObject(hTaskbarSyncEvent, INFINITE);
// GetExitCodeThread(); // Test for failure?
CloseHandle(hThread);
CloseHandle(hTaskbarSyncEvent);
*/
任务栏的各项属性在\WINCE500\PUBLIC\SHELL\OAK\HPC\EXPLORER\INC\taskbar.hxx中定义如下:
高度为26,隐藏高度为5:
#define TASKBAR_HEIGHT 26
#define TASKBAR_HEIGHT_AUTOHIDE 5
.隐藏taskbar的几种方法:
1全屏时隐藏,退出全屏时显示,在这种情况下可以先Findwindow(“HHTASKBAR”),然后用movewindow移出全屏范围之外,需要时再移入
2一直隐藏(就是从系统起来之后就不希望看到taskbar),可以通过Findwindow,和showwindow来实现,也可以通过修改 taskbar.cpp(public/shell/oak/hpc/explorer/taskbar/)中的CTaskBar::Register函 数,让其直接返回true
3动态显示和隐藏,可以修改platform.reg文件
HKEY_LOCAL_MACHINE\Software \Microsoft\Shell\AutoHide("default"=dword:1)和HKEY_LOCAL_MACHINE\Software \Microsoft\Shell\OnTop("default"=dword:0)以及 HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\SlideTaskBar("default"=dword:0)
/*************************************************************************************************************************/
动态设置系统任务栏是否在最前端
/*************************************************************************************************************************/
在文件 \WINCE500\PUBLIC\SHELL\OAK\HPC\EXPLORER\TASKBAR\taskbar.cpp中
WCHAR const c_szShellOnTop[] = L"Software\\Microsoft\\Shell\\OnTop";
void CTaskBar::SaveOnTop(BOOL bOnTop)
/*---------------------------------------------------------------------------*\
*
\*---------------------------------------------------------------------------*/
{
LONG lRet;
HKEY hkey;
DWORD dw;
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, c_szShellOnTop,
0, KEY_ALL_ACCESS, &hkey);
if (lRet != ERROR_SUCCESS)
{
lRet = RegCreateKeyEx(HKEY_LOCAL_MACHINE, c_szShellOnTop,
0, NULL, 0, KEY_ALL_ACCESS,
NULL, &hkey, &dw);
}
if (lRet == ERROR_SUCCESS)
{
RegSetValueEx(hkey, L"", 0, REG_DWORD, (LPBYTE)&bOnTop, sizeof(DWORD));
RegCloseKey(hkey);
}
}
/* SaveOnTop() */
void CTaskBar::WinIniChange(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// ......
// 代码省略
switch(lParam)
{
case INI_INTL:
{
HKL hklCurrent = InputLang_t::GetInputLocale();
InputLang_t::InitializeInputLangList();
UpdateInputLangIcon(hklCurrent);
m_fLocaleChange = TRUE;
break;
}
case 5000:
ReloadSettings();
break;
default:
break;
}
}
由此可以想到给系统任务栏发消息改变任务栏的状态:
设置系统任务栏最前端显示代码:
HWND hWnd = ::FindWindow(_T("HHTaskBar"), NULL);
SaveOnTop(1);
::SendMessage(hWnd, WM_SETTINGCHANGE, (WPARAM) 0, 5000);
设置系统任务栏不再最前端显示代码:
HWND hWnd = ::FindWindow(_T("HHTaskBar"), NULL);
SaveOnTop(0);
::SendMessage(hWnd, WM_SETTINGCHANGE, (WPARAM) 0, 5000);
我个人的总结:
要实现全屏显示,需要隐藏命令栏和任务栏
1,在OnInitDialog()函数中实现如下代码,
先要隐藏命令栏:
// 隐藏命令栏,命令栏是屏幕最下边的一条
HWND hWnd = SHFindMenuBar(m_hWnd);
::CommandBar_Show(hWnd, FALSE);
// SHFullScreen fails if dialog box is not foreground.
//如果对话框不在最前面,那么SHFullScreen()函数会失败
SetForegroundWindow();
// 隐藏任务栏,任务栏是屏幕最上边的一条
SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON|SHFS_HIDESTARTICON);
// Resize the window over the taskbar area.
CRect rcScreen;
rcScreen.SetRect( 0,
0,
GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ));
MoveWindow(&rcScreen, TRUE);
// 隐藏输入面板
SIPINFO si;
memset(&si, 0, sizeof(SIPINFO));
si.cbSize = sizeof(SIPINFO);
SHSipInfo(SPI_GETSIPINFO, 0, &si, 0);
if (si.fdwFlags & SIPF_ON)
{
si.cbSize = sizeof(SIPINFO);
si.fdwFlags = SIPF_OFF;
SHSipInfo(SPI_SETSIPINFO, 0, &si, 0);
}
reflower
2010-03-22
打赏
举报
回复
重载virtual BOOL OnInitDialog()
{ m_bFullScreen = FALSE;
CDialog::OnInitDialog();
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN|SHIDIF_SIPDOWN;
shidi.hDlg = m_hWnd;
::SHInitDialog(&shidi);
}
小李匪盗
2010-03-21
打赏
举报
回复
http://www.devdiv.net/bbs/viewthread.php?tid=10734
体验
Windows
Mobile
6.5
(模拟器)
还没有wm
6.5
的真机,体验一下模拟器也不错 :) 启动时,原来的绿色,现变成红色了; 开机后的桌面,可以上下拖动的; 点击左上角的"开始",显示所有程序列表,没有原来的那个下拉列表了;布局不是原来的...
windows
mobile
6.5
输入法
的切换
方法是通过枚举,获得相应的
输入法
,然后设置当前
输入法
为该
输入法
。 foreach (InputMethod m in this.inputPanel1.InputMethods) { if (m.Name.Equals("搜狗输入")) { this
Windows
Mobile
程序
全屏
与非
全屏
Windows
Mobile
如何让应用程序
全屏
显示,网上问这个问题的人很多,你也能轻松找到答案,但很多人反映效果不完美,如切换程序后又没了
全屏
效果,这次我花了些时间整理出我的
实现
,当然我也不保证我的就很完美,但至少...
为什么
Windows
Mobile
会失败?
微软的技术可以说是包罗万象、琳琅满目,但是IE的市场占有持续下降,
Windows
Vista是失败的产品,
Windows
Mobile
是失败的产品(但是曾经也成功过)。 说到
Windows
Mobile
的失败你会说,它授权费太高,OEM商不喜欢,我...
WinCE下的一个不错的
输入法
汉王栀子花
输入法
V2009-破解
最近,有一个客户需要用到
全屏
手写
输入法
。在网上找了很久,找到了几种:汉王马兰花手、蒙恬、捷通、易录。蒙恬2.0的没有
全屏
功能。将这几种都在WinCE5.0上试过了,感觉不太如意。客户总反映在
全屏
手写状态下,单击...
Windows客户端开发
7,655
社区成员
18,845
社区内容
发帖
与我相关
我的任务
Windows客户端开发
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
复制链接
扫一扫
分享
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章