关于mfc下的文档与视图以及框架之间的访问, 这些问题已经是老生常谈了,但我觉得还是都没有详细的说明,特
当然这些也许都知道是这么用的,但真正的m_pmainwnd与afxgetapp()是什么意思也许有的人不明白. 大家也许都知道如何在app中获得mainframe指针(框架类): cwinapp 中的 m_pmainwnd变量就是cmainframe的指针. 【程序编程相关:ADO VC++ Extensions使】
别是对于英语较差的人,我查看了一些blog,总结了一下!希望对与我一样的人有点帮助! 一: 1: 因为对于sdi程序,主框架窗口就是文档框窗(如果这个也不知道,就要查看一下mfc下的单文档的构成原理了). 下面所说的是关于单文档的. 例子: 在cmainframe框架中如何得到视图类的指针. 可以 先得到框架指针,然后调用 getactiveview 函数指向当前活动视. c **view * pview; pview=(c**view*)((cframewnd*)afxgetapp()->m_pmainwnd)->getactiveview(); 【推荐阅读:Using ADO from C++ 】
所以在别的类下也可以先得到m_pmainwnd,就得到了mainframe的指针. 所以得到视图类的指针,必先 得到cframewnd的指针m_pmainwnd,然后在调用framewnd下的getactiveview 就指向当前活动视. m_pmainwnd的由来: 每一个mfc应用程序都有一个cwinapp派生类的对象.这个对象对应着程序的主线程.而 cwinapp 类中有一个 cwnd * m_pmainwnd 成员变量.这个成员变量记录了应用程序的主窗口.... 下一页