我在住对话框中用picture控件IDC_PLACEHOLDER,装载子对话框IDD_MODECALL
CRect rc;
GetDlgItem(IDC_PLACEHOLDER)->GetWindowRect(rc);
m_modecall=new CModecalldlg;
m_modecall->Create(IDD_MODECALL,this);
ScreenToClient(&rc);
          m_modecall->MoveWindow(rc);
m_modecall->ShowWindow(SW_SHOW);
现在需要主对话框改变大小时子对话框相应的改变大小,现在我在主对话框的onsize函数中,利用IDC_PLACEHOLDER的MoveWindow()函数改变picture控件的大小,但是子对话框的大小并没有改变,请问是什么原因?有什么解决办法?

解决方案 »

  1.   

    楼主好像重新创建了一个CModecalldlg对话框!
    这段代码是那个函数里面的?
      

  2.   

    你写相应的代码改变子对话框大小啊
    if((m_modecall != NULL) && (m_modecall->GetSafeHwnd())) 改变位置;
      

  3.   

    这是在住对话框的初始化函数中,装载了一个子对话框CModecalldlg对话框
      

  4.   

    对什么操作MoveWindow啊,能说的详细一点吗?m_modecall吗?
      

  5.   

    主对话框的OnSize里的Picture控件调整大小后面加上改变子对话框大小的代码,类似于下面的
    CRect rc; 
    ScreenToClient(&rc); 
    m_modecall->MoveWindow(rc); 
      

  6.   

    m_modecall->Create(IDD_MODECALL,this);
    此this是主对话框的,而不是picture控件的现在又将子对话框IDD_MODECALL重叠在picture控件上感觉这个picture控件IDC_PLACEHOLDER有点多余...
    在主对话框的OnSize函数OnSize(UINT nType, int cx, int cy)
    {
    m_modecall->MoveWindow(x, y, cx, cy,FALSE);//按需修改
    }
      

  7.   

    你的建议m_modecall->Create(IDD_MODECALL,this); 改成什么样的才是对pcture控件呢
      

  8.   

    我在onsize中调用
    m_modecall->MoveWindow(100, 100, 400, 400,FALSE);
    编译没有错误,运行时.....exe遇到问题需要关闭
    怎么办?
      

  9.   

    加保护
    if(m_modecall)
    {
        m_modecall->MoveWindow(100, 100, 400, 400,FALSE);
    }
    因为onsize在create之前就会调用
      

  10.   

    初始化的时候
    m_modecall = NULL;
      

  11.   


    手误
    if(!m_modecall)