对话框现在要全屏 代码如下  int cx=::GetSystemMetrics(SM_CXSCREEN);   
  int cy=::GetSystemMetrics(SM_CYSCREEN);   
  int lx=0,ly=0,dx=0,dy=0;  CRect rtClient,rtBtn;    //*********************************************
  CWnd *pWnd=GetDlgItem(IDC_FRAME);     GetClientRect(&rtClient);             //获得对话框客户区屏幕坐标      
  ClientToScreen(&rtClient);            //映射为屏幕坐标      
  pWnd->GetWindowRect(&rtBtn);          //获得button屏幕坐标     
  lx=rtBtn.Width();                 //button长度     
  ly=rtBtn.Height();                //button高度      
  dx=rtClient.right-rtBtn.right;    //离右边框的距离     
  dy=rtClient.bottom-rtBtn.bottom;  //离底边框的距离 

  MoveWindow(CRect(0,0,cx,cy)); //移动窗口 
                              
  pWnd->MoveWindow(CRect(cx-dx-lx,cy-ly-dy,cx-dx,cy-dy)); //移动button  ===============================
结果:上面可以让对话框上的控件调整位置,但有个问题
对话框整体变大了,但是控件好像仅仅改变了位置但是大小没有变,也就说  对话框与控件比率失调
没有分了,又分了再加给大家谢谢先了

解决方案 »

  1.   

    只能在OnSize里面自己调整控件的大小的位置。
      

  2.   

    在OnSize
     pWnd->GetWindowRect(&rtBtn); //获得button屏幕坐标  这里弹出错误pWnd =0x00000000
      

  3.   

    三步解决MFC窗口变动后控件的大小一 在头文件中定义 POINT Old;//存放对话框的宽和高。二 添加 WM_SIZE消息:
    三 添加reseze函数
    http://blog.csdn.net/Small_hunter/archive/2010/06/01/5640101.aspx
    中有详细代码
      

  4.   

    想要控件跟着对话框的变化而变化,可以利用MoveWindow/SetWindowPos()来调整控件的显示区域。或者上codeproject上搜索easysize
      

  5.   


    你的pWnd是什么?你得先获得button的指针再GetWindowRect
      

  6.   


    第一次调用OnSize的时候对话框还没有建立,判断 pWnd != NULL 然后运行你的代码
      

  7.   

    OnSize中
    if(m_hWnd)
    {
       。
    }
      

  8.   

    在程序里加入以下代码试试
         WINDOWPLACEMENT lwndpl;
        WINDOWPLACEMENT * lpwndpl;
        lpwndpl=&lwndpl;
        GetWindowPlacement(lpwndpl);
        lpwndpl->showCmd=SW_SHOWMAXIMIZED;
        SetWindowPlacement(lpwndpl);
      

  9.   

    在OnSize() if(   GetDlgItem(IDC_FRAME)   ) 

    if(   GetDlgItem(IDC_FRAME)-> GetSafeHwnd()   ) 
    {
    MessageBox("12");
    }
    }
    -----
    怎么运行不到MessageBox 
    在OnSize中GetWindowRect 不能用
      

  10.   

    有没有实际做过,或者真正会的?
    就是说,对话框全屏后,上面的控件,不论在比例和大小上,都要随着对话框的变化做相应的变化。很多人都是OnSize我也知道,但是写了下,不行,而且还有好多的错误具体看上面
      

  11.   

    咳咳
    有个最笨的最简单的方法,就是把每个控件相对于对话框的比例、位置记下来,然后绘制全屏窗口时根据比例来确定控件窗口位置,再把控件MOVEWINDOW就行了
    如果控件少的话,不妨试试,多的话...
    多的话可以自己写个函数计算比例得到目标RECT吧,传入全屏之前的主窗口、控件位置等,计算比例,参照屏幕大小,得到应该的RECT坐标区域,OK,也不是不能解决的玩意儿哈