2015-07-25 5 views
2

Использование сообщества Visual Studio 2013.Как использовать EM_INSERTIMAGE?

Добавлено #include к исходному коду. Добавлен Shlwapi.lib в компоновщик. Скомпилируйте и нажмите OK.

Это код, который использует EM_INSERTIMAGE:

static void insertimage() 
    { 
    RICHEDIT_IMAGE_PARAMETERS rip; 
    IStream *pStream = NULL; 
    DWORD grfMode = STGM_READ | STGM_SHARE_DENY_NONE; 
    HRESULT hr = SHCreateStreamOnFileA("add.png", grfMode, &pStream); 
    if (hr == S_OK) 
     { 
     ZeroMemory(&rip, sizeof(rip)); 
     rip.xWidth = 2000; // unit 0.01mm 
     rip.yHeight = 2000; 
     rip.Type = TA_BASELINE; 
     rip.pwszAlternateText = L"adding xyz"; 
     rip.pIStream = pStream; 
     hr = SendMessage(hwndrichedit, EM_INSERTIMAGE, (WPARAM)0, (LPARAM)&rip); 
     if (hr == S_OK) 
     { 
     // getting here, but not getting any image or alternate text 
     // output on screen 
     } 
     } 
    } 

но не выводят любое изображения или альтернативный текст на экране и не ставят контрольные изображения слов в файл RTF. Я также пробовал SHCreateStreamOnFileEx с таким же отрицательным результатом.

Как это сделать?

ответ

0

Я забыл упомянуть, я использую Windows 7.

Я искал Google на EM_INSERTIMAGE и другие ключи и нашел совпадение, что сказал EM_INSERTIMAGE требует Windows 8. Я проверил EM_INSERTIMAGE MSDN и нашел это в Раздел требований «Минимальный поддерживаемый клиент Windows 8 [только для настольных приложений]».

Я не ожидал этого, потому что Wordpad и Windows Office 10 на моем ПК с Windows 7 могут вставлять изображения. Кроме того, текстовый редактор Linux TED richedit может вставлять изображения в Ubuntu 12.04, выпущенные три года назад.

Возможно, эти программы просто вставляют изображение в rtf , как того требует спецификация формата rtf.

Я предполагаю, что EM_INSERTIMAGE, выпущенная пользовательской программой, сгенерирует часть изображения rtf и вставляет ее в текст формата RTF.

Я доволен Windows 7 и не изменюсь на Windows 8, поэтому кажется, что у не будет изображений.

Если EM_INSERTIMAGE работает только на Windows 8, я думаю, что должна быть ошибка возвращается, когда EM_INSERTIMAGE выдается из Windows 7, Windows XP и т.д.

0

EM_INSERTIMAGE доступна только с Windows 8 и далее. В Windows 7 вам понадобится использовать интерфейс OLE RichEdit для вставки изображений. Вот как это делает Wordpad. Вы можете посмотреть этот пример в MSDN:

RichEdit OLE sample

 Смежные вопросы

  • Нет связанных вопросов^_^