Re[5]: Подскажите про потоки (ответа я не нашел)
От: BlackHeretic Израиль  
Дата: 26.02.04 08:36
Оценка:
Здравствуйте, 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);
}
ICQ 156156278
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.