こんにちわ。まひと申します。
[環境]Win2000Pro、VC++6.0、MFC、ActiveX
Unicode対応のグリッドコントロールを作成しています。
このグリッド上で入力や選択機能を持たせたくてCEditクラスのエディットやCComboBoxクラス
のコンボボックスを貼り付けましたが、S-JISのエディット、コンボボックスになってしまいま
す。もちろんUnicodeビルドはしています。
CEditクラスのエディットやCComboBoxクラスのコンボボックスを何とかUnicodeのものとして
利用する方法はないのでしょうか?
エディットだけであればリッチエディットで明示的にUnicodeと指定して対応できるのですが、
コンボボックスもあるとなると自前で書くしかないのかなと思っています。
貼られる側(ActiveX)でCEditクラスやCComboBoxクラスを使うのが間違っているのでしょう
か?
アドバイスよろしくお願い致します。
こんにちわ。
ちなみにCEditやCComboBoxは、ダブルクリックされた時に一時的に貼り付けています。
VBで作成するEXEは、VCのようにエントリポイント「wWinMainCRTStartup」のような指定がない
ため、VB標準のエディットやコンボボックスが作られてしまうためなのかなーと思っています。
spyではどのように表示されていますか?(Unicodeになってる?)
> ダブルクリックされた時に一時的に貼り付けています。
明示的にCreateWindowWを呼んでみるとか、
表示・非表示を切り替えて移動させてみるとか、
その辺を試してみてはいかがでしょうか?
たくさん 書き込みありがとうございます。
spyの見方がよくわからないので、どこを見るとUnicodeになっているか判断できません。
すみません。
えーとその後の調べた所まで報告します。
まず、私が作成したコントロールのCEdit、CComboBoxクラスはUnicodeのウィンドウとしてき
ちんと作成されているようでした。
Unicode文字列を保存したファイルからデータを読み込んで、SDKのSetWindowTextWで設定した
ところ、Unicode文字として表示できました。
メモ帳のUnicode文字列のペーストもできました。
問題としては、IMEからの入力でのみ文字化けが発生しているようです。
IMEからの入力だけであせって判断してしまった為、初めの発言内容になってしまいました。
もっとよく確認してから書き込みをするべきでした。申し訳ありません。
また、MBCSビルドのMFCダイアログアプリケーションに、CreateWindowExWでエディットを作成
した所、ここでも同様にIMEからの入力のみ文字化けが発生しました。
ということで、サブクラス化などして何とかIMEの対応が出来れば良いのではないかと考えてい
ます。
どうでしょうか?
何か参考になるサイトなどありましたら、お教えください。
よろしくお願い致します。
クリップボード経由は、
CF_TEXTとCF_UNICODETEXTの両方をサポートしている場合がありますので、
ActiveXがUNICODEで、コンテナが非UNICODEの場合に
文字化けするということでしょうか?