解决方案 »

  1.   

    CPropertySheet::SetActivePage(int nPage) ?
      

  2.   


    但是 转到进程的函数是在一个CPropertyPage里面,
    例如:
    CPropSheet propSheet(L"任务管理器");
    propSheet.SetActivePage(&propSheet.Prop_process);
    其中:CPropSheet 为自定义的CProppertySheet的类
         Prop_process为自定义的CPropertyPage的类还是无效,没有进行切换,应该是我不知道怎么用,你知道具体怎么用吗?
      

  3.   

    CPropSheet propSheet(L"任务管理器");
    --- 这样不对
    在Page里面创建的时候把传入的CPropSheet对象保存下来,而不是再创建一个 。然后调用SetActivePage
      

  4.   

    SetActivePage的参数是int,不是CPropertyPage指针。
      

  5.   

    你的Prop_process的索引应该是1,直接SetActivePage(1);看看。
      

  6.   


    CPropertySheet *pParent = (CPropertySheet *)GetParent();
    pParent->SetActivePage(iPage);
      

  7.   


    但是 转到进程的函数是在一个CPropertyPage里面,
    例如:
    CPropSheet propSheet(L"任务管理器");
    propSheet.SetActivePage(&propSheet.Prop_process);
    其中:CPropSheet 为自定义的CProppertySheet的类
         Prop_process为自定义的CPropertyPage的类还是无效,没有进行切换,应该是我不知道怎么用,你知道具体怎么用吗?CPropertySheet::SetActivePage不是有两个重载函数吗?
    CPropertySheet::SetActivePage(int nPage);
    SetActivePage(CPropertyPage* pPage);
    你用那个索引参数的就行了啊!CPropSheet propSheet(L"任务管理器");
    propSheet.SetActivePage(&propSheet.Prop_process);
    ------------------------------------------------------------------------------------
    你的菜单command消息处理应该在CPropertySheet类中处理吧,你直接搞个栈CPropSheet对象来处理,这个CPropSheet对象是你的原来的那个CPropSheet吗?肯定不是了有三种方法:
    第一种是你的CPropertyPage在create的时候把原来的那个CPropSheet类对象指针作为父窗口传进去
    CPropertyPage::Create(UINT nIDTemplate, CWnd* pParentWnd = NULL)
    然后在菜单command消息处理中采用7楼的方法第二种是在你的CPropertyPage类中保存CPropSheet 对象指针,CPropertyPage对象构造的时候射进去,然后在菜单command消息处理中直接通过这个指针SetActivePage第三中是在你的CPropertyPage类中保存CPropSheet 对象的窗口句柄,CPropertyPage对象构造的时候射进去,然后在菜单command消息处理中通过这个句柄给CPropSheet发送自定义消息,CPropSheet收到这个消息的时候再SetActivePage
      

  8.   


    但是 转到进程的函数是在一个CPropertyPage里面,
    例如:
    CPropSheet propSheet(L"任务管理器");
    propSheet.SetActivePage(&propSheet.Prop_process);
    其中:CPropSheet 为自定义的CProppertySheet的类
         Prop_process为自定义的CPropertyPage的类还是无效,没有进行切换,应该是我不知道怎么用,你知道具体怎么用吗?CPropertySheet::SetActivePage不是有两个重载函数吗?
    CPropertySheet::SetActivePage(int nPage);
    SetActivePage(CPropertyPage* pPage);
    你用那个索引参数的就行了啊!CPropSheet propSheet(L"任务管理器");
    propSheet.SetActivePage(&propSheet.Prop_process);
    ------------------------------------------------------------------------------------
    你的菜单command消息处理应该在CPropertySheet类中处理吧,你直接搞个栈CPropSheet对象来处理,这个CPropSheet对象是你的原来的那个CPropSheet吗?肯定不是了有三种方法:
    第一种是你的CPropertyPage在create的时候把原来的那个CPropSheet类对象指针作为父窗口传进去
    CPropertyPage::Create(UINT nIDTemplate, CWnd* pParentWnd = NULL)
    然后在菜单command消息处理中采用7楼的方法第二种是在你的CPropertyPage类中保存CPropSheet 对象指针,CPropertyPage对象构造的时候射进去,然后在菜单command消息处理中直接通过这个指针SetActivePage第三中是在你的CPropertyPage类中保存CPropSheet 对象的窗口句柄,CPropertyPage对象构造的时候射进去,然后在菜单command消息处理中通过这个句柄给CPropSheet发送自定义消息,CPropSheet收到这个消息的时候再SetActivePage
    谢谢你的帮助,很详细