15,471
社区成员
发帖
与我相关
我的任务
分享
DWORD WINAPI myFunc(LPVOID lpVoid)
{
ShowDlg();//使用隐式加载dll中的显示对话框函数
}
void CTestDlg::OnButton1()
{
CreateThread(NULL,0,myFunc,NULL,0,NULL);
}
CWinThread* m_pThread = NULL;
CAboutDlg* pDlg = NULL;
#define MSG_EXIT WM_USER+0x11
UINT __cdecl ThreadProc(LPVOID lParam)
{
if(pDlg)
{
pDlg->DestroyWindow();
delete pDlg;
pDlg = NULL;
}
CAboutDlg* pDlg = new CAboutDlg;
pDlg->Create(IDD_ABOUTBOX);
pDlg->ShowWindow(SW_SHOW);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
if(MSG_EXIT == msg.message)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
pDlg->DestroyWindow();
delete pDlg;
pDlg = NULL;
return 0;
}
void CXXDlg::OnOK()
{
// TODO: Add extra validation here
m_pThread = AfxBeginThread(ThreadProc, NULL);
}
void CXXDlg::OnButton1()
{
// TODO: Add your control notification handler code here
if(m_pThread && m_pThread->m_hThread)
m_pThread->PostThreadMessage(MSG_EXIT, 0, 0);
}
extern "C" __declspec (dllexport) void ShowDlg()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (!dlg.m_hWnd) dlg.Create(IDD_DIALOG1);
dlg.ShowWindow(SW_NORMAL);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
extern "C" __declspec (dllexport) void ShowDlg()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (!dlg.m_hWnd) dlg.Create(IDD_DIALOG1);
dlg.ShowWindow(SW_NORMAL);
}
CAboutDlg* pDlg = NULL;
UINT __cdecl ThreadProc(LPVOID lParam)
{
pDlg = new CAboutDlg;
pDlg->Create(IDD_ABOUTBOX);
pDlg->ShowWindow(SW_SHOW);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
void CXXXDlg::OnOK()
{
// TODO: Add extra validation here
if(pDlg)
{
pDlg->DestroyWindow();
delete pDlg;
pDlg = NULL;
}
AfxBeginThread(ThreadProc, NULL);
}