1、我想在程序一运行,但是属性页还没有弹出的时候记录属性页上的默认值,在弹出属性页然后设置之后记录下变化,并且当下次打开属性页时属性页的默认值为上次改动后的值,请问怎么办啊。
  2、还有属性页上确定按钮的动作是不是在第一个属性页上的OnOK()里控制啊啊?
  3、我现在不同属性页间传递变量是如下使用的,
  在属性页a中:   
   CView *pView = (CView*) this->GetParent();
   a的成员 = pView->属性页b->成员变量;
  可是每次返回的是未赋值的值,问题处在哪里?

解决方案 »

  1.   

    2. 在OnApply()中;
    1. 和对话框一样用控件变量好了;
    3. LRESULT QuerySiblings(
       WPARAM wParam,
       LPARAM lParam 
    );
    OnQuerySiblings( WPARAM wParam, LPARAM lParam )
      

  2.   

    1。CPropertySheet构造函数中最后一个参数为,在定义你的CPropertySheet对象时把你记录下来的上次改动后的值传给iSelectPage变量就可以了,这个值可以用GetActiveIndex( ) 得到。
    2。OnOK()是确定你对属性页所作的修改,关闭对话框并发送通知给框架的,OnApply是你对属性页所作的修改都被确认,但对话框仍然有焦点 
    3。如果是多文档的话
    CMDIFrameWnd *pFrame = 
                 (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;// Get the active MDI child window.
    CMDIChildWnd *pChild = 
                 (CMDIChildWnd *) pFrame->GetActiveFrame();// or CMDIChildWnd *pChild = pFrame->MDIGetActive();// Get the active view attached to the active MDI child
    // window.
    CMyView *pView = (CMyView *) pChild->GetActiveView();
    单文档类似
      

  3.   

    如果你想访问属性页的每一个页面的属性,必须先激活他一次,很多代码都是在显示之前setactivepage一下,然后再显示出来。
      

  4.   


    to: AkiraChing(水银)、Mackz(在相互) 
    2、我看MSDN说iSelectPage是激活页的序号,而我的意思是记录下属性页(多个)上所有控件的改变值啊,按照你说的好像是不能吧????1、关于OnOk();我是不太明白DoModal()函数中到底做了那些动作?
    究竟是在那一页page的OnOk()上?还是在sheet的OnOk()里那:
    我们通常在界面看到的OK按钮到底算是sheet还是各个page上的呢,我自己的实验是如果把动作放在第一个page的OnOk()里则能在不管是那一页的情况下按OK按钮可以出发动作,而如果是放在其它页上则不能完全实现(除非是在动作所在OnOK()的页上)
      

  5.   

    我理解错了,
    1。如果你想记录下来page页各个控件的变化值,下次加载时直接载入变化的值,我觉得你可以用注册表或者是文件,每次属性页加载时从注册表中或者从文件中载入变化的值,如果你是要求在程序没有关闭的情况下实现的话,还可以在domodal返回是把变化的值赋予全局变量,加载时再把全局变量的值赋予属性页。
    2。OnOK是本页的,OnApply是Sheet的
      

  6.   

    每个Page的控件变量就可以访问到每个Page,“我的意思是记录下属性页(多个)上所有控件的改变值啊”,有什么问题吗?
    OnOK和OnApply都是对每个Page的。
      

  7.   

    to:Mackz(在相互) 
    如果OnOk()是对每一页的,那为什么我在第一页的OnOK()中的动作在其它页按OK时候都能触发?
    to:AkiraChing(水银) 
    没关系, 我是这样做的,首先声明一个自己的sheet类,然后把所有的page声明为sheet的成员,page上的控件变量为page的成员,在程序循环的外部建立sheet类,并按照各个page类的构造函数中的值进行页面的初始化,当改变页面上的控件值时page类的成员变量也就记录下了改变,当再次打开属性页的时候就是为改动后的记录了。不过如果控件变量为控制型的话则需要另外的类记录下改变。
    据我观察sheet的DoModal()函数中好像按照某种顺序调用了各个page的初始化函数,和Onok()等函数,不知道说的对不对。
      

  8.   

    OnOK和OnApply都是对每个Page的,这个意思是说,你按下了确定或者应用按钮,这个按钮只有一个,是属于对话框的,对每一个Page都会调用OnOK和OnApply。所以,不存在什么“在其它页按OK时候”,只有在对话框(sheet)才有这个操作。