EM_STREAMIN

Résolu
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 14 mai 2003 à 23:06
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 15 mai 2003 à 10:18
Bonjour à tous !

J'utilise (enfin j'essaie d'utiliser, plutot) une CALLBACK pour gérer l'insertion de texte formaté RTF dans un RichEdit20A

Dans mon EDITSTREAM, je positionne :
dwCookie au (char*) contenant les données à insérer,
dwError à 0,
pfnCallback à ma routine,
puis j'envoie le EM_STREAMIN au RichEdit.

Tout se passe bien sauf que je n'arrive pas à insérer mon texte, j'y ai passé la soirée et je suis en panne d'idées là... Si quelqu'un a un exemple de callback fonctionnelle ou des conseils à me donner, je suis preneur (Win32 API uniquement)...

Merci d'avance, Gab's

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2003 à 23:27
DWORD CALLBACK EditStreamIn(DWORD dwCookie, LPBYTE pbBuff, long cb, long *pcb)
{
*pcb = -1;
ReadFile((HANDLE) dwCookie, pbBuff, cb, (DWORD*)pcb, NULL); return (DWORD) (*pcb >0 ? 0: (*pcb 0, 1));
}

void ImportEdit()
{
EDITSTREAM edstream;
HANDLE hFile = CreateFile(m_szFile, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if(hFile == INVALID_HANDLE_VALUE) {MsgNoFile(); return;}
SetCursor(LoadCursor(NULL, IDC_WAIT)); edstream.dwError 0; edstream.dwCookie (DWORD)hFile;
edstream.pfnCallback = EditStreamIn;
int iRet = SendMessage(m_hEdit, EM_STREAMIN, SF_TEXT, (long) &edstream);
CloseHandle(hFile);
SetCursor(LoadCursor(NULL, IDC_ARROW));
if(edstream.dwError)
MessageBox(hwndApp, "Erreur de lecture du fichier", szAppName, MB_ICONEXCLAMATION);
}
si d'autres questions pour demain, bonne nuit.
BruNews, ciao...
3
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 00:34
Merci à toi ! J'ai juste eu à transformer en :

SendMessage(edtSample, EM_STREAMIN, SF_RTF | SFF_SELECTION, (LPARAM) &EditStream);

pour l'adapter à (presque ! lol) tous mes besoins :s

Presque, parce qu'en fait j'essaie d'injecter le contenu suivant dans le richedit (v2.0 ASCII) :

{\rtf1 {\pict\dibitmap 280000000F0000000F000000010004000000000078000000C40E0000C40E0000100000000000000000000000000080000080000000808000800000008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFF00000FFFFF0FFF00BBBBB00FFF0FF0BBBBBBBBB0FF0F0BBB00000BBB0F0F0BB0BBBBB0BB0F00BB0BBBBBBB0BB000BBBBBBBBBBBBB000BBBBBBBBBBBBB000BBBBBBBBBBBBB000BBB00BBB00BBB00F0BB00BBB00BB0F0F0BBBBBBBBBBB0F0FF0BBBBBBBBB0FF0FFF00BBBBB00FFF0FFFFF00000FFFFF0 }}

qui est censé donner un smiley triste, mais apparement le richedit ne semble pas d'accord, vu qu'un texte formaté en rouge gras ou n'importe quoi d'autre passe, mais pas le bitmap...

Faut il donc absolument utiliser OLE pour çà ? Ou dois-je utiliser un autre format que le bitmap ? :s
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 mai 2003 à 10:05
OLE et storage structure, au plaisir dans le msdn. Je n'ai jamais eu a le faire donc je ne peux t'etre d'aucun secours.
BruNews, ciao...
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 10:18
Tant pis, tu m'as déjà beaucoup aidé merci :)
0
Rejoignez-nous