EVC4.0,如何调整程序界面对话框尺寸和屏幕一样大小?

愤怒的东东 2015-03-11 04:21:29
如题,EVC4.0手机模拟器屏幕分辨率是320*240的,程序界面设计的对话框大的话显示不全,如何改变对话框尺寸和屏幕一样,并且控件大小也随着变。我解决方法如下:
/////////////////////////////////////////////////////////////////////////////////////////////////
//1.获得屏幕尺寸
int cxClient=::GetSystemMetrics(SM_CXSCREEN); //屏幕尺寸
int cyClient=::GetSystemMetrics(SM_CYSCREEN); //屏幕尺寸
int cbClient=::GetSystemMetrics(SM_CYCAPTION); //标题栏窗口高度

CRect rtClient,rtBtn;
CWnd *pWnd=GetDlgItem(IDC_BUTTON1);

//2.获得对话框客户区屏幕尺寸
GetClientRect(&rtClient); //获取对话框坐标
ClientToScreen(&rtClient); //映射为屏幕坐

//3.获得button控件尺寸
pWnd->GetWindowRect(&rtBtn);

//4.求变化系数(现在屏幕尺寸比上原对话框尺寸)
int scale = cxClient/rtClient.Width();

//5.求的现有对话框当前RECT
rtBtn.left = rtBtn.left*scale;
rtBtn.top = rtBtn.top*scale;
rtBtn.right = rtBtn.right*scale;
rtBtn.bottom = rtBtn.bottom*scale;
MoveWindow(CRect(0,0+cbClient,cxClient,cyClient)); //移动窗口
pWnd->MoveWindow(rtBtn); //移动button
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在第二步出现了问题,我原意是获取程序开发时设计界面对话框大小,而实际获得的是292*240,是模拟器手机屏幕的客户区分辨率,所的变化比例系数永远是1,没有变化。求指教。
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
91program 2015-03-12
  • 打赏
  • 举报
回复
引用 3 楼 u011523594 的回复:
2,3楼的方法是没有办法的办法了,我见别人些的程序无论下载到多大屏幕上都能布满屏幕。
你要一定想弄,也可以啊!把窗体大小与各个控件的坐标写在一个配置文件中,窗体初始化时读这个配置文件,动态调整每个控件的位置,这样就可以达到你想要的效果。 对于每个控件,你是想动态创建、还是先放好控件的个数再调整位置,都可以的。 只是工作量的问题,没有实现不了的。
  • 打赏
  • 举报
回复
wince项目一般不用考虑不同屏幕自动适应的问题吧,弄这套框架也不是几行代码就可以实现的事情。
  • 打赏
  • 举报
回复
引用 3 楼 u011523594 的回复:
2,3楼的方法是没有办法的办法了,我见别人些的程序无论下载到多大屏幕上都能布满屏幕。
是有办法。codeporject上有一个动态创建所有控件的例子,所有界面内容就写在xml里面。 现在很多手机的界面也是这样动态创建,只要写好各种不同分辨率的xml就可以。
愤怒的东东 2015-03-12
  • 打赏
  • 举报
回复
2,3楼的方法是没有办法的办法了,我见别人些的程序无论下载到多大屏幕上都能布满屏幕。
91program 2015-03-11
  • 打赏
  • 举报
回复
要动态调整,这个工作量比较大、且如何分布也要自己事前计算好,这样比较麻烦哦 还是搞一个和实际设备分辨率一样的模拟器吧。
  • 打赏
  • 举报
回复
mfc资源做的比较差,不够直观,一般都是跑一下看看对话框于屏幕差距,然后手动调整,只要调整一个出来的,以后大概就知道长宽的比例是多少了。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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