高分求救: 分辨率太高导致界面在低分辨率电脑上显示太大有关问题

高分求救: 分辨率太高导致界面在低分辨率电脑上显示太大问题
我做的界面实在分辨率为1280*1024显示器上做出来的,
一在低分辨率的机子上运行会显示的巨大,


现在我的问题是   怎么才能让程序在不同的分辨率大小的机子上自动适应屏幕的大小。

例如我在1280*1024的机子上显示占1/2,如何能在1024*800的机子上自适应为1/2屏幕

------解决方案--------------------
showwindow(SW_SHOWMAXIMIZED )
或者 cs.cx=GetSystemMetrics(SM_CXFULLSCREEN)
cs.cy=GetSystemMetrics( SM_CYFULLSCREEN)
试试
------解决方案--------------------
GetWindowRect
------解决方案--------------------
int x=GetSystemMetrics(SM_CXFULLSCREEN);
int y=GetSystemMetrics( SM_CYFULLSCREEN);
------解决方案--------------------
用楼上给的方法得到当前分辨率后,自己再根据这个计算、调整你的程序窗口及窗口内各个控件的大小和位置。
------解决方案--------------------
根据分辩率来重新布置你的程序界面
int x=GetSystemMetrics(SM_CXFULLSCREEN);
int y=GetSystemMetrics(SM_CYFULLSCREEN);
缩放倍率newx=x/1280.0;newy=y/1280.0 然后在WM_SIZE消息中重新按新的倍率乘你原来的控件窗口的top,left,right,bottom属性,上次做的我是这么弄的,控件窗口多了非常烦人,我不知道其它的好办法了.
------解决方案--------------------
应该是newx=x/1280.0;newy=y/1024.0
------解决方案--------------------
得到当前分辨率之后,重绘窗口及各个控件的大小。
------解决方案--------------------
下面是去除对话框标题及其边框,并置对话框为全屏的代码.看有没有帮助.
int cx, cy;
HDC dc = ::GetDC(NULL);
cx = GetDeviceCaps(dc,HORZRES) + GetSystemMetrics(SM_CXBORDER);
cy = GetDeviceCaps(dc,VERTRES) + GetSystemMetrics(SM_CYBORDER);
::ReleaseDC(0,dc);

//去除标题和边框
SetWindowLong(m_hWnd, GWL_STYLE,GetWindowLong(m_hWnd, GWL_STYLE) &
(~(WS_CAPTION | WS_BORDER)));

// 置对话框为最顶端并扩充到整个屏幕
::SetWindowPos(m_hWnd, HWND_TOPMOST, -(GetSystemMetrics(SM_CXBORDER)+2),
-(GetSystemMetrics(SM_CYBORDER)+2), cx+5,cy+5, SWP_NOZORDER);
------解决方案--------------------
接分快乐

:) ...
学习也快乐哈
------解决方案--------------------
获取当前屏幕大小后,重新调整控件位置,和控件大小,注意:最好顺便调整控件的字体大小

但是不能简单的用除法,因为字体可能会被缩得太小看不见了。放大的时候也一样,太大了不好看。
------解决方案--------------------
上面大家都说了些好方法,不过要考虑界面显示的美观,必须看你的界面缩放后是否仍然显示美观。
------解决方案--------------------
这个比较烦琐了,考虑几个主要的分辨率就行了。
------解决方案--------------------
int x=GetSystemMetrics(SM_CXFULLSCREEN);
int y=GetSystemMetrics( SM_CYFULLSCREEN);

SetWindowLong(m_hWnd, GWL_STYLE,GetWindowLong(m_hWnd, GWL_STYLE) &
(~(WS_CAPTION | WS_BORDER)));


::SetWindowPos(m_hWnd, HWND_TOPMOST, -(GetSystemMetrics(SM_CXBORDER)+2),
-(GetSystemMetrics(SM_CYBORDER)+2), cx+5,cy+5, SWP_NOZORDER);


得到这两个值 自动调节对话框得大小
------解决方案--------------------
楼主不现实啊,1024*768 才是主流,你是自己给自己找麻烦!
------解决方案--------------------
楼主,你去办公室里看看,有几个用 1280*1024 的?

大部分都是17吋的CRT
------解决方案--------------------
使用多套资源,针对不同得分辨率
------解决方案--------------------
我的大的窗口或视图都是手画的。也跟上面说的一样,得到X,Y,再创建控件和移动窗体时,坐标和大小不要用绝对值,转换成相应的X,Y。应该问题不大。