RichEdit 8.0 - EM_INSERTIMAGE

Acest forum este dedicat intrebarilor de Windows API, folosing C/C++
Post Reply
User avatar
costelpislac
Junior
Junior
Posts: 6
Joined: 28 Nov 2010, 12:03
Judet: Suceava
Location: Dolhasca
Contact:

RichEdit 8.0 - EM_INSERTIMAGE

Post by costelpislac » 03 Feb 2014, 22:09

Buna seara, am o nedumerire cu privire la trimiterea unui mesaj EM_INSERTIMAGE (min Windows 8), iata functia:
void Load_imgs(wchar_t p[260])
{
HANDLE f = CreateFileW(p, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
DWORD dw = GetFileSize(f, 0);
HANDLE h = HeapCreate(0, dw, 0);
LPVOID lpv = HeapAlloc(h, 0, dw);
ReadFile(f, lpv, dw, 0, 0);
CloseHandle(f);
RICHEDIT_IMAGE_PARAMETERS imp = { sizeof(imp) };
imp.pwszAlternateText = L"img";
imp.pIStream = SHCreateMemStream((LPBYTE)lpv, dw);
SendMessageW(ric, EM_INSERTIMAGE, 0, (LPARAM)&imp);
HeapFree(h, 0, lpv);
}
Am scris cod curat fara HRESULT-uri, ca sa va fie mai usor la citit, aveti idee de ce pozele mai mari le baga redimensionate ?
Daca tragi o poza, in Wordpad, o baga la marime naturala, la mine respecta regula asta doar la poze mici, cele mari apar redimensionate.
Totusi daca dau Copy pe poza si ma duc sa o lipesc in Paint mi-o da in marime naturala, deci redimensionarea din RichEdit nu e si in spate.
Multumesc anticipat pentru orice idee, macar sa-mi ziceti unde sa sap.



Viorel
Microsoft MVP
Microsoft MVP
Posts: 291
Joined: 13 Jul 2007, 12:26

Re: RichEdit 8.0 - EM_INSERTIMAGE

Post by Viorel » 04 Feb 2014, 10:14

Cred că ar trebui să inițializezi RICHEDIT_IMAGE_PARAMETERS, în special xWidth și xHeight. Pentru început încearcă niște constante.

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: RichEdit 8.0 - EM_INSERTIMAGE

Post by bu7ch3r » 04 Feb 2014, 11:57

Mai mult xWidth si xHeight nu sunt in pixeli si windows-ul face conversie in functie de DPI-ul setat....
Cu stima,
Lupu Claudiu

User avatar
costelpislac
Junior
Junior
Posts: 6
Joined: 28 Nov 2010, 12:03
Judet: Suceava
Location: Dolhasca
Contact:

Re: RichEdit 8.0 - EM_INSERTIMAGE

Post by costelpislac » 05 Feb 2014, 12:36

da, trebuiau dimensiunile:
#define MAP_PIX_TO_LOGHIM(x,ppli) MulDiv(2540, (x), (ppli))
RICHEDIT_IMAGE_PARAMETERS rip = {sizeof(rip)}; rip.pwszAlternateText = L"im";
HDC hdc = GetDC(0);
rip.xWidth = MAP_PIX_TO_LOGHIM(width, GetDeviceCaps(hdc, LOGPIXELSX));
rip.yHeight = MAP_PIX_TO_LOGHIM(height, GetDeviceCaps(hdc, LOGPIXELSY));
ReleaseDC(0, hdc);
rip.pIStream = pStream;
SendMessageW(ric, EM_INSERTIMAGE, 0, (LPARAM)&rip);

Post Reply