Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

загрузка списка сайтов поочереди с паузой. MFC

508
08 февраля 2010 года
verelex
46 / / 07.11.2006
Код:
//h
void NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL);
    DECLARE_EVENTSINK_MAP()
//cpp
...
BOOL Cvxbot1Dlg::OnInitDialog()
{
...
    LoadComplete = 0;
    URList.push_back(L"http:/...
    URList.push_back(L"http:/...
    ...
    Iter1 = URList.begin();
    m_ctrlWeb.Navigate(Iter1.c_str(), NULL, NULL, NULL, NULL);
...
}

void Cvxbot1Dlg::OnTimer(UINT_PTR nIDEvent)
{
    if(nIDEvent == IDT_TIMER1)
    {
        KillTimer(theTIMER);
        if(ListIter1 == URList.end())
        {
            ListIter1 = URList.begin();
        }
        m_ctrlWeb.Navigate(ListIter1->c_str(), NULL, NULL, NULL, NULL);
    }
}

void Cvxbot1Dlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
{
    ListIter1++;
    theTIMER = SetTimer(IDT_TIMER1, 3000, 0);
}

не пашет (перескакивает на несколько)

Код:
...
BOOL Cvxbot1Dlg::OnInitDialog()
{
...
    URList.push_back(L"http://...");

    ListIter1 = URList.begin();

    event1 = CreateEventW(NULL,TRUE,FALSE,L"vx_event_234");
    if(_beginthread(TrFoo,1024,NULL)!=-1)
    {
        SetEvent(event1);
    }

    return TRUE;
}

void Cvxbot1Dlg::OnTimer(UINT_PTR nIDEvent)
{
    if(nIDEvent == IDT_TIMER1)
    {
        KillTimer(theTIMER);
        if(ListIter1 == URList.end())
        {
            ListIter1 = URList.begin();
        }
        SetEvent(event1);
    }
}

void Cvxbot1Dlg::OnDestroy()
{
    CloseHandle(event1);
}


BEGIN_EVENTSINK_MAP(Cvxbot1Dlg, CDialog)
    ON_EVENT(Cvxbot1Dlg, IDC_EXPLORER1, 252, Cvxbot1Dlg::NavigateComplete2Explorer1, VTS_DISPATCH

VTS_PVARIANT)
END_EVENTSINK_MAP()

void Cvxbot1Dlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
{
    ListIter1++;
    theTIMER = SetTimer(IDT_TIMER1, 5000, 0);
}

void TrFoo(void *pv)
{
    DWORD dwWaitResult = 1;
    while(true)
    {
        while(dwWaitResult!=WAIT_OBJECT_0)
        {
            dwWaitResult = WaitForSingleObject(event1,1);
        }
        ResetEvent(event1);
        m_ctrlWeb.Navigate(ListIter1->c_str(), NULL, NULL, NULL, NULL);
    }
}

этот код выдает access violation
Как правильно сделать?
508
08 февраля 2010 года
verelex
46 / / 07.11.2006
Идея такая была:
Вызываю iewebbrowser->Navigate(URL);
после чего нужно на его событие NavigateComplete (когда ввсе загрузилось)
подождать 5 сек (чтобы можно было посмотреть на страницу), потом опять вызывать Navigate(URL); и так несколько раз.
Как можно реализовать?
4.5K
08 февраля 2010 года
e-XperT
127 / / 04.07.2006
может так
Код:
BOOL Cvxbot1Dlg::OnInitDialog()
{
...
    URList.push_back(L"http://...");

    ListIter1 = URList.begin();
//Создаем событие с автосбросом в занятом состоянии
    event1 = CreateEventW(NULL,FALSE,FALSE,L"vx_event_234");
        _beginthread(TrFoo,1024,NULL);

    return TRUE;
}

void Cvxbot1Dlg::OnTimer(UINT_PTR nIDEvent)
{
    if(nIDEvent == IDT_TIMER1)
    {
        KillTimer(theTIMER);
        if(ListIter1 == URList.end())
        {
            ListIter1 = URList.begin();
        }
        SetEvent(event1);
    }
}

void Cvxbot1Dlg::OnDestroy()
{
    CloseHandle(event1);
}


BEGIN_EVENTSINK_MAP(Cvxbot1Dlg, CDialog)
    ON_EVENT(Cvxbot1Dlg, IDC_EXPLORER1, 252, Cvxbot1Dlg::NavigateComplete2Explorer1, VTS_DISPATCH

VTS_PVARIANT)
END_EVENTSINK_MAP()

void Cvxbot1Dlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
{
    ListIter1++;
    theTIMER = SetTimer(IDT_TIMER1, 5000, 0);
}

void TrFoo(void *pv)
{
    DWORD dwWaitResult = 1;
    while(true)
    {
        dwWaitResult = WaitForSingleObject(event1,INFINITE);
//функция срабатывает и переходит в занятое состояние, освободит его только SetEvent
        m_ctrlWeb.Navigate(ListIter1->c_str(), NULL, NULL, NULL, NULL);
    }
}

А вообще лучше написать в какой строке происходит access violation
508
08 февраля 2010 года
verelex
46 / / 07.11.2006
Большое спасибо, все заработало!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог