为什么有此一问呢?
因为我在PreCreateWindow和OnCreate中都得到不view类区的大小,在这两个函数里面得到的窗口的起点x,y和宽高cx,cy都是0.
但当View类创建完成后,再用GetWindowRect或者GetClientRect都能得到view类的大小.问题:
  1.CMainFrame是怎么控制view类的大小的呢?
  2.在哪里可以得到这个大小呢?(不是创建完成再获得,要创建完成前得到)

解决方案 »

  1.   

    在你的View类的OnInitialUpdate函数中PostMessage一个自定义的消息,然后在该自定义消息的想要函数中去GetWindowRect()获取View的区域
      

  2.   

    OnInitialUpdate这个可以回答第二个问题.
    但是CMainFrame是在哪里控制这个大小的呢?
      

  3.   

    依次回答你1,2问题:
    1.不是在CMainFrame控制view类的大小,而是从CMDIChildWnd继承类的
    PreCreateWindow函数里控制大小的
    2.在CMDIChildWnd继承类的OnCreate函数获取大小,此时是真实的大小.
      

  4.   

     1.CMainFrame是怎么控制view类的大小的呢?
       
     BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
     
     CREATESTRUCT 结构体里的。CX与CY就是宽和高了。如果你是需要在启动程序时人为控制 VIEW类的大小可以在此得新对CX与CY赋值.
     
       
      

  5.   


    不对吧,View类是继承的CWnd类(单文档中)吧,并不是CMDIChildWnd,View类是有自己的x,y,cx,cy的,但是这些个值是在什么时候,被谁写入的呢?(在View类被创建前和创建时都还没有大小)
      

  6.   


    注意:虽然View类的大小是由这里的值决定,但是不相同,并且CMainFrame::PreCreateWindow是CMainFrame创建前,并不是View类创建前,这个时候View类都还没有呢?  我想知道的是,是谁,在什么时候把view类的大小写入view类的数据中的?
      

  7.   

    查基类默认CREATESTRUCT结构数据看看,我没尝试过,可能要一层层的向上查找.