RichEdit Control v4.1/6.0 を Windows 2000で使う

RichEdit にはいろいろなバージョンがある訳ですが。

バージョン DLL OS Class
1.0 Riched32.dll 95/98/Me/NT "RichEdit"
2.0 Riched20.dll 98/NT RICHEDIT_CLASS
RichEdit20A/W
3.0 Riched20.dll Me/2000/XP
4.1 Msftedit.dll
RichEd20.dll
XP SP1/Office 2003 "RichEdit50A/W"
6 RichEd20.dll
+MSPTLS.DLL
Office 2007 "RichEdit60A/W"

Windows Me/2000やXPに入っている v3.0のRichEditがちょっと曲者で、バグが多くて表示に不具合が出るわけです。

ちょっと調べてみると Windows XPのワードパッドは MSFTEDIT.DLLをコール、Windows 2000のワードパッドは RICHED20.DLLをコールしてることが分かりました。

Office シリーズには歴代違うバージョンのRichEd20.dllが入っているようなのですが、中身のコンポーネントが違うようですね。

どう違うのかちょっと調べてみました。


RichEdit 1.0の特徴
基本的なANSI編集、カット&ペーストまたはコピー、ファイルストリーム対応
特性またはパラグラフの書式作成の特性の基本的なセット
OLEインターフェイスが追加されたメッセージに基づいたインターフェイス: IRichEditOleおよびIRichEditOleCallback
縦のテキストおよびIMEサポート(FEの構造のみ)
WYSIWYG でプリンターメトリクスを使用する
異なったバージョンのための構造
コモンコントロールの通知を新しく追加
平文およびRTFファイル
Pen Windowsを使用するためにペンジェスチャーを理解する機能。

RichEdit 2.0の追加機能
内部的にUnicode と コードページを使用して読み書き可能
行間で国ごとの処理を分けるアルゴリズム
上候補・下候補。 Magellanのマウスサポート。
多重レベルの取消線
BiDi (2.1に関して)およびレベル2/3 IMEを含むFEサポート、二重フォント、キーボードとのリンク、スマートなフォントの適用、WORDのユーザーインターフェイス
自動URLの認識。 単語ユーザーインターフェイス
平文、リッチテキスト、1行、複数行、スケーリング可能な構造
パスワードとアクセラレータがオプションを制御
窓のないインターフェイス(ITextHost/ITextServices)
よりよい表示(混合フォント、オフスクリーンビットマップを使用する)、システム選択色、透明物サポート
TOM(テキストのオブジェクトモデル)のデュアルインターフェイス
背景色、ローけるID,下線のタイプ、指数や添え字を含んだ文字属性
前後にスペースを含んだパラグラフの行送りをなど書式作成、
折り返しをすべての単語のフォーマットのフォントまたはパラグラフダイアログの特性似たい王
広範なプログラムの安定化、パフォーマンス向上。

RichEdit 2.5の追加機能
Windows CE v1.0。 Pocket Word等で使用される
通常またはヘッディング様式のアウトラインビュー
RTFの付加
マイナーなUIの改善
西洋言語のみ

RichEdit 3.0の追加機能
バージョン1.0台のRichEditをエミュレーションするのにも使われる。
拡大レンズ
イタリック体でのキャレット/カーソル。 URLで手のカーソル。
パラグラフの番号付け(アルファ、数字、ローマ)
簡単な表(ラップしないセル)
多くの形式の下線、下線の着色、隠されたテキスト
Wordのデフォルトのホットキー対応:DeadKeys(コンポーズキーシーケンス)キー、アウトラインビュー、番号が付け
スマートな引用(英語のみ)、ソフトハイフン
オフィスのLineServicesを使用して行の中断・表示を行う。複雑な原稿のためのスクリプトとオプション(センタリング、十進法化、タブ右、テキストの均等割付)
LineServicesおよびUniscribeのコンポーネントの助けによる BiDi、Indic、およびタイのための複雑な原稿サポート
書記体系IDとして機能する文字セットに基づくフォントバインド
コードページ特有のストリームのin/out
カット、コピーまたはペーストで優先的にUTF-8 RTFを使用。ストリーム in/out も可能
Office 9 IMEサポート(MSIME 9の再変換 、文書フィード、マウス操作およびカーソル位置などの特徴)
非FEシステムのためのAIMMのコンポーネントのIMEサポート。
取り消しとやり直しによるフリーズの増加。
フォントの拡大、縮小機能
システムがリストボックス、コンボボックスコントロールを編集する
Alt+xの入力法

RichEdit 3.5の追加機能
Windows CE v2.0でリリース。 eBooksで使用される
スクリーンサイズのページ付け
オブジェクトの周りのテキストのアラインをフラッシュ
ClearType要求のサポート
高度な東アジアの活版印刷
RichEdit 4.0の付加
多重レベルテーブル
オートコレクト機能
改善された自動URL検出
フレンドリーなハイパーリンク
書記体系(文字セットの概括)に従うフォントバインド
Indicサポート
縦のテキスト
最近のIMEのためのサポート
スピーチおよび手書きは入った(Windowsのテキストはフレームワークを整備する)
標準的なホットキー
沢山のセキュリティ修正(3.0はまだ多くのセキュリティホールを持っている)

RichEdit 5.0の追加機能
同時選択と賢いドラッグ&ドロップ
ネストしたテーブルや水平に併合されたセルを改善
より改善された国際文字のフォント適用
下線文字の多様化、小さい文字と影の表現
バイナリファイルフォーマット: 「parsed XML」対応
部分的なXHTMLの読み書き
Subpixel ClearTypeサポート
多重レベルのリストを扱うケースなどでより上級のRTFハンドリング
URLのツールチップ対応
多数のバグの修正と、マイナーな要求の対応
主にOneNoteのための改良されたインクサポート
高度な東アジアの活版印刷
Tight Wrapを含む、PTSの統合初期化
数学のための下付文字、ルビ、注釈文、縦中横
テキストの追跡とグループ化

RichEdit 5.1
Windows CE v3で使用。Pocket Wordなどで使用されるUIなRTFの強化。

RichEdit 6.0の追加機能
高度な数学のフォーマット
より大きいリスト番号対応。
簡易「visi」モード
URL挿入の改善
多階: 高PERF切口かコピーまたはのりの豊富なscratchpads、WPの下部組織
テキストのオブジェクトモデル2
表示強化、単語の下線、横のスケーリング等、テーブルUIに、コラムのサイズ調整をを加える等
OfficeArtやPowerPointの強化
重複ライン、飾り文頭文字及び、他のePeriodicalsの改善
デバイス非依存のレイアウト
仮想化されたOSからhDCが見える化
マルチカラム対応
セキュリティの修正

ちなみに、XP SP3 のアップデートパッケージから取り出した msftedit.dll は中身がほとんど RichEd20.dllなので、リネームしてやれば使えるのですが、ためしにワードパッドの RichEdit20Wの箇所を RichEdit50W に書き換えて起動してみたところ、JIS2004 系文字の一部がPMingLiU になってしまうので、ちょっとバグ持ちなのかもしれませぬ

kb940289Office2007互換パックから取り出した、RichEd20.dll+ MSPTLS.DLL ( + MSO.DLL MSOffice コンポーネントオブジェクトを使わないなら不要)を使って RichEdit60W として取り込めば問題ないようですric
Nuke++ 1.45で Windows Controlを表示してみたところ。
うまく組み込まれています。

おすすめ

1件の返信

  1. 片山博文MZ より:

    Msftedit.dllはRichEdit50Wのみ登録するようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です