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

現在、VisualStudio201にて(ダイアログベースの)プログラムを作っていますが、
GetDlgItemText()が期待通りにならず行き詰ってしまいました。

char wordx[256];
GetDlgItemText(IDC_EDIT_NO1, (LPTSTR)wordx, 256);

上記のような記述をしていて、エディトボックスには"ABC"を入力しているので、
wordxには、"ABC"が入ることを期待しています。
結果は、16進で表すと、0x41, 0, 0x42, 0, 0x43, 0
となってしまいます。もし、原因がわかればお教えください。

A 回答 (2件)

とりあえずその場凌ぎの方法をお教えします。


プロジェクトのプロパティから「全般」ページの中の「文字セット」を、「Unicode文字セット」から「マルチバイト文字セット」に変更してください。

しかし問題の本質を理解していないと、またすぐに似たような問題にぶち当たるでしょう。
とりあえず「LPTSTR」で検索して勉強してください。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
文字セットの変更で文字列が正しく設定されることを確認しました。
ご指摘通り、勉強不足で、お手数をおかけしました。

お礼日時:2012/10/08 18:03

なぜキャストしているんですか?

この回答への補足

初心者で申し訳ありません。
よく解らずキャストしていました。
そうしないとコンパイルが通らなかったので・・・
なお、以前は機能していたのですが、
おそらくWindows7にしてからのように思います。

補足日時:2012/10/08 16:49
    • good
    • 0

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

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


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