关于MFC窗口大小问题。

例如,在一台电脑上,编写一个MFC窗口程序,但是在其他机器上运行的时候(机器的分辨率不同),大小就变的不一样,请问如何解决这样的问题呢。intnFullWidth=Get... 例如,在一台电脑上,编写一个MFC窗口程序,但是在其他机器上运行的时候(机器的分辨率不同),大小就变的不一样,请问如何解决这样的问题呢。
int nFullWidth = GetSystemMetrics(SM_CXSCREEN);
int nFullHeight = GetSystemMetrics(SM_CYSCREEN);
CWnd *pWnd;
pWnd=GetDlgItem(IDC_STATICIP);//列表1
if (pWnd)
{
CRect rc;
pWnd->GetWindowRect(&rc);
ScreenToClient(&rc);//将控件大小转换为在对话框中的区域坐标
rc.top=rc.top+(cy-m_rect.Height());
pWnd->SetWindowPos( NULL,rc.left,rc.top,0,0,SWP_NOZORDER | SWP_NOSIZE );
}
展开
 我来答
相思丶猫2C
2012-11-07 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:958万
展开全部
采用 百分比 设置大小。
更多追问追答
追问
能具体点吗,上边是我OnSize 里边的代码,要怎么该。谢谢
追答
比如 分辨率为1024*800,窗口大小为500*400;
那么分辨率为800*600,窗口大小是?就是一个简单的比例问题。
爱问西瓜爱答树
2012-11-07 · TA获得超过1760个赞
知道小有建树答主
回答量:890
采纳率:50%
帮助的人:294万
展开全部
可以获取屏幕的分辨率来实现适应屏幕的窗体。
int GetSystemMetrics(SM_CXSCREEN);
int GetSystemMetrics(SM_CYSCREEN);
然后再设置
GetClientRect();

SetWindowPos();
更多追问追答
追问
用MoveWindow()设置吗?
追答
就用SetWindowPos();就行,不过比较复杂。我看看还有没其他的办法
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangdon_2007
2012-11-07 · TA获得超过210个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:192万
展开全部
1、在视图里面添加这个函数 当视图改变时改变控件的大小

void CQueryBusView::OnSize(UINT nType, int cx, int cy)
{
CRecordView::OnSize(nType, cx, cy);
m_RecordList.MoveWindow(0,0,cx,cy,TRUE);
//m_RecordList是一个控件变量 MoveWindow可以改变控件的大小,当窗体尺寸改变时候

// TODO: Add your message handler code here

}
更多追问追答
追问
我的是对话框。也这样用了但是不是想要的效果。
追答
那个大小自己改了 cx cy 设置自己想要的就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式