我想在一个对话框上面画6个矩形区域,2行3列,并且这些矩形可以根据对话框大小变化而变化。对话框上面现在没有任何控件,求大神帮助  最好有代码 谢谢

解决方案 »

  1.   


    private:
    CRect m_rect[6];
    ...OnSize(UINT nType, int cx, int cy)
    {
    //自己根据窗口变化大小来等比例的改变m_rect大小
    Invalidate();
    UpdateWindow();
    }OnPaint()
    {
    CPaintDC dc(this);
    for (int i = 0;i < sizeof(m_rect)/sizeof(CRect);i++)
    {
    dc.Rectangle(m_rect+i);
    }
    ...
    }自己在画图板里把矩形布局好,然后把坐标填充到m_rect即可
      

  2.   

    在onsize里面得到对话框的尺寸 然后重绘啊
      

  3.   

    我刚好做过一个,响应OnSize,代码如下:void CApplicationDlg::OnSize(UINT nType, int cx, int cy)
    {
    CDialog::OnSize(nType, cx, cy);
    CRect m_rect;
    GetClientRect(&m_rect);
    // cx/m_rect.Width()为对话框在横向的变化比例
    // cy/m_rect.Height()为对话框在纵向的变化比例// 在次重绘,用rect1保存原rect
    //以下得到新位置和大小
    rect1.left=rect1.left*cx/m_rect.Width();
    rect1.right=rect1.right*cx/m_rect.Width();
    rect1.top=rect1.top*cy/m_rect.Height();
    rect1.bottom=rect1.bottom*cy/m_rect.Height();
    //这是你的绘制代码
    //然后下一个
      

  4.   

    创建一个CRect的数组,保存这六个矩形的信息,响应onsize,在该函数中根据对话框的大小调整这六矩形的数据。