プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。

環境はVC++6.0 XPです。


MFCでのあるプログラムの中で

CWnd* pWnd = GetDlgItem( IDC );//EditBox
pWnd->SetWindowText( hoge);

SetWindowText( hoge );//hogeは文字列が入った変数


というコードがあるのですが、


このhogeの中にはハングル文字(韓国語)が入っていており、エディットボックスにはちゃんと韓国語が入っているのですが、ウィンドウのタイトルバーには?が入っていてちゃんと表示されていません。

どうすれば表示できるのか教えてください。

A 回答 (2件)

>設定でプリプロセッサ定義で_UNICODEがあります。


http://rararahp.cool.ne.jp/vc/vctips/unicode.htm

■ Unicode対応のプロジェクトにする
としてもダメでしょうか?

それとOSは何でしょうか?


ちなみに、VS2005 Vista 環境では
wchar_t hoge[] = {0xc11c,0xc6b8,0x0000};
this->SetWindowText(hoge);
はちゃんと出ました。
# VC6では無理なのか?

この回答への補足

>Unicode対応のプロジェクトにする
としてもダメでしょうか?

これを行なっているのですが、表示されないです。

http://rararahp.cool.ne.jp/vc/vctips/unicode.htm​内の
>「プロジェクト」→「設定」→「リンク」→「アウトプット」の
「エントリポイントシンボル」にwWinMainCRTStartupと書き込む。
(これをやらないと_WinMain@16は未解決ですとコンパイルエラーになります)

これを行なわなくてもエラーにはならなくプログラム実行でき、これを行なうと、下のデバッグ表示画面にエラーではないのですが色々と表示されて、プログラムが立ち上がらない状態です。

>それとOSは何でしょうか?
Windows XPです。
新規のプロジェクトを作成してやってみたら、ちゃんと表示されていました。

となるとそのプロジェクトのプログラムには何か問題があるみたいですかね。

補足日時:2010/01/07 09:08
    • good
    • 0
この回答へのお礼

よくみたら、表示できないプログラムのほうのプロジェクトは
MFC AppWizard(dll)で作成しています。

dllだから表示ができないということなのでしょうか?

お礼日時:2010/01/07 12:04

プロジェクトの文字セットがマルチバイト文字セットになっているのではないでしょうか?


(VC++6.0はデフォルトのコンパイルオプションはマルチバイトセット)

Unicodeで受け取ってUnicodeで渡すようなコードにしないと、
(OSが?)日本語環境ではCP932(=Shift_JIS)で表現できない文字は表示できないし、情報が落ちたりします。

今からUnicodeに変更できるのであれば、プロジェクトの設定を変更するほうがよいでしょう。
(その代わり、
CString s = "abc";
のような記述は _T マクロを、charでやり取りしているところをTCHARにするのかの検証が必要になります。)

目的が質問に書かれているのみであれば、そこだけ~Wを使うように変更するとできるでしょう。
(他にテキストボックスの文字を使っていろいろやる場合は現実的ではない。)

>pWnd->SetWindowText( hoge);
// Getではない?
wchar_t hoge[256]; // サイズは適当。(GetWindowTextLengthWで取得して、+1のサイズでnewするとサイズを決め打ちにしなくてもよい。)
::GetWindowTextW(pWnd->GetSafeHwnd(), hoge, _countof(hoge));
::SetWindowTextW(this->GetSafeHwnd(), hoge);

この回答への補足

設定でプリプロセッサ定義で_UNICODEがあります。


wchar_t hoge[] = {0xc11c,0xc6b8,0x0000};//文字コードはハングル文字
::SetWindowTextW(this->GetSafeHwnd(), hoge);


このように直接ハングル文字のコードをwchar_tに入れて、放っても、??が表示されます。

エディットボックスには表示されるのにウィンドウのタイトルバーには表示されない状態です(^^;

補足日時:2010/01/06 15:34
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A