none
VisualStudio2017C++ディスクトップで,Windowのタイトルが最初の1文字しか表示されない. RRS feed

  • 質問

  • 開発環境 VisualStudio 2017 C++ Windows ディスクトップアプリケーション

    構成 プラットフォーム x64

    構成プロパティの文字セット マルチ バイト文字セットを使用する

    プログラム:自動で生成されるプログラム プロジェクト名:WindowsProject3


    実行させると,Windowタイトルに表示される文字列が,最初の1文字(この場合は「W」)しか表示されない.

    WindowText関数を使用しても最初の1文字のみ表示


    注1)文字セットが ユニコードの場合は正常(この場合は,「WindowsProject3」が表示される.)

    注2)プラットフォームがx86の場合は正常(この場合は,「WindowsProject3」が表示される.)

    注3)VisualStudio2019 コミュニティでも同様の現象が発生




    2020年7月10日 8:46

回答

  • 自動生成されたプロジェクトのコードがszTitle,szWindowClassというフィールドにWCHARを使っていることからわかるように、Unicode文字セット前提のコードが生成されています。
    ここをTCHARかCHARに変更してください。

    そうするとCreateWindowW,LoadStringW,WNDCLASSEXW,MAKEINTRESOURCEW,RegisterClassExWという末尾にW付の関数と構造体でエラーが出るはずなのでWを外してください。
    これらはUnicode用の関数や構造体です。

    x86で発生しないのは、おそらくプロジェクトのプロパティのダイアログでプラットフォームをWin32にした状態での文字セットを変更しておらずUnicode文字セットのままになっているからでしょう。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2020年7月10日 9:31

すべての返信

  • 自動生成されたプロジェクトのコードがszTitle,szWindowClassというフィールドにWCHARを使っていることからわかるように、Unicode文字セット前提のコードが生成されています。
    ここをTCHARかCHARに変更してください。

    そうするとCreateWindowW,LoadStringW,WNDCLASSEXW,MAKEINTRESOURCEW,RegisterClassExWという末尾にW付の関数と構造体でエラーが出るはずなのでWを外してください。
    これらはUnicode用の関数や構造体です。

    x86で発生しないのは、おそらくプロジェクトのプロパティのダイアログでプラットフォームをWin32にした状態での文字セットを変更しておらずUnicode文字セットのままになっているからでしょう。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2020年7月10日 9:31
  • マルチバイト文字セットはすでに過去の遺産と言えるものなので、強い理由がなければ Unicode 文字セットでの開発を推奨したいところです。
    (マルチバイト文字セットでは、日本語でも一部の文字を扱えません)

    // 今時あるとしたら、古い書籍での学習?レガシーコードの組み込み?

    2020年7月10日 22:47
    モデレータ
  • 恵夢さん、こんにちは。フォーラムオペレーターのKumoです。 
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    ご質問いただいた件ですが、その後いかがでしょうか。
    gekkaさんから寄せられた投稿はお役に立ちましたか。

    参考になった投稿には [回答としてマーク] をお願い致します。

    設定いただくことで、
    他のユーザーもお役に立つ回答を見つけやすくなります。

    お手数ですが、ご協力の程どうかよろしくお願いいたします。

    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2020年7月13日 7:57
    モデレータ
  • WCHARをTCHARに変更しました.
    ご指導,有難うございました.
    2020年7月19日 3:40