龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

解析VC++6中的指针(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
在框架类中调用文档类、视图类 这里我们可以利用GetActiveXXXXX()去掉用当前激活的文档和视图: CMyDoc* pDoc=(CMyDoc*)GetActiveDocument(); CMyView* pView=(CMyView*)GetAct

   在框架类中调用文档类、视图类

   这里我们可以利用GetActiveXXXXX()去掉用当前激活的文档和视图:

   CMyDoc*  pDoc=(CMyDoc*)GetActiveDocument();
   CMyView* pView=(CMyView*)GetActiveView();

   获得应用程序指针

   这个很简单,一句话搞定:

   CMyApp* pApp=(CMyApp*)AfxGetApp();

   获得主框架指针

   在类CWinThread里面有一个公有的成员变量:CWnd* m_pMainWnd; 它存在的主要目的就是提供我们获得CWnd指针,我们可以利用它来达到我们的目的:

   CMainFrame* pFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
  
   通过鼠标获得子窗口指针

   这里我们要用到一个不太常用的函数:ChildWindowFromPoint。他的原型如下:

   CWnd* ChildWindowFromPoint(POINT point) const;

   CWnd* ChildWindowFromPoint(POINT point,UINT nFlags) const;

   这个函数用于确定包含指定点的子窗口,如果指定点在客户区之外,函数返回NULL;如果指定点在客户区内,但是不属于任何一个子窗口,函数返回该CWnd的指针;如果有多个子窗口包含指定点,则返回第一个子窗口的指针。不过,这里还要注意的是:该函数返回的是一个伪窗口指针,不能将它保存起来供以后使用。

   对于第二个参数nFlags有几个含义:

   CWP_ALL             file://不忽略任何子窗口
   CWP_SKIPNIVSIBLE    file://忽略不可见子窗口
   CWP_SKIPDISABLED    file://忽略禁止的子窗口
  CWP_SKIPRANSPARENT  file://忽略透明子窗口

精彩图集

赞助商链接