听我详细道来,首先我创立了一个MDI  多文档 。。里面的继承类是FORMVIEW,这样就可以直接往上放控件了
我放了一个TAB CONTROL控件。。因为TAB CONTROL 控件 不能往上放东西。于是加载了一个DLG在上面。叫IDD_DIALOG1以上都已经完成了
现在我如何在左边的LISTVIEW中获得该DLG的句柄
我使用HWND hwndtmp=GetDlgItem(IDD_DIALOG1)->GetSafeHwnd();
每次的返回数值都是0,没有拿到郁闷了

解决方案 »

  1.   

    GetDlgItem(IDD_DIALOG1)
    --------
    没见过这样使用。在加载DLG时就能得到这个对话框的指针,存为成员变量,就可以访问了。
      

  2.   

    楼上说的对,创建子窗口的时候保存指针用GetWindow(GW_CHILD)可以得到子窗口的指针但是要自己判断是否是需要的窗口
      

  3.   

    1.LZ需要知道listview中存放的什么东西,与类有什么关系。如果没有关系,则就没有办法通过选择就能得到想要的东西
    2.可以采用LS的方法存储这个对话框的句柄,当用的时候,直接使用。不过还是需要知道是不是LZ需要的。
    3.GetSafeHwnd()是可以获得对话框的句柄,m_hWnd也可以存储对话框的句柄,但是GetDlgItem()又不是万能的,它的使用是有限制的,在一些情况下就是等不到该对话框的句柄的。
    1)就是父窗口没有创建的时候,调用则得不到该ID。
    2)如果不存在父子关系,则也得不到窗口的句柄。
    3)GetDlgItem(IDD_DIALOG1)得到的是cwnd类型,需要强制转化为想要的类型,如(CDialog*)GetDlgItem(IDD_DIALOG1)
      

  4.   

      呵呵,哥们,你用的是拆分窗口,左边是LISTVIEW右边是FORMVIEW,如果是样的话,在MAINFRAM里面就会有个私有的成员变量叫m_spliterwnd,listview的窗体是(0,0),FORMVIEW是(0,1);就该得到FRAM的窗体,再根据spliterwnd,得琶FORMVIEW的窗体,然后再用你那个方法得到对话框的,如下
    ((CPanelBuilderView*)(((CMainFrame*)(AfxGetApp()->m_pMainWnd))->m_SpliterWnd).GetPane(0,1))这是我的代码,你写应该把CPanelBuilderView转换成LISTVIEW吧,然后再得到对话框即可,当然后你要将FRAME里的spliterwnd改成公有的成员变量
      

  5.   

    谢谢大家。我觉得楼上的也说的很有道理。我会好好学习的。
    我最后的解决方法是通过全局变量
    反正是DWORD类型的。就直接可以拿来用了
    谢谢大家!楼上的又让我长了不少知识
    结贴!