MFC-AfxGetApp获取当前进程的指针

 

复制代码
CWinApp* pwin = NULL;
void CAfxGetAppDlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码

    pwin= AfxGetApp();//获取当前应用进程的指针
    //确切的说是获取由CWinApp派生出类的对象
    //通过这个指针可以访问到这个进程中的对象


    CWnd* pWnd = pwin->GetMainWnd();//获取主窗口指针
    CAfxGetAppDlg* pDlg= (CAfxGetAppDlg*)pWnd;
    //主窗口指针转化成对话框类指针

    pDlg->SetWindowText(_T("练习"));

}


void CAfxGetAppDlg::OnBnClickedButton2()
{
    HANDLE handle = NULL;
    HANDLE handle1 = NULL;
    pwin = AfxGetApp();
    handle=AfxGetApp()->m_pMainWnd;//获得主窗口的句柄

    CString str;
    str.Format(_T("主线程句柄=%d\r\n"), handle);
    ::OutputDebugString(str);

    handle1 = AfxGetMainWnd();//获得当前线程窗口句柄
    str.Format(_T("当前线程句柄=%d\r\n"), handle1);
    ::OutputDebugString(str);


}

UINT func1(LPVOID pParam)   //线程函数
{
    
    CString str;
    HANDLE handle3 = NULL;
    HANDLE handle = NULL;
    for (int i = 0; i < 10;i++) {
        str.Format(_T("n=%d\r\n"), i);
        ::OutputDebugString(str);
        handle3= AfxGetMainWnd();
        str.Format(_T("当前子线程句柄=%d\r\n"), handle3);
        ::OutputDebugString(str);

        pwin = AfxGetApp();
        handle = AfxGetApp()->m_pMainWnd;//获得主线程的句柄
        str.Format(_T("主线程句柄=%d\r\n"), handle);
        ::OutputDebugString(str);

        Sleep(1000);
    }
    

    return 0;
}
void CAfxGetAppDlg::OnBnClickedButton3()
{
    CWinThread* pp = AfxBeginThread(func1, LPVOID(456), 0, 0, 0, NULL);
    
    
    

}
复制代码

 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-04-12 halcon-精度
2022-04-12 halcon-char_threshold阈值分割提取字符
2019-04-12 QWidget-控件层级关系
2019-04-12 QWidget扩充父子关系
2019-04-12 python-内置函数
点击右上角即可分享
微信分享提示