
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);
}
