vc2005下SDI或MDI程序首先 建立了一个CFormView的子类,比如叫 ViewA 该子类中有控件变量, 比如CListCtrl
然后 从外面找了个CToolBar的派生类,这个类的创建函数 使用了 RUNTIME_CLASS(),而RUNTIME_CLASS()中的参数类就是ViewA 
现在 在程序中添加了个CToolBar的派生类的变量,比如叫ToolA 程序运行时 看见了 工具栏, 同时工具栏中的那个控件变量也显示了问题是, 如何从程序框架访问 工具栏中的那个控件?工具栏ToolA的类型是CToolBar 的派生类, 而ListCtrl控件在CFormView的子类中,如何访问ListCtrl控件呢 ? 谢谢 !

解决方案 »

  1.   

    HWND GetDlgItem(
      HWND hDlg,       // handle of dialog box
      int nIDDlgItem   // identifier of control
    );
    这个不可以吗?
      

  2.   

    个人意见仅供参考:
    你的ListCtrl可以看见说明这个句柄创建成功了;
    你可以:

       CView *pView =pView->IsKindOf(RUNTIME_CLASS(ViewA));
           // in ViewA class,  public: CListCtrl list;
           要访问ListCtrl控件句柄 = pView->list;
      
      

  3.   

    zhanbin250 { 
       CView   *pView   =pView-> IsKindOf(RUNTIME_CLASS(ViewA)); 
                  //   in   ViewA   class,     public:   CListCtrl   list; 
                  要访问ListCtrl控件句柄   =   pView-> list; 
        
    }IsKindOf的 返回类型 是 BOOL   啊  
      

  4.   

    RUNTIME_CLASS(ViewA)   动态创建 ;得到ViewA的句柄
      

  5.   

    可如何在ToolBar创建的时候 单独保留这个句柄呢 ?谢谢
      

  6.   

    把CToolBar派生类对象作为ViewA的成员变量
      

  7.   

    vc2005下SDI或MDI程序首先   建立了一个CFormView的子类,比如叫   ViewA   该子类中有控件变量,   比如CListCtrl
    然后   从外面找了个CToolBar的派生类,这个类的创建函数   使用了   RUNTIME_CLASS(),而RUNTIME_CLASS()中的参数类就是ViewA  
    现在   在程序中添加了个CToolBar的派生类的变量,比如叫ToolA   程序运行时   看见了   工具栏,   同时工具栏中的那个控件变量也显示了问题是,   如何从程序框架访问   工具栏中的那个控件?工具栏ToolA的类型是CToolBar   的派生类,   而ListCtrl控件在CFormView的子类中, 
    TO Mackz  创建的子窗口作为成员变量啊。
    你说的子窗口是那个工具栏么 ? 工具栏是主视图的成员, 但他的类型是一个toolbar的子类,而List是ViewA的成员, 除非能把生成的工具栏以ViewA的类型作为主视图的成员, 否则我感觉从主视图不好访问到List控件,而现在好像有不好把工具栏以ViewA的类型作为主视图的成员To xbl2003
      你的想法似乎不行 工具栏是一Toolbar子类的形式创建的, 如果Toolbar成为ViewA的成员, 我怎么创建呢 ?现在如果能以 Toolbar子类和ViewA作为基类, 写一个多继承的类,理论上似乎能够达到从主视图访问List的要求, 但本人内功不够 编译不过, 不知道各位还有什么办法?
    谢谢