generic text programming

Windows NTは内部がUnicode」と言うけれど、NT4.0より後に発売されたVC6でも、Unicodeのサポートはいまいちだったりする。

  • だめな点1

MFCプロジェクトでUnicodeにするには、自分でプリプロセッサの定義から_MBCSを外して_UNICODEを追加し、エントリポイントをwWinMainCRTStartupに変更する必要がある。
http://support.microsoft.com/default.aspx?scid=kb;ja;125750
「この動作は仕様です。」って…。

  • だめな点2

CRichEditCtrlがリッチエディットコントロールバージョン1.0(ウィンドウクラス名RICHEDIT)を利用するため、文字数カウント(SetSelなど)が常にバイト単位。なのでUnicode環境だとMBCSへの変換が必要になることがある。とほほ。
VC7以降だと(リッチエディットコントロールバージョン2.0以降を使うため)文字数単位になっているので、UnicodeだとOKで、MBCSだと変換が必要になる。
このあたり、MBCSだとバージョン1.0でUnicodeだと2.0だとか、SetSelA/SetSelWみたいに実装をわけるとか、そういう感じだったらよいのにと思う。

  • だめな点3

VC6だとUnicode文字列がデバッガで表示されない。この辺は(当然ながら?)VC7だと改善されている。

だめな点多々あれど、メインは未だにVC6です。VS2003も持っているけど、プロジェクトを開いたままサスペンド・レジュームして復帰しなかったり青画面が出たりするのには辟易。VC6はやっぱり軽くて安定している(Windows 2000ならば)。