Trattare con versioni obsolete di RTF
Domanda
Domande di riepilogo:
- Conosci un'applicazione leggera che può salvare file in formato RTF versione 1.6?
- Sai quale versione di RTF Abiword è "Rich Text Format per vecchie app" corrisponde a?
- Conosci un modo per ispezionare un file RTF e determinare in quale versione di RTF è codificato?
- Sai quale DLL descrive il formato RTF su una macchina Windows NT 4.0 e se può essere aggiornata?
Ho un'applicazione MFC MS Visual C ++ 6.0 legacy che funziona su un computer Windows NT 4.0 incorporato. L'applicazione fornisce assistenza in-app utilizzando CRichEditView classe per estrarre il testo da un RTF chiamato help.rtf. Il file della guida viene salvato come RTF versione 1.6. È sempre stato modificato utilizzando MS Word 2000 o la versione di WordPad fornita con Windows NT 4.0.
Il problema è che le nostre workstation per sviluppatori tendono ad avere Windows XP (e la sua versione di WordPad) e Office 2003 o superiore, entrambi utilizzano versioni più recenti di RTF di 1.6, e sta diventando sempre più ingombrante trovare una macchina su cui il file può essere modificato e salvato nuovamente in quel formato obsoleto. Se per salvare il file viene utilizzata una versione più recente di Word o WordPad, questa viene salvata come versione più recente di RTF. Quindi, quando l'applicazione viene eseguita sul computer NT, il testo della guida non viene visualizzato correttamente. (Anche se quando la stessa applicazione viene eseguita su un computer XP, il testo della guida viene visualizzato correttamente.)
Quindi, sto cercando di fare una delle due cose:
- Trova un'applicazione (preferibilmente più leggera di Word 2000) che salverà i file in formato RTF versione 1.6, che possiamo utilizzare per future modifiche del file della guida.
- Scopri un modo per far leggere correttamente le versioni successive di RTF alla macchina NT.
Sul primo fronte, ho provato AbiWord , che ha un " Formato Rich Text per vecchie app " , ma non so cosa versione di RTF questa opzione genera. Sai che versione è? Sfortunatamente, non è prontamente evidente dai metadati nel file, che dice semplicemente "rtf1", per questo passaggio carino da tutte le versioni di specifica RTF . C'è un modo per analizzare un file RTF e determinare in quale versione di RTF è codificato?
Lo standard RTF descritto in questa specifica RTF, sebbene intitolato versione 1.6, continua a corrispondere sintatticamente alla specifica specifica RTF 1. Pertanto, il parametro numerico N per la parola di controllo \ rtf deve essere comunque emesso come 1.
Sul secondo fronte, mi chiedo se ci sia qualche DLL che posso semplicemente aggiornare in modo che Windows NT riconoscerà la versione più recente del formato. Sai quale DLL descrive il formato RTF e se può essere aggiornato?
Soluzione 2
Seguendo una catena di suggerimenti iniziata con la di Mark Ransom a>, ho finito per copiare riched20.dll e riched32.dll da C: \ Windows \ System32 \ sul mio computer XP su C: \ WinNT \ System32 \ sul computer NT. Dopo averlo fatto, i file RTF modificati con WordPad o Word sulla macchina XP sono stati renderizzati correttamente sia su WordPad che sulla mia applicazione sulla macchina NT.
Altri suggerimenti
Credo che il formato di modifica avanzata sia determinato dal controllo di modifica avanzata stesso. Non proverei ad aggiornare la DLL, perché ci sono molte cose che potrebbero rompersi.
Vedi questa nota MSDN per suggerimenti sull'uso della versione successiva del controllo rich edit. La versione 2.0 dovrebbe essere disponibile in NT 4.0.
http://msdn.microsoft.com/en-us/library/tt1cfb9f (VS .80) aspx
Potresti provare a copiare la versione di WordPad dal tuo sistema NT e vedere se funziona come alternativa.
La prima cosa che mi viene in mente è WordPad. È su ogni macchina ed è davvero leggero nel suo RTF. L'ho trovato molto meglio di Word in molti semplici compiti RTF.