MFC中获取dialog窗体的宽度及大小等信息

2025-01-19 14:18:35
推荐回答(3个)
回答1:

在哪里想获得了直接调用入校函数就可以了
CRect rc;
GetWindowRect(&rc);
rc.Width();获得宽度
rc.Height();获得高度

回答2:

在你的对话类中响应WM_SIZE消息,系统将自动生成一个OnSize()函数,在该函数里面添加下面代码就可以得到:
void CDataFileImportDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CRect rect;
GetClientRect(&rect);
}
rect 中就有你想要宽度,大小等信息。

回答3:

[cpp] view plaincopy

  • void CMainFrame::OnChangeSize()   

  • {  

  • // TODO: Add your command handler code here   

  • CRect cr;  

  • GetClientRect(&cr);//获取对话框客户区域大小   

  • ClientToScreen(&cr);//转换为荧幕坐标   

  • int x= GetSystemMetrics(SM_CXSCREEN);//获取荧幕坐标的宽度,单位为像素   

  • int y=   GetSystemMetrics(SM_CYSCREEN);//获取荧幕坐标的高度,单位为像素   

  • //MoveWindow((x-cr.Width() *2)/2 ,cr.top,cr.Width() *2,cr.Height() *2);//设置窗口显示的位置以及大小   

  • MoveWindow(cr.left ,cr.top,cr.Width(),cr.Height()/2);//设置窗口显示的位置以及大小   

  • }  

  • [cpp] view plain copy

  • void CMainFrame::OnChangeSize()   

  • {  

  • // TODO: Add your command handler code here  

  • CRect cr;  

  • GetClientRect(&cr);//获取对话框客户区域大小  

  • ClientToScreen(&cr);//转换为荧幕坐标  

  • int x= GetSystemMetrics(SM_CXSCREEN);//获取荧幕坐标的宽度,单位为像素  

  • int y=   GetSystemMetrics(SM_CYSCREEN);//获取荧幕坐标的高度,单位为像素  

  • //MoveWindow((x-cr.Width() *2)/2 ,cr.top,cr.Width() *2,cr.Height() *2);//设置窗口显示的位置以及大小  

  • MoveWindow(cr.left ,cr.top,cr.Width(),cr.Height()/2);//设置窗口显示的位置以及大小  

  • }  

  • mfc动态改变对话框窗口大小和显示位置

    C++代码

    123456
  •    
  • CRect
    cr;GetClientRect(&cr);//获取对话框客户区域大小ClientToScreen(&cr);//转换为荧幕坐标 intx=
    GetSystemMetrics(SM_CXSCREEN);//获取荧幕坐标的宽度,单位为像素inty=  
    GetSystemMetrics(SM_CYSCREEN);//获取荧幕坐标的高度,单位为像素MoveWindow((x-cr.Width()
    *2)/2 ,cr.top,cr.Width() *2,cr.Height() *2);//设置窗口显示的位置以及大小
  •    
  • 描述:mfc动态改变窗口大小和显示位置