ECCSkeltonのCSTRも無事完成し(従前のBCCSkeltonWplusのものにSJIS対応させました)、WCEditorもしっかり動くようになったので、しつこくCANVASとCARGをワイド文字対応させ、ついでにサンプルもBCCSkeltonから移植しようと思ったら、CTBARとCBMPが必要、ということでそちらも手を付けました。

 

そこで、不図気が付きました。

「コモンコントロールって、どうやってワイド文字対応しているのかな?」

 

色々とググってみましたが、その話題の記事は見当たらず、「commctrlW.h」「wcommctrl.h」なども無いようです。では、ツールバーをサンプルに自分で調べてみようと、commctrl.hを覗くと、ツールバー部分では、

//====== TOOLBAR CONTROL ======

#ifdef  UNICODE
#define TOOLBARCLASSNAME        TOOLBARCLASSNAMEW
#else
#define TOOLBARCLASSNAME        TOOLBARCLASSNAMEA
#endif


#ifdef UNICODE
#define TBSAVEPARAMS            TBSAVEPARAMSW
#define LPTBSAVEPARAMS          LPTBSAVEPARAMSW
#else
#define TBSAVEPARAMS            TBSAVEPARAMSA
#define LPTBSAVEPARAMS          LPTBSAVEPARAMSA
#endif

ifdef UNICODE
#define TB_GETBUTTONTEXT        TB_GETBUTTONTEXTW
#define TB_SAVERESTORE          TB_SAVERESTOREW
#define TB_ADDSTRING            TB_ADDSTRINGW
#else
#define TB_GETBUTTONTEXT        TB_GETBUTTONTEXTA
#define TB_SAVERESTORE          TB_SAVERESTOREA
#define TB_ADDSTRING            TB_ADDSTRINGA
#endif

ifdef UNICODE


#define TB_MAPACCELERATOR       TB_MAPACCELERATORW
#else
#define TB_MAPACCELERATOR       TB_MAPACCELERATORA
#endif

.(まだまだ続きます)

 

のように、このヘッダーファイルの中で識別しています。と、いうことでユーザーは(特に文字列を扱わないコントロールでは)別途MSから指示が無い限り、ワイド文字対応関数を調べる必要は無いようです。(しかし、"#define UNICODE"をお忘れなく。)

 

ということで、CTBARはそのまま修正しないでOKでした。(不具合が出たらまたレポートしますね。)