strstrsubstr、AfxGetApp
1.strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
2.substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。
basic_string::substr
basic_string substr(size_type _Off = 0,size_type _Count = npos) const;
参数
_Off
所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0.
_Count
复制的字符数目
返回值
一个子字符串,从其指定的位置开始
3.AfxGetApp( )是全局的。
AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp类型的,通过这个指针可以访问到这个进程中的对象。
比如在全局函数中要向对话框中的列表写数据。
void writeString(char pString)
{
CWnd* pWnd = AfxGetApp()->GetMainWnd();
CMyDlg * pDlg;
pDlg=(CMyDlg ) pWnd;
pDlg->ShowMsg(pString);
}
AfxGetApp()得到进程指针CWinApp,通过这个指针可以得到pWnd。要不在全局函数里你怎么对已存在的对话框操作呢。
AfxGetApp( )这个函数可以得到当前引用的指针CWinApp*,通过这个指针可以访问到这个进程中的对象。
我们在任何一个VC工程中都会看到一个类似于:
//Test.cpp文件中
CTestApp theApp;(工程名为Test)
的语句。它是指向工程对象的一个指针,你可以用它方向Test工程的成员函数和变量。
如果工程中添加了一个CConfig类,在CConfig中想调用Test工程中的成员函数和变量,则可以这样调用之:
CTestApp *pApp=(CTestApp *)AfxGetApp( );
如果在CTest类中我们声明如下一些变量:
//Test.cpp文件
class CTestApp : public CWinApp
{
public:
CTestApp( );
CString str; //添加的对话框变量
…
}
//Test.cpp文件
CTestApp::CTestApp()
{
str=“abc”;
}
好了,现在我们就在CConfig类中调用str吧!
//Config.cpp文件
CTestApp *pApp=(CTestApp *)AfxGetApp( );
AfxMessageBox(pApp->str);
这样,就实现了对CTestApp类中变量的调用。
afxgetapp – 取应用程序实例指针
getmainwnd – 取主窗口对象指针
这两个函数可以合成一个: afxgetmainwnd();
我通常把一些重要的工程一开始就需要初始化的并且在其它地方类中都要用到的变量或
函数定义在CApp类中,然通过此函数获得这些变量或函数。
AfxGetApp
The pointer returned by this function can be used to access application
information such as the main message-dispatch code or the topmost window.
CWinApp AfxGetApp();
Return Value
A pointer to the single CWinApp object for the application.
Example
// Print the application’s executable filename.
TRACE(“Executable filename = %s/n”, AfxGetApp()->m_pszExeName);
Requirements
Windows CE versions: 2.0 and later
Header file: Declared in Afxwin.h
Platform: H/PC Pro, Palms-size PC, Pocket PC
----
如果你定义为取全局变量,只需在需要的地方用extern声名即可
如果把变量在你的CApp类中定义,就可以通过通过AfxGetApp()获取CApp的指针,这样就可以调用它的变量了.如果是全局变量,这不需要用这个函数调用它AfxGetApp()的返回值是指向theApp的指针,与全局变量无关。
AfxGetApp()这个函数在VC当中很常见,主要是用来获得CWinAPP生成的全局对象的。一般情况下将其强制类型转换成你自己写的App类就可以调用里面的方法了。但是如果编写的是DLL程序的话,情况会稍有不同。你会发现在DLL中调用AfxGetApp这个函数会得到DLL的应用对象。原因出现在DLL的模块状态上。应用程序在调用DLL时为了保证资源不出问题,往往会调用一句:
AFX_MANAGE_STATE(AfxGetStaticModuleState())
注意这是一个宏。他的作用是切换模块的全局变量范围,即把应用程序的那些全局变量拷贝切换到这个DLL的全局变量拷贝,自然用AfxGetApp得到就是DLL里面的这个APP了。如果向访问应用程序的App对象,那么只要把模块状态切换回去就可以了,记着执行完后一定要把状态再切换回来啊,否则就要出问题了。
例如:
// switch thread state back to application
_AFX_THREAD_STATE* pState = AfxGetThreadState();
AfxSetModuleState(pState->m_pPrevModuleState);
// do something with the application
AfxGetApp()->…
// switch thread state back to dll
AFX_MANAGE_STATE(AfxGetStaticModuleState())
strstrsubstr、AfxGetApp相关推荐
- MFC命令行及CCommandLineInfo类
获取命令行的方法: 1.GetCommandLine() 获取输入的所有信息,包括程序所在路径及参数 2.AfxGetApp()->m_lpCmdLine 只包含参数 一般情况下,获取到命令行后 ...
- 标签超出图像控件c语言,VC++标签控件之图像标签控件
一.创建新工程 二.编辑对话框资源 1.添加控件 2.添加位图 点"插入",点"资源", 编辑位图: 三.添加变量 四.添加代码(红色部分) BOOL CCIm ...
- 专利审查指南(2010)
专利审查指南(2010) http://www.chinalaw.gov.cn/article/fgkd/xfg/gwybmgz/201004/20100400253035.shtml来源国务院法制办 ...
- 湖南省中职学业水平测试试题信息技术
试题: 1.按照指法要求,击打空格键,应使用( ). A.左手和右手的食指,因食指最灵活 B.左手或右手的拇指 C.左手或右手的中指 D.左手或右手的无名指 2.显示器的清晰度是由( )决定的. A. ...
- Photoshop入门与进阶实例:1.4 图层的概念和基本操作
1.认识图层 图层功能被誉为Photoshop的灵魂,这个比喻一点也不夸张!图层在我们使用Photoshop进行图像处理中,具有十分重要的地位,也是最常用到的功能之一.掌握图层的概念是我们学习Phot ...
- 2023年你最值得了解的信息技术-AI篇(二)
20688 北京朗阁信息技术有限公司 企业服务 前沿技术 北京市 mailkey 专注云企业邮件领域的产品,随云服务而生. 未融资 MailKey 是北京朗阁信息技术有限公司(以下简称"朗 ...
- 框架、文档、视图类之间的调用关系
在多文档MFC应用程序执行过程中,创建了多于一个的文档类.视图类.子框架类对象和一个主框架类.应用类对象.这些对象之间是通过一定的方式联系在一起的,在应用程序设计中,时常需要通过这些对象之间的关系来实 ...
- 21、深入浅出MFC学习笔记,Application Framework简介
1.Application Framework是一个完整的程序模型:是一组合作无间的对象,彼此藉消息的流动而沟通,并且互相调用对方的函数以求完成任务.<?xml:namespace prefix ...
- 转载:MFC 获得各类指针、句柄的方法
2019独角兽企业重金招聘Python工程师标准>>> <h5> </h5> <p>转载: <p>最近有些人在问MFC编程一些要点,有 ...
最新文章
- 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法
- [Android]你不知道的Android进程化(3)--进程等级
- oracle數據庫any,Oracle权限集合全集
- linux resin 查看日志命令,【转】linux:访问日志分析
- 18. 二叉树的镜像
- cmder 神器 +curl
- cf烟雾头怎么调win7系统
- 蓝桥杯2016年第七届C/C++省赛B组第一题-煤球数目
- Ubuntu13.04安装OpenCV2.4.5
- 多智能体强化学习(二) MAPPO算法详解
- oracle怎么下载安装,Oracle数据库下载与安装的完整步骤
- 一段、两段及三段式状态机的写法——售货机的verilog实现
- java程序throw异常,Java中处理异常throw和throws
- windows10安装配置vim
- 相忘江湖不如相濡以沫(Ⅰ)
- C++ 使用string的头文件和要求
- 钱钟书是怎样做读书笔记的 杨绛
- 广州二手房价分析与预测
- 告别20k/s,利用IDM直链下载网盘资源(油猴)
- 什么是 Wireframe线框图
热门文章
- (翻译)Tricks of the windows game programming Gurus(Windows游戏大师之路) --- 前言(作者:ANDRE LAMOTHE 1999)...
- onvif发送订阅规则
- akshare写etf动量滚动策略
- Java程序编译运行过程
- 验证软件需求正确性的四个角度
- python和revit_pyRevit系列教程1
- python大数据工程师 培训_大数据工程师学习之路
- linux c程序中内核态与用户态内存存储问题
- 为什么NX10帮助功能无法找到HTML,NX10.0 新功能介绍视频教程专辑
- citespace安装如何配置JAVA_citespace超详细安装教程