GDI+ и GetThumbnailImage
От: Mephisto  
Дата: 13.08.02 16:23
Оценка:
Проблема: AbortThumbnail ни когда не вызывается, а по документации вроде как должна. Брал файлы по 20МБайт — ниразу не зашла в функцию, при этом картика отрисовывается без проблем. В чем ошибка? Может кто сталкивался с аналогичной проблемой? На всякий случай — версия GDIPlus.dll 5.1.3097.0

Упрошенный кусок исходника:

BOOL CALLBACK AbortThumbnail(void* callbackData)
{
    BOOL abort;
.
.
.
    if(abort) return TRUE;
    else return FALSE;
}

UINT MakeThumbnail(LPVOID lParam)
{
    CChildView *pWnd = (CChildView *)lParam;
    ASSERT(pWnd->IsKindOf(RUNTIME_CLASS(CChildView)));
    
    CDC* pDC = pWnd->GetDC();
    
    Graphics* graphics = new Graphics(pDC->m_hDC);
    Image* pImage = new Image(L"J:\\Samples\\Image 00001.bmp");

    UINT width = pImage->GetWidth();
    UINT height = pImage->GetHeight();

    Image* pThumbnail = pImage->GetThumbnailImage(width/20, height/20, AbortThumbnail, (void*)pWnd);
    graphics->DrawImage(pThumbnail, 0, 0, pThumbnail->GetWidth(), pThumbnail->GetHeight());

    delete pThumbnail;
    delete pImage;
    delete graphics;

    return 0;
}

void CChildView::CreateThumbnail() 
{
    m_pTThread = AfxBeginThread(MakeThumbnail, (LPVOID)this, THREAD_PRIORITY_LOWEST, 0, CREATE_SUSPENDED, NULL);
    m_pTThread->m_bAutoDelete = FALSE;
    m_pTThread->ResumeThread();
}


Заранее всем спасибо!
Re: GDI+ и GetThumbnailImage
От: Andir Россия
Дата: 14.08.02 07:14
Оценка:
Здравствуйте Mephisto, Вы писали:

M>Проблема: AbortThumbnail ни когда не вызывается, а по документации вроде как должна. Брал файлы по 20МБайт — ниразу не зашла в функцию, при этом картика отрисовывается без проблем. В чем ошибка? Может кто сталкивался с аналогичной проблемой? На всякий случай — версия GDIPlus.dll 5.1.3097.0


[skip]
Не знаю как на C++, но насчёт C# в MSDN вона чего написано ->
[C#]
[Serializable]
[ComVisible(true)]
public Image GetThumbnailImage(
int thumbWidth,
int thumbHeight,
Image.GetThumbnailImageAbort callback,
IntPtr callbackData
);
[skip]
callback
A Image.GetThumbnailImageAbort delegate. In GDI+ version 1.0, the delegate is not used. Even so, you must create a delegate and pass a reference to that delegate in this parameter.
[skip]
неспроста как мне кажется ...

M>Заранее всем спасибо!

Удачи, Andir!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.