当前位置:首页 > 芯闻号 > 充电吧
[导读]一般我们使用的框架是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 亚马逊 Meta 谷歌 微软

上海2024年5月9日 /美通社/ -- 2024年5月6日,国际公认的测试、检验和认证机构SGS通标标准技术服务有限公司(以下简称“SGS”)为上海复旦微电子集团股份有限公司(以下简称“复旦微电子集团”)颁发了ISO...

关键字: ISO 微电子 半导体 TI

慕尼黑2024年5月9日 /美通社/ -- TÜV南德意志集团(以下简称"TÜV南德")持续保障安全、可靠及可持续发展。作为全球化的服务提供商,TÜV南德2023年全年营收达约31亿欧元,首次突破30亿欧元大关,同比增长...

关键字: BSP 可持续发展 数字化 人工智能

韩国大田2024年5月9日 /美通社/ -- 机器人平台专业公司Rainbow Robotics(首席执行官Jungho Lee)将从5月8日起开启移动双臂机器人RB-Y1的预售。

关键字: 移动 双臂机器人 ROBOTICS AI

美国旧金山和中国苏州2024年5月9日 /美通社/ -- 信达生物制药集团(香港联交所股票代码:01801),一家致力于研发、生产和销售肿瘤、自身免疫、代谢及心血管、眼科等重大疾病领域创新药物的生物制药公司,今日宣布胰高...

关键字: 血糖 AMS 血压 HB

亚利桑那州斯科茨代尔2024年5月9日 /美通社/ --全球领先的成像 CRO 技术和服务提供商 Imaging Endpoints (IE) 宣布成立新的子公司 Revolution Endpoints,专注于利用公司...

关键字: 医疗保健 CRO 技术

魁北克城2024年5月9日 /美通社/ -- LeddarTech Holdings Inc. ("LeddarTech")(纳斯达克:LDTC)和Immervision Inc. 欣然共同宣布了一项合作,旨在简化...

关键字: LED ADAS 人工智能 传感器

加利福尼亚州圣马特奥2024年5月9日 /美通社/ -- 生成式人工智能 (AI) 客户服务自动化领域的全球领导者 Yellow.ai 今天推出了 Orchestrator LLM,这是业界首创的代理模式,可在进行个性化...

关键字: AI 人工智能 自动化 机器人

作为全球知名的独立内燃机制造商,康明斯不断聚力,2020年,其旗下的合资公司北京福田康明斯发动机有限公司更是成功跻身全球“灯塔工厂”,为行业提供了落地样板。

关键字: 发动机 智能制造

大象汽车北美公司与加拿大最大的上装厂及经销商ITD工业公司签署加拿大独家经销合作备忘录。 双方将探索在加拿大市场提供组装制造服务的合资企业。 香港2024年5月8日 /美通社/ -- 5月8日,全球领先的...

关键字: 汽车 电动 新能源 氢燃料电池
关闭
关闭