admin 管理员组文章数量: 894082
Windows mobile屏幕旋转解决方案
Windows mobile屏幕旋转解决方案
在默认情况下,Windows mobile的CDialog类可以自动切换屏幕显示方式,在用户把手机屏幕旋转成横屏的时候,CDialog类也会自动旋转,从而使得原本程序的绘制操作变乱。
那么如何解决Windows mobile下屏幕旋转带来的界面显示问题,就成了亟待解决的问题。一般来讲,如果不准备为用户提供横屏体验的话,那么禁止屏幕旋转无疑是最好的解决方案,这篇文章里笔者试图就这个问题进行一些探讨。
我们知道,Windows mobile的本质是事件机制和消息驱动,那么屏幕旋转自然也会发送消息给系统内核,这样以来,读者如果想对Windows mobile屏幕旋转做处理的话,自然首要的任务就是捕获这个屏幕旋转的消息。
首先声明消息捕获接口,如下:
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_WM_SETTINGCHANGE()
END_MESSAGE_MAP()
那么接下来就是需要对这个捕获到的消息进行处理,如下:
void CMyDlg::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
{
TRACE1("CMyDlg::OnSettingChange uFlags: %d/n", uFlags);
DEVMODE devmode = {0};
devmode.dmSize = sizeof(DEVMODE);
devmode.dmFields = DM_DISPLAYORIENTATION;
ChangeDisplaySettingsEx(NULL, &devmode, NULL, CDS_TEST, NULL);
if (DMDO_0 != devmode.dmDisplayOrientation)
{
devmode.dmSize = sizeof(DEVMODE);
devmode.dmFields = DM_DISPLAYORIENTATION;
devmode.dmDisplayOrientation = DMDO_0;
ChangeDisplaySettingsEx(NULL, &devmode, NULL, 0, NULL);
}
return;
}
笔者在这里是禁止屏幕进行旋转,如果用户旋转成横屏的话,这段代码会强制用户再回到竖屏状态,如果读者想提供用户横屏体验的话,也可以设置一个变量,从而获取到屏幕的状态,对屏幕的横屏和竖屏状态进行分别绘制。
本文标签: Windows mobile屏幕旋转解决方案
版权声明:本文标题:Windows mobile屏幕旋转解决方案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687604542h120175.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论