zoukankan      html  css  js  c++  java
  • CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow

      原文链接:http://blog.chinaunix.net/uid-14607221-id-2794642.html

      1、

      PreCreateWindow:
      Called by the framework before the creation of the Windows window 
      attached to this CWnd object.
      (译:在窗口被创建并attach到this指针所指的CWnd对象之前,被framework调用)
      PreSubclassWindow:
      This member function is called by the framework to allow other necessary 
      subclassing to occur before the window is subclassed.
      (译:在window被subclassed之前被framework调用,用来允许其它必要的subclassing发生)
    虽然我已有译文,但还是让我对CWnd的attach和窗口的subclass作简单的解释吧!要理解attach,我们必须要知道一个C++的CWnd对象和窗口(window)的区别:window就是实在的窗口,而CWnd就是MFC用类对window所进行C++封装。attach,就是把窗口附加到CWnd对象上操作。附加(attach)完成后,CWnd对象才和窗口发生了联系。窗口的subclass是指修改窗口过程的操作,而不是面向对象中的派生子类

      2、

      也在调用函数SetWindowLong进行窗口subclass前调用了PreSubclassWindow.
      通常情况下窗口是由用户创建的 CWnd::Create(..) 
      ●在此流程中,MFC提供一个机会"PreCreateWindow()供用户在创建前作点手脚 
      而对于对话框等,窗口是通过subclass方式交给用户的 
      系统读入对话框模板,建立其中各个子窗口 
      然后将各子窗口的 消息处理函数替换成 对应的C++对象 的消息处理函数 (Subclass:子类化,或"接管") ,然后,这个子窗口就会按类中定义的方式来动作了。 
      在此过程中,调用的是CWnd:SubclassWindow( HWND hWnd ); 
      ●在此流程中,MFC提供一个机会"PreSubclassWindow" 供用户在关联前作点手脚 
      具体来说,如果你定义一个窗口(如CButton派生类CMyButton),然后使用对话框数据交换将一个按钮与自己的派生类对象关联,这时候,一些"建立前"的处理就应该写在"PreSubclassWindow"中。 
      如果你用的不是"对话框数据关联",而是在OnInitDialg中自己创建m_mybtn.Create(...) 
      这时候,一些"建立前"的处理就应该写在 "PreCreateWindow"中。
  • 相关阅读:
    友盟上报 IOS
    UTF8编码
    Hill加密算法
    Base64编码
    Logistic Regression 算法向量化实现及心得
    152. Maximum Product Subarray(中等, 神奇的 swap)
    216. Combination Sum III(medium, backtrack, 本类问题做的最快的一次)
    77. Combinations(medium, backtrack, 重要, 弄了1小时)
    47. Permutations II(medium, backtrack, 重要, 条件较难思考)
    3.5 find() 判断是否存在某元素
  • 原文地址:https://www.cnblogs.com/kanite/p/8965877.html
Copyright © 2011-2022 走看看