关于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 );
} 展开
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 );
} 展开
3个回答
展开全部
可以获取屏幕的分辨率来实现适应屏幕的窗体。
int GetSystemMetrics(SM_CXSCREEN);
int GetSystemMetrics(SM_CYSCREEN);
然后再设置
GetClientRect();
SetWindowPos();
int GetSystemMetrics(SM_CXSCREEN);
int GetSystemMetrics(SM_CYSCREEN);
然后再设置
GetClientRect();
SetWindowPos();
更多追问追答
追问
用MoveWindow()设置吗?
追答
就用SetWindowPos();就行,不过比较复杂。我看看还有没其他的办法
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
}
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 设置自己想要的就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询