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声名即可
如果把变量在你的C
App类中定义,就可以通过通过AfxGetApp()获取C
App的指针,这样就可以调用它的变量了.如果是全局变量,这不需要用这个函数调用它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())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下修改SSH登录端口

Linux下修改SSH登录端口LINUX 的默认SSH 端口是 22。为了防止别人暴力破解,建议修改SSH 访问端口:vim /etc/ssh/sshd_config 找到Port 22 这一行,这是是默认端口22,现在改成Port 1234这个数字自己定,但是不要超过65536…

五岁的时候,你在干什么?

文章写在2021.2.7号——想不到啊想不到,这么快你就五岁了。今天是楠哥的生日,在五年前的今天,小伙子在深圳宝安妇幼出生,刚出生的时候,样子很丑,第一次见面,我心情很紧张,不怎么敢靠…

GetLocalTime

GetLocalTime是一个Windows API 函数,用来获取当地的当前系统日期和时间。 函数原型: VOID GetLocalTime( LPSYSTEMTIME lpSystemTime //address of system times structure ); 参数说明: lpSystemTime: 指向一个用户自定义包含日期和时间信息的类型为 SYSTEMTIME 的…

Java集合(7):散列与散列码

散列的价值在于速度。我们使用数组来保存键的信息,这个信息并不是键本身,而是通过键对象生成一个数字(散列码),作为数组下标。由于数组的容量是固定的,而散列容器的大小是可变的,所以不同的键可以产生相同的数组下标(散…

301转向代码合集

教育资源网将SEO工作中所需要的301转向代码进行了整理,收藏并分享,以备查阅。 1、IIS下301设置 Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。 2、ASP下的301转向…

TQ210——核心板和底板

TQ210——核心板和底板 1、TQ210简介【TQ210_COREB核心板 TQ210_BOARD_V4底板】 三星Cortex-A8 S5PV210芯片,运行最大频率1GHZ,处理器内部为64/32位总线结构,32/32KB一级缓存,512KB二级缓存。自带3D加速引擎(SGX540&a…

“华为天才少年”自制百大Up奖杯,网友:技术难度不高侮辱性极强

来源:雷锋网B站硬核黑科技Up主、AI算法工程师稚晖君,停更了好一阵子后,这位自称野生钢铁侠的超硬核Up主终于又发布了新作品。之所以停更这么久,Up主解释说,不是因为在野外被捕了,纯粹是因为工作太忙了。熟悉…

CListBox的函数

CListBox::GetCurSel 函数原型: int GetCursel( ) const; 返回值: 从当前选中的项的索引为零开始。如果没有项目被当前选定或如果列表框是一个多次选择列表框,则返回LB_ERR。 说明: 从当前选中的项的索引为零开始,如果任何的,在…

终极教程,带具体实验现象,1个GPIO控制2个LED显示4种状态,欢迎讨论!

芯片之家前几天发了一篇文章,讨论1个GPIO控制2个LED显示4种状态,并没有带具体的实验现象,有点小遗憾:绝妙!1个GPIO控制2个LED显示4种状态,什么?你不信?(点击阅读&#xf…

【转载】AE表达式中英文对照

全局对象 Comp comp(name) 用另一个名字给合成命名。 Footage footage(name) 用另一个名字给脚本标志命名。 Comp thisComp 描述合成内容的表达式。例如:thisComp.layer(2) Layer, Light, or Camera thisLayer 是对层本身的描述,thisLayer是一个默认的对…

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #15 ramzswap

HACK #15 ramzswap 本节介绍将一部分内存作为交换设备使用的ramzswap。ramzswap是将一部分内存空间作为交换设备使用的基于RAM的块设备。对要换出(swapout)的页面进行压缩后,不是写入磁盘,而是写入内存。可以使用的内存仅为完成压…

TQ210——底板部分原理图

TQ210——底板部分原理图 1、主电源接口(过压过流保护) 2、串行接口 2路5线RS232电平的DB9接口,4路TTLT电平扩展接口 COM1和PC之间通信需使用直连串口线 COM2和PC通信需使用交叉串口线 接口UART2可接GPRS模块实现打电话发短信功能&#xff1b…

DebugOutputString 使用

https://blog.csdn.net/wolfinrain/article/details/2444040

有趣的灵魂百里挑一,Linux同学你低下头干嘛,起来说下这个问题。

今天我们不讲源码,不说面试题,我们来说点轻松的,聊点好玩的,我们来看看linux下有哪些酷酷的,有意思的命令。0x00 sl - 呜呜,让开,小火车来啦0x01 cowsay - 一起来 say hello0x02 cmatrix - 超级…

北电PBX资料_LD 24 進線直撥功能設定

LD 24 進線直撥功能設定 程式提示 輸入指令符號 說 明 備 註 REQ NEW 新建 CHG 修改 OUT 刪除 END 結束 PRT 查看 TYPE DIS DISA CUST 0 第 0 客戶群 SPWD (不顯示) 輸入 1234 DN DISA 之代號(不可與其它編碼衝突) AUTR (NO)/YES NO - 系統不代輸入功能碼 YES- 撥號者可直按特權…

nodejs在cmd提示不是内部或外部命令解决方法

今天用cmd安装个库,结果发现node不是内部命令,于是搜索了下解决方法,解决方法是: . 找到变量值中node的安装地址,比如C:develop\nodejs,如果不是这个地址改成现在新的安装的地址,然后保存,重新打开cmd,输入 node -v 查看版本号,就会发现一切正常啦!当然这只针对于安…

TQ210——常见问题

TQ210——常见问题 1、TQ210板子使用几V供电,接几寸屏,哪种屏? TQ210 V3版使用的是12V1A的稳定电源,TQ210V4版使用的是5V2A的稳定电源,两个版本都可以使用7寸TN92型号的电容屏或者电阻屏,使用的时候在LCD…

float型数据与字节数组的转化

https://blog.csdn.net/sygdp21/article/details/20476697

用mtrace定位内存泄漏

一. 缘起有的公众号读者,看完我上次写给大学生的查bug方法后,希望我多分享一些查bug的实践经验和具体步骤,比如如何查内存泄漏和core dump问题。所以,就打算写这篇文章。二. 内存泄漏简介内存泄漏,是一个谈虎色变的问题…

为什么每个人都应该尝试Ubuntu下篇 Why Everyone Should Try Ubuntu 分享

但是老实说,我认为 Ubuntu 拥有长期的生存能力重要于其短期的实用主义。最近几年来,对于改进 Linux 桌面方面,Ubuntu 做得比其他发行版本要多。这就是我已详细讨论的,其带来的实际好处,但它也有许多不明确的地方。感谢…