当前位置:首页 > 芯闻号 > 充电吧
[导读]一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针获取和操作问题。下 面这节内容主要是一般的框架,然后再讲多线程中的指针使用

一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针获取和操作问题。

下 面这节内容主要是一般的框架,然后再讲多线程中的指针使用。使用到的类需要包含响应的头文件。首先一般获得本类(视,文档,对话框都支持)实例指针 this,用this的目的,主要可以通过类中的函数向其他类或者函数中发指针,以便于在非本类中操作和使用本类中的功能。 这其中的关键在于理解 m_pMainWnd, AfxGetApp(),AfxGetMainWnd() 的意义!

1) 在View中获得Doc指针

CYouSDIDoc *pDoc=GetDocument();一个视只能有一个文档。

2) 在App中获得MainFrame指针

CWinApp 中的 m_pMainWnd变量就是MainFrame的指针,也可以: CMainFrame *pMain =(CMainFrame *)AfxGetMainWnd();

3) 在View中获得MainFrame指针

CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;

4) 获得View(已建立)指针

CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;

CyouView *pView=(CyouView *)pMain->GetActiveView();

5) 获得当前文档指针

CDocument * pCurrentDoc =(CFrameWnd *)m_pMainWnd->GetActiveDocument();

6) 获得状态栏与工具栏指针

CStatusBar * pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);

CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);

7) 如果框架中加入工具栏和状态栏变量还可以这样

(CMainFrame *)GetParent()->m_wndToolBar;

(CMainFrame *)GetParent()->m_wndStatusBar;

8) 在Mainframe获得菜单指针

CMenu *pMenu=m_pMainWnd->GetMenu();

9) 在任何类中获得应用程序类

AfxGetInstanceHandle 得到句柄,AfxGetApp 得到指针

B1.如何在自己的类和“应用程序类”中获得“文档类”的句柄?

SDI AfxGetMainWnd() -> GetActiveView() -> GetDocument() 得到指针

MDI AfxGetMainWnd() -> MDIGetActive() -> GetActiveView() -> GetDocument() 得到指针

B3.如何在“框架类”中获得“文档类”句柄?

SDI GetActiveView() -> GetDocument() 得到指针,MDI MDIGetActive() -> GetActiveView() -> GetDocument() 从 CMainFrame 得到指针,GetActiveView() -> GetDocument() 从 CChildFrame 得到指针

B4.如何在“视图类”中获得“文档类”句柄?

GetDocument()

C1.如何在“文档类”中获得“视图类”句柄?

GetView(),调用 GetFirstViewPosition 和 GetNextView 函数得到指针。

C2.如何在自己的类和“应用程序类”中获得“视图类”句柄?

SDI GetActiveView 得到指针

MDI MDIGetActive() -> GetActiveView() 从 CMainFrame 得到指针,GetActiveView 从 CChildFrame 得到指针

 

最后提醒大家,在提取到各个句柄之后,因为初次提取的都是标准类句柄,所以,在使用时要注意将标准句柄转换成自己的类的句柄。

如:

AfxGetApp();//得到的是WinApp类的句柄,

所以操作前记得转换成自己定义的类的句柄。

如:

((CMyApp*)AfxGetApp())->XXXX();//这的xxxx()就是你定义的类中间的成员。

 

MFC全局函数:

AfxFreeLibrary:释放动态链接库 

AfxGetApp:获取当前CWinApp对象指针.

AfxGetAppName:获取应用程序名 

AfxGetInstanceHandle:获取当前应用程序句柄 

AfxGetMainWnd:获取应用程序主窗口指针 

AfxGetResourceHandle:获取资源句柄

AfxInitRichEdit:初始换1.0版本的rich edit控件 

AfxInitRichEdit2:初始换2.0版本的rich edit控件

AfxLoadLibrary:加载动态链接库 

AfxRegisterWndClass:注册窗口类 

AfxSocketInit:初始化Windows Socket 

AfxSetResourceHandle:设置资源句柄

AfxRegisterClass:注册一个窗口类 

AfxBeginThread:创建新线程

AfxEndThread:终止线程 

AfxGetThread:获取当前CWinThread对象指针.

AfxWinInit:WinMain函数主调,初始化CWinApp 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着人工智能(AI)模型变得越来越复杂,数据量不断攀升,数据中心正在通过改变系统架构,来实现更快、更高效的处理。

关键字: AI 连接器

Mar. 28, 2024 ---- TrendForce集邦咨询表示,除了铠侠(Kioxia)和西部数据(WDC)自今年第一季起提升产能利用率外,其它供应商大致维持低投产策略。尽管第二季NAND Flash采购量较第一...

关键字: SSD NAND Flash 智能手机

3月28日,美光宣布通过西安市善导公益慈善协会向西安市助爱小餐社区残疾人就业项目捐赠110余万元人民币。这笔捐款将资助130辆爱心移动餐车,为西安市创造至少130个残疾人就业岗位,助力残疾人及其家庭提高收入。

关键字: Micron

业内消息,据阿里巴巴内部人士透露,1688 近期启动全面入淘,先期开设三家店铺,后续这些店铺将整合成一个类似天猫超市的频道,并在淘宝推出 1688 严选贴牌的源头厂货。这意味着,1688 将携带百万源头厂商直接入驻淘宝。

关键字: 阿里巴巴 1688 淘宝

本周从内部人士处获知,运动科技公司Keep计划收缩线下健身运动空间Keepland,在运营部门进行了裁员,广州的拓店计划也因为裁员宣告结束,同时,目前北京仍在营业中的Keepland也将在租约到期后不再续签,陆续关闭自营...

关键字: 裁员 Keep

近日,胡润研究院发布《2024家大业大酒·胡润全球富豪榜》。70岁的钟睒睒财富比去年缩水9%,以4500亿元连续第四次成为中国首富,位于全球第21位,同比下降6位。44岁的黄峥财富比去年增长71%,即1600亿元,是今年...

关键字: 钟睒睒 AI

近日,社交媒体巨头Meta(Facebook)创始人马克・扎克伯格将其价值3亿美金的超级游艇开到了美国,这艘游艇名为“Project 1010”,目前位于佛罗里达州劳德代尔的埃弗格莱斯港,此举恰逢其40岁生日之前,引发外...

关键字: 扎克伯格 Meta Facebook

业内消息,上周索尼集团宣布将从2024财年开始提高索尼集团及两家附属运营公司员工的工资水平。对于主管级别的正式员工,每月最多增加超5万日元(约合2387元人民币),工资上涨水平与2023年相同,新员工的起薪也将在目前的基...

关键字: 加薪 索尼

本轮融资资金将用于已规模化供货的7纳米车规级芯片“龍鹰一号”的进一步量产和供货、基于“龍鹰一号”的高端智能座舱及舱行泊一体方案的市场推广,以及全场景高阶智驾新品AD1000的测试验证和市场导入。

关键字: 芯擎科技 芯片

根据戴尔日前发布的一份文件,该公司在过去一年里裁掉了大约6000名员工,以改善财务状况。

关键字: 戴尔 AI
关闭
关闭