Bonjour,
mon petit problème à moi est que j'aimerais utiliser la fenêtre de correction orthographique de Word dans une autre application.
j'arrive effectivement à mes fins pour ce qui est de vérifier et corriger du texte tout con. par contre il faut maintenant que je puisse corriger du texte formaté (RTF) sans perdre le format. cela est possible puisque ça fonctionne dans Word. quant à le réaliser... j'ai comme qui dirait un mal de chien à trouver de la doc
voilà ce que je fais pour utiliser la boîte Word avec du texte simple :
ça c'est OK. mais comment faire avec du RTF ? j'ai repris cette fonction et passé en argument mon RichEdit. je récupère le texte formaté. et après ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 BOOL AFX_API_EXPORT MaFonctionCorrectrive(HWND hWnd, CString & theText) { COleVariant vTrue((short)TRUE), vFalse((short)FALSE), vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR), vZero((long)0); // création de l'application _Application appObj; if(!appObj.CreateDispatch("Word.Application")) { MessageBox(hWnd,"Impossible d'accéder à l'application Word","Application introuvable",MB_ICONERROR); return FALSE; } appObj.SetVisible(FALSE); // création du document Documents docsObj(appObj.GetDocuments()); _Document docObj; docObj = docsObj.Add(vOpt, vOpt,vOpt, vOpt); // ajout du texte dans le document Selection oSel; oSel = appObj.GetSelection(); oSel.SetText(theText); // ouverture de la boîte de correction orthographique BOOL bRet = FALSE; Dialogs pDialogs = appObj.GetDialogs(); Dialog pDlg = pDialogs.Item(828); // 828, c'est la boîte de correction ortho if (pDlg.Show(vZero) != 0) { bRet = TRUE; theText = oSel.GetText(); } else bRet = FALSE; // fermetures docObj.Close(vFalse, vTrue, vOpt); appObj.Quit(vFalse, vFalse, vFalse); appObj.DetachDispatch(); return bRet; }
j'utilise le SetText() de l'objet Selection ?
Selection dispose d'une méthode SetFormattedText(LPDISPATCH ld), à utiliser ? (j'ai pas de doc sur la fonction, je ne sais pas vraiment ce qu'elle fait) comment faire LPDISPATCH <<-->> mon texte ?
enfin bref, je perds un temps fou sur ce problème à la *** qui je pense doit avoir une réponse simple (en terme de nombre de lignes de code).
merci pour vos lumières.
Partager