关于windows mobile 横竖屏切换的问题

huayang2786 2009-04-27 05:24:05
本人在windows mobile 6平台开发的应用程序,我使用的测试机是三星 SGH-I900 支持手机通过横放或者竖放来自动切换横屏或竖屏,我想通过下面代码来实现切换:
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CInternetRadioDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{

DRA::RelayoutDialog(
AfxGetInstanceHandle(),
this->m_hWnd,
DRA::GetDisplayMode() != DRA::Portrait ?
MAKEINTRESOURCE(IDD_INTERNETRADIO_DIALOG_WIDE) :
MAKEINTRESOURCE(IDD_INTERNETRADIO_DIALOG));

}
#endif
我只在竖屏的时候重画了组件,可是我不知道当我的界面切换到横屏的时候,在哪里重画我屏幕上的组件,请问下是否需要新建一个类来重画这些组件?
...全文
681 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangls1982 2009-05-18
  • 打赏
  • 举报
回复
不用重画

	DEVMODE devmode = {0};
devmode.dmSize = sizeof(DEVMODE);
devmode.dmDisplayOrientation = DMDO_270; //右手持水平模式
devmode.dmFields = DM_DISPLAYORIENTATION;
ChangeDisplaySettingsEx(NULL, &devmode, NULL, 0, NULL);



这样试试
世外涛缘 2009-04-27
  • 打赏
  • 举报
回复
楼上正解了。
用movewindow调整就OK了。
huayang2786 2009-04-27
  • 打赏
  • 举报
回复
是不是我需要新建一个对话框类来画这些控件
huayang2786 2009-04-27
  • 打赏
  • 举报
回复
在IDD_INTERNETRADIO_DIALOG对话框上的控件是通过Create画上去的,可是我不知道该在什么地方把
IDD_INTERNETRADIO_DIALOG_WIDE上画上相应的控件?
cytlyy 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 huayang2786 的帖子:]
本人在windows mobile 6平台开发的应用程序,我使用的测试机是三星 SGH-I900 支持手机通过横放或者竖放来自动切换横屏或竖屏,我想通过下面代码来实现切换:
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CInternetRadioDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{

DRA::RelayoutDialog(
AfxGetInstanceHandle(),
this->m_hWnd,
DRA::GetDisplayMode() != DRA::Po…
[/Quote]
你的这种方法是通过在横竖屏时加载两个不同的对话框资源实现的。横屏用的是IDD_INTERNETRADIO_DIALOG_WIDE,只要动手拖动拖动这个对话框上的控件位置就可以了。
huayang2786 2009-04-27
  • 打赏
  • 举报
回复
非常感谢!
czbever 2009-04-27
  • 打赏
  • 举报
回复
横竖屏切换的时候都会收到wm_size消息,这时候你只要根据屏幕大小计算是横屏还是竖屏,然后调整相应的UI就可以了

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧