我定义一个了一个对话框CImageDlg作为初始对话框,上面有个按钮点击弹出CSettingDlg;
我再CImageDlg的OnBnClickedSetting()中添加了代码:
CSettingDlg Dlg;
if(Dlg.DoModal() == IDOK)
{
       a=Dlg.mWidth;
       b=Dlg.mHeight;
}
出现错误。说mWidth和mHeight不是CSettingDlg的成员,这事为什么?我已经包含了头文件。

解决方案 »

  1.   

    1.  CSettingDlg 中 确实有 mWidth/mHeight 成员? 确定你没有拼写错~2.  这两个成员是否 public 的?
      

  2.   

    楼主是要得到窗口的宽度吧,dlg没有mWidth这个属性。
    试试:
    RECT Rect; 
    GetWindowRect(&Rect);
      

  3.   

    回2楼,DoModal()返回IDOK后,窗口已经销毁了,还能调用GetWindowRect(&Rect); ???
    同意1楼的观点
      

  4.   

    确定没错,我用复制粘贴的。肯定错不了。而且确定是public。
    我用的事VS 2003和这个有关系么?哎,谁知道怎么回事啊。郁闷了~~~
      

  5.   

    我测试过了,代码如下,在CImageDlg的OnBnClickedSetting()中添加代码:  PopDialog Dlg; Dlg.DoModal();在CSettingDlg的OK按钮事件中写(注意是CSettingDlg的窗口,在):        RECT Rect; 
    int x0,y0; GetWindowRect(&Rect);
    x0=Rect.right-Rect.left;   
    y0=Rect.bottom-Rect.top;   char   szBuf[100]; 
    sprintf(szBuf, "%d",x0); char   szBuf1[100]; 
    sprintf(szBuf1, "%d",y0); MessageBox(szBuf); 
            CDialog::OnOK();
      

  6.   

    把头文件SettingDlg.h的代码贴出来看看,会不会是头文件互相包含了呢?
      

  7.   

    弄好了,我再Edit上面点击添加变量,然后改了个名字,类型没变还是unsigned int,就可以了。我也不知道为什么。
    回6楼,我不是要窗口大小就是输入的宽和高的值传回来~