精华内容
下载资源
问答
  • AfxGetApp

    2017-05-15 16:21:13
    AfxGetApp() 返回的的是 theApp 对象的地址

    AfxGetApp() 返回的的是 theApp 对象的地址

    展开全文
  • AfxGetApp用法

    2017-06-23 16:07:41
    AfxGetApp( )是全局的。 AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。 比如在全局函数中要向对话框中的列表写数据。 void writeString(char*...

    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();   
    我通常把一些重要的工程一开始就需要初始化的并且在其它地方类中都要用到的变量或
    函数定义在C***App类中,然通过此函数获得这些变量或函数。
    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())

    展开全文
  • GetSafeHwnd AfxGetApp

    2010-08-18 23:51:00
    GetSafeHwnd AfxGetApp

    1)cwnd::GetSafeHwnd

          当我们想得到一个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数,通过下面的例子来看其理由:

      CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器,获取窗口指针

      HWND hwnd = pwnd->m_hwnd; //得到它的HWND

     

      这样的代码当开始得到的pwnd为空的时候就会出现一个“General protection error”,并关闭应用程序,因为一般不能对一个NULL指针访问其成员,如果用下面的代码:

      CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器

      HWND hwnd = pwnd->GetSafeHwnd(); //得到它的HWND

      就不会出现问题,因为尽管当pwnd是NULL时,GetSafeHwnd仍然可以用,只是返回NULL,通过GetSafeHwnd()的实现代码就更清楚了:

      _AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const

      {

      return this == NULL?NULL:m_hWnd;

      }

     

      你看有很多函数的参数要求HWND,它就可以派上用场了.

      HWND hwnd;

      CWnd* pWnd;

      pWnd=((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();

      hwnd=pWnd->GetDlgItem(IDC_EDIT2)->GetSafeHwnd();

     

      ::SetWindowText(hwnd,m_strResult);

     

    总之,可以理解为:由于窗口指针和句柄是两个不同的概念(句柄是由系统分配的),所以CWnd类提供了从指针到句柄的转换,你可以使用它来获得对应窗口的句柄; 同时你也可以采用-> m_hWnd来尝试获得对应窗口的句柄!

     

    2) AfxGetApp(全局函数)

    这个函数在VC当中很常见,主要是用来获取当前App的CWinApp类指针一般情况下将其强制类型转换成你自己写的App类就可以调用里面的方法了

    通常把一些重要的工程一开始就需要初始化的并且在其它地方类中都要用到的变量或函数定义在C***App类中,然通过此函数

    AfxGetApp获得这些变量或函数。如果你定义为取全局变量,只需在需要的地方用extern声名即可。如果把变量在你的C*App类中定义,就可以通过通过AfxGetApp()获取C*App的指针,这样就可以调用它的变量了.如果是全局变量,这不需要用这个函数调用它AfxGetApp()的返回值是指向theApp的指针,与全局变量无关。

     

     

    例子

        afxgetapp    --    取应用程序实例指针  

        getmainwnd   --    取主窗口对象指针

    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类中变量的调用。

     

    ps:

    (1) CWnd* pWnd = AfxGetApp()->GetMainWnd();  //get pwnd 

    (2)CTestApp *pApp=(CTestApp *)AfxGetApp( );      

    // get a pointer to the CTestApp class object. then pApp can call the member function and data in class CTestApp


     

     

     

    展开全文
  • strstrsubstr、AfxGetApp

    2018-11-13 09:37:16
    1.strstr(str1,str2) 函数用于判断...AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp类型的,通过这个指针可以访问到这个进程中的对象。 比如在全局函数中要向对话框中的列表写数据。 void writeSt...

    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())

    展开全文
  • AfxGetApp的仔细讲解

    千次阅读 2015-10-24 19:46:40
    本文是学习深入浅出MFC后的第一个笔记,解析AfxGetApp()函数 在AFXWIN.H中是这么定义的:  CWinApp* AFXAPI AfxGetApp(); 那么AfxGetApp是怎么获取当前App的CWinApp类指针呢? AfxGetApp是一个内联函数...
  • afxGetApp解析

    2010-04-16 16:03:00
    MFC中有不少的全局函数,方便在不同...主要全局函数有:AfxWinInit() AfxBeginThread() AfxEndThread() AfxFormatString1() AfxFormatString2()AfxMessageBox() AfxOutPutDebugString() AfxGetApp() AfxGetMainW
  • AfxGetApp()

    2014-06-11 12:54:52
    AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。
  • AfxGetApp()解析

    2015-07-26 14:34:08
    AfxGetApp( )是全局的。 AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。 比如在全局函数中要向对话框中的列表写数据。 void writeString(char* ...
  • AfxGetApp()

    2012-05-11 21:57:41
    AfxGetApp( )是全局的。 CWinApp* AfxGetApp( ); Return Value A pointer to the single CWinApp object for the application. //返回一个应用程序的CWinApp对象的指针 Remarks The pointer returned by...
  • AfxGetApp 解剖

    2009-01-01 00:38:00
    MFC中有不少的全局函数,方便在不同...主要全局函数有:AfxWinInit() AfxBeginThread() AfxEndThread() AfxFormatString1() AfxFormatString2()AfxMessageBox() AfxOutPutDebugString() AfxGetApp() AfxGetMainW
  • AfxGetApp( )是全局的。 AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。 比如在全局函数中要向对话框中的列表写数据。 void writeString(char* ...
  •  AfxGetApp()的使用 AfxGetApp( )是全局的。 AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。 比如在全局函数中要向对话框中的列表写数据。 ...
  • AfxGetApp()解析

    千次阅读 2012-03-19 16:38:40
    解析AfxGetApp()函数 本文是学习深入浅出MFC后的第一个笔记,解析AfxGetApp()函数 在AFXWIN.H中是这么定义的:  CWinApp* AFXAPI AfxGetApp(); 那么AfxGetApp是怎么获取当前App的CWinApp类指针呢? AfxGetApp...
  • AfxGetApp()的使用

    千次阅读 2015-10-29 16:21:12
    AfxGetApp( )是全局的。 AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。 m_pMainWnd 这是一个匈牙利表示法。m_p开头表示该变量为某个类的...
  • afxgetapp()

    2010-10-12 22:22:00
    在exe和dll中进行切换 afxgetapp()这个函数在vc中很常见,主要是用来获的cwinapp生成的全局对象。一般情况是将其强制类型转换成自己写的App类就可以里面的方法。但是如果编写的是dll程序的话,情况会稍有不同...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,188
精华内容 5,675
关键字:

afxgetapp