请问:如何通过OnSize调整Dialog的大小?void CCellColor::OnSize(UINT nType, int cx, int cy) 
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here

}
窗口本身是一个Dialog,我将它嵌入到了一个Bar里面,现在我想让该Dialog的大小,主要是它的高度随Bar的变化而变化,Bar的变化自动随窗口大小变化!请搞人赐教!

解决方案 »

  1.   

    注意:Dialog是一个窗口,可以说是CWnd派生的。
    可以代用CWnd的成员函数:movewindow() or SetWindowPos()函数改变对话框的大小,任何时候都可以。
      

  2.   

    SetWindowPos(wndBottom,0,0,210,300,SWP_SHOWWINDOW);并没有变化!这是为什么?
      

  3.   

    CDialog的大小是不是不可改变的?
    请高手赐教!
      

  4.   

    需要在OnDraw中重绘窗口吧,SetWindowPos好像不能像预期的那样工作。
      

  5.   

    在Bar的OnSize中调对话框的MoveWindow
      

  6.   

    CWnd的成员函数:MoveWindow()可以随时改变DLG的位置和大小
      

  7.   

    void CCellColor::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);
    // TODO: Add your message handler code here
    如果你的对话框是模式对话框:
             MoveWindow()
             如果你的对话框是无模对话框:
             SetWindowPos();
    }
      

  8.   

    对话框是可以改变大小的。
    自己从对话框派生个类、调用SetWindowPos()是可以的。
    SetWindowPos(wndBottom,0,0,210,300,SWP_NOMOVE|SWP_NOZORDER);
    这样试试。
    我以前做过,都成功了。
      

  9.   

    晕,为何要通过截获消息来改变它的大小,改一下它的各个属性就可以了啊: 
      把Styles页面下的Border选择为Resizing就可以了
      

  10.   

    我生成了一个指针,通过指针对它操作 cCell=new CCellColor(g_File.head);
    cCell->Create(IDD_DIALOG_CELLCOLOR,&m_clrbar);
    cCell->ShowWindow(SW_SHOW);
    这样应该怎么写?
      

  11.   

    void CCellColor::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);
    if(m_ShowRs.m_hWnd!=NULL)
    {
    CRect rect;
    m_ShowRs.GetWindowRect(rect);
    ScreenToClient(&rect);
    if(cy>rect.top)
    {
    rect.right=cx;
    rect.bottom=cy-2;
    m_ShowRs.MoveWindow(rect);
    }
    }
    }
    搞定!谢谢大家!
    一会儿给大家加分!