Здравствуйте, Mandigal, Вы писали:
M>Кстати BlackHeretic если есть вариант реализованный так как ты описал, то не мог бы ты мне его на мыло скинуть (скелет, просто кому кто и когда что передает), ну это я уже по собственной лени так как еще не смотрел что там вообще делать надо
А собственно вот и код

Юзайте
BOOL CTPingerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Заскипано
m_message = RegisterWindowMessage(_T("SomeStringThatIWant"));
return TRUE; // return TRUE unless you set the focus to a control
}
void CTPingerDlg::OnBnClickedRun()
{
CPingThread* pPingThread = new CPingThread(m_hWnd, m_message, url, include, exclude);
pPingThread->CreateThread();
}
LRESULT CTPingerDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == m_message)
{
ProcessResultsOfThread(wParam);
delete (CPingThread*)lParam;
return 0;
}
return CDialog::WindowProc(message, wParam, lParam);
}
class CPingThread
{
HWND m_hWnd;
UINT m_message;
CString m_url;
CString m_incl;
CString m_excl;
public:
CPingThread(HWND hWnd, UINT message, const CString& url, const CString& incl, const CString& excl) : m_hWnd(hWnd), m_message(message),m_url(url), m_incl(incl), m_excl(excl) {}
static DWORD Run(CPingThread* pPT);
void CreateThread();
};
DWORD CPingThread::Run(CPingThread* pPT)
{
CHttpFileReader fr;
SendMessage(pPT->m_hWnd, pPT->m_message, (WPARAM)fr.IsAvailable(pPT->m_url, pPT->m_incl, pPT->m_excl), (LPARAM)pPT);
// Здесь можно было бы написать "delete pPT", только тогда не забыть компилить как многопоточное приложение
return 0;
}
void CPingThread::CreateThread()
{
DWORD id;
::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Run, this, 0, &id);
}