Uniscribe
Friday, 10. August 2007, 16:45:13
メモ帳作成ツールdelphiということで、実際にメモ帳を作るとすると
という感じで実際簡単にメモ帳(正確には notepad.exe)似のアプリができる。ただし、これでできたアプリケーションがnotepad.exeを完全に代替可能かというと、全然そうではない。
- VCLアプリケーションを作る
- TMemoコンポーネントを貼り付ける
- TMainMenuを貼り付けてメニュー項目を適当に作る
という感じで実際簡単にメモ帳(正確には notepad.exe)似のアプリができる。ただし、これでできたアプリケーションがnotepad.exeを完全に代替可能かというと、全然そうではない。
notepad.exeはunicode特有の文字、右から左へ書く文字、複合文字といったものを正しくレンダリングするのに対し、delphiで作ったアプリケーションはansiコードページの管理下で動作するので、そもそもunicode特有の文字自体を入力できない。見た目だけが似ていても、unicodeに対応しているかという点で見るとひっくり返っても超えられない壁に遮られているということだ。
調べてみると、そのunicode特有の属性をサポートする機能をnotepad.exeが独自に実装しているわけではない。notepad.exeはUniscribeというコンポーネントを使っているようだ。これはWindows2000以降ならどのWindowsにも配置されていて、ということは、delphi製のしょっぱいメモ帳もそれを使うようにすれば問題ないということになる。
ところが、Uniscribeに関するMSDNドキュメントを読んでみても、何をどうすればいいのかいまいちわからない。日本語版は関数リファレンスしかないので論外としても、英語版ですらいまいち。困ったのでUniscribeの関数で適当にぐぐってみると、http://www.catch22.net/ というサイトで詳しく説明されていた。
Uniscribeをどうやって使うかということを日本語で書いたサイトはみつからなかったので、一部を訳してみた。気力が残ってれば残りも訳す。
Win32 テキストエディタの設計と実装



How to use Quote function: