我自己重载窗口类:
class CCtrMode : public CFormView
{
   ...
}我在另外一类中想取得上面我自定义的类句柄!
请问怎么做啊!

解决方案 »

  1.   

    CCtrMode   myMode;
    myMode.Create(...);
    ....
    myMode.GetSafeHwnd();
      

  2.   

    extern CCtrMode *pCtr;
    pCtr->GetSafeHwnd();
      

  3.   

    ouyh12345 GetSafeHwnd()是返回一个窗口的句柄吧~~~~
    findwindow也是窗口吧
      

  4.   

    对啊,所有的从CWnd类继承的类,都是窗口啊
      

  5.   

    CCtrMode       myMode; 
    myMode.Create(...); 
    .... 
    myMode.GetSafeHwnd();///-------------我想问问:bobob ----------
    你这句:myMode.Create(...); 起什么作用啊?
    创建类么?可是我自定义的这个类里并没有Create()这个函数啊?
    那是不是要用构造函数来创建该类对象呢?可是问题是像这样的类,默认情况下构造函数,释构函数都是被保护的啊!不可以调用!
    难道说得手动把它们改成公有的?能改吗?
    望高手们明示!
      

  6.   

    高手都被下跑了。
    class   CCtrMode   :   public   CFormView 

          ... 

    这就相当于把CFormView类复制一份,把名字改成CCtrMode,其它地方可以做了些改动,改动记在{}里面。
      

  7.   

    CCtrMode               myMode;   
    myMode.Create(...);   
    ....   
    myMode.GetSafeHwnd(); ///-------------我想问问:bobob   ---------- 
    你这句:myMode.Create(...);   起什么作用啊? 
    创建类么?可是我自定义的这个类里并没有Create()这个函数啊? 
    那是不是要用构造函数来创建该类对象呢?可是问题是像这样的类,默认情况下构造函数,释构函数都是被保护的啊!不可以调用! 
    难道说得手动把它们改成公有的?能改吗? 
    望高手们明示!myMode.Create(...); 其实是把一个类和一个对象联系起来否则myMode.GetSafeHwnd()得到的是NULL
      

  8.   

    只定义一个类的实例,不create的话,那就是一个空壳子,里面不会有句柄
    create就是为这个类关联一个句柄。指针和句柄的区别,句柄就是一个指针,而且是全局的,指针不一定是句柄。你自己定义了从cformview继承的一个窗口类,比如
    CCtrMode       myMode;那你要先create,指定窗口的风格,父窗口等等信息,然后可以调用GetSafeHwnd得到句柄,这个句柄是操作系统范围内唯一的,其他进程也可以使用。Handle  hWnd=myMode.GetSafeHwnd();
    这个hWnd就是你要的句柄