static bool bbCodeImageFunc(IFormattedTextDraw *ftd, CHARRANGE range, TCHAR *txt, DWORD cookie) { ITextServices *ts = ftd->getTextService(); ITextDocument *td = ftd->getTextDocument(); long cnt; LRESULT lResult; /* TEXTRANGE trg; trg.chrg = range; trg.lpstrText = new TCHAR[trg.chrg.cpMax - trg.chrg.cpMin + 1]; ts->TxSendMessage(EM_GETTEXTRANGE, 0, (LPARAM)&trg, &lResult); MessageBox(0, txt, trg.lpstrText, MB_OK); */ ts->TxSendMessage(EM_SETSEL, range.cpMin, range.cpMax, &lResult); IRichEditOle* RichEditOle; ts->TxSendMessage(EM_GETOLEINTERFACE, 0, (LPARAM)&RichEditOle, &lResult); td->Freeze(&cnt); // HDC emfdc = CreateEnhMetaFile(NULL, NULL, NULL, _T("icon")); // DrawIconEx(emfdc, 0, 0, (HICON)_ttol(txt), 16, 16, 0, NULL, DI_NORMAL); // InsertBitmap(RichEditOle, CloseEnhMetaFile(emfdc)); #ifdef _WIN64 bool res = InsertBitmap(RichEditOle, CacheIconToEmf((HICON)_tstoi64(txt))); #else bool res = InsertBitmap(RichEditOle, CacheIconToEmf((HICON)_ttoi(txt))); #endif td->Unfreeze(&cnt); RichEditOle->Release(); return res; }
static bool bbCodeImageFunc(IFormattedTextDraw *ftd, CHARRANGE range, TCHAR *txt, DWORD) { ITextServices *ts = ftd->getTextService(); ITextDocument *td = ftd->getTextDocument(); long cnt; LRESULT lResult; ts->TxSendMessage(EM_SETSEL, range.cpMin, range.cpMax, &lResult); IRichEditOle* RichEditOle; ts->TxSendMessage(EM_GETOLEINTERFACE, 0, (LPARAM)&RichEditOle, &lResult); td->Freeze(&cnt); #ifdef _WIN64 bool res = InsertBitmap(RichEditOle, CacheIconToEmf((HICON)_tstoi64(txt))); #else bool res = InsertBitmap(RichEditOle, CacheIconToEmf((HICON)_ttoi(txt))); #endif td->Unfreeze(&cnt); RichEditOle->Release(); return res; }