アプリ版:「スタンプのみでお礼する」機能のリリースについて

VisualStudio2005 C++、マルチバイト文字セットでWindowsアプリ
ケーションを作っています。動作環境は、WindowsXP SP3 (x86)。

モーダルダイアログに貼り付けたエディットコントロールでは、
MicrosoftIMEStandard2002で変換確定した文字(例えばハート
(U+2665))が表示されるので、GetWindowTextW()でそのユニコード
文字列を取得できるのですが、
モードレスダイアログに貼り付けたエディットコントロールでは、
変換文字列が'?'にコンバートされて表示されてしまいます。
コピー&ペーストでは、Unicode文字も表示できるので、
IMEの変換後の処理がうまくいっていないと思うのですが、
どのようにすれば、変換確定しても'?'にコンバートされずに
文字列が表示できますでしょうか?
お教えください。よろしくお願いします。
(むかしつくったアプリのため、Unicodeでビルドするには
修正が多いので、マルチバイトのビルドでやりくりしたいのです。)

A 回答 (1件)

プロジェクトのプロパティで、DebugとReleaseの両方にマルチバイトが設定されていますか?


されていなかったら次の方法を試してみてください。
プロジェクトのプロパティを開き「構成プロパティ」下の「全般」を選び、右側で「文字セット」をマルチバイトに変更。2008ですが2005でも同じだったと思います。

この回答への補足

#defineマクロの切り分けでいくつかの異なるビルドを作成するため、Debug, Release以外の構成を作成しておりました。
全ての構成でマルチバイトセットに構成し、ビルドクリーン⇒ビルドしたのですが、状況は変わらず、です。

プロパティでの文字セットの変更は、コンパイル時のコマンドラインに、#define UNICODE / #define _UNICODE相当のオプションがつく以外に何かあるのでしょうか?

モーダルダイアログの方は、もともとのソースから修正なしでDialogBoxParam()で作成、モードレスダイアログの方は、CreateDialogParamW()に修正して、関連しそうなAPIをUnicode版に置き換え、とやっています。

シンプルなサンプルを作って確認してみます。

補足日時:2009/05/09 09:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!