新建了个对话框,上面有以编辑框CEdit,用来显示视频(不知道能不能在这上面进行显示)和其他的编辑框,不可更改的内容的以上面建立的对话框新建了个类然后在主框架类CMainFrame里,进行这样的调用在消息处理函数中执行:
         //sdlg是主框架的成员         //IDD_DIALOG10为CShowComView对应的对话框的 sdlg=new CShowComView(this); sdlg->Create(IDD_DIALOG10);          sdlg->m_strRoom=strroo;//为对话框类的成员变量赋值
sdlg->m_strCom=strcom; sdlg->ShowWindow(SW_SHOW);首先对话框还是能显示的,但是对话框界面对应的编辑框都是为空,没有数据,但事实上应该都有,因为;//为对话框类的成员变量赋值
但是,我调试程序的时候发现,对话框上的编辑框控件,对应的句柄m_hWnd变量为不可用,或者是无效的

解决方案 »

  1.   

    CWnd* hWnd=FindWindow(NULL,"XXXX");//"XXXX"为窗口标题
    来修改一下你的m_hWnd变量试一试
      

  2.   

    m_strRoom和m_strCom是和控件绑定的吗?   sdlg->ShowWindow(SW_SHOW); 
    sdlg->UpdateData(FALSE); 试试
      

  3.   

    我需要知道对话框上的编辑框的控件的句柄
    通过FindWind固然可以,但对于对话框上的控件,如何去FIND我觉得很奇怪sdlg=new CShowComView(this);比如,执行这句下面后,发现sdlg已经分配了地址, 但是,到了下面后,你在查看sdlg的值,会发现,sdlg的值有效,但是hwnd为0xcdcdcdcd  虽然不是为NULL,但这个应该为无效的句柄,我觉得很奇怪
    sdlg->Create(IDD_DIALOG10); 还有里,m_strcom和m_strroom为对话框上的两个编辑框,我在这里给其赋值,但对话框显示后,那两个编辑框是空,根本就没有显示赋给他们的值
            sdlg->m_strRoom=strroo;//为对话框类的成员变量赋值 
    sdlg->m_strCom=strcom; 
    ==============
    以前倒是没又遇到,可能是,以前都是建立模式对话框
    但这次需要用NEW建立非模式对话框NEW创建后,明明是已经成功的分配了地址,但为什么对话框上的控件的句柄值显示的为0xcdcdcdcd不是一直说,无效的地址一般为NULL吗
    到底还有哪些地址是为无效的
    现在想买些这方面的书,感觉市面上这类书太少了
      

  4.   

    sdlg=new CShowComView(this);  //这句话是创建了CShowComView类对象,和窗口没什么关系,所以hwnd为0xcdcdcdcdsdlg->Create(IDD_DIALOG10);   //这句话执行之后才创建了窗口并attach到CShowComView类对象,这时再看hwnd就不是0xcdcdcdcd了不是一直说,无效的地址一般为NULL吗   //无效地址不一定为NULL,默认指向某块无效内存的话就是0xcdcdcdcd,这个值是VC默认的还有里,m_strcom和m_strroom为对话框上的两个编辑框  //如果是和控件关联的变量,应该要调用UpdateData(FALSE)更新变量,否则其值不会改变
      

  5.   

    代码的顺序应该是这样的:
    sdlg=new CShowComView(this); 
    sdlg->m_strRoom=strroo;
    sdlg->m_strCom=strcom;
    sdlg->Create(IDD_DIALOG10); 
    sdlg->ShowWindow(SW_SHOW);
    要保证你的m_strRoom和m_strCom和控件关联正确。
    new CShowComView 是分配内存而已,Create之后窗口句柄才有。
      

  6.   


    也不是,sdlg->Create(IDD_DIALOG10);  后,Sdlg的地址是有效的,但是sdlg本身对话框的hwnd就为0xcdcdcdcd
      

  7.   

    接着6楼说sdlg->Create(IDD_DIALOG10);  后,Sdlg的地址是有效的,但是sdlg本身对话框的hwnd就为0xcdcdcdcd
    但是sdlg对应的对话框却能显示出来
    郁闷了
    一个对话框句柄都是无效的,为什么还要显示出来
    程序也不报错不异常的
      

  8.   

    你在哪里看到的“sdlg本身对话框的hwnd就为0xcdcdcdcd ”在sdlg的OnCreate里面看看还是0xcdcdcdcd 
    或者你干脆在他的OnPaint里面看看对话框上的EDIT直接用GetDlgItem就能得到hWnd了另外显示图片等其他东西的话,一般是用CStatic,很少见用CEdit的,edit一般就是来处理字符的
      

  9.   

    我跟踪代码到sdlg->Create(IDD_DIALOG10);  后面一句后,
    鼠标移动到sdlg上显示的啊