3

これは私が理解したことがない古い問題です - ここの誰かがたまたまあなたの頭の上から答えを知っているのではないかと思いました...

私たちのソフトウェア (MFC/Win32/MBCS) の一部では、私のコードは受信のみを行います

TTN_NEEDTEXTW

ソフトウェアの他の部分では、MBCS の正しいメッセージを受け取ります

TTN_NEEDTEXTA

私には意味がありません。

私たちのソフトウェアは Unicode でコンパイルできるかどうかは理解しています (マルチバイト文字セットを使用するように設定されています)。そして、各ウィンドウを Unicode で構成できるかどうかは漠然とした記憶がありますが、これは漠然とした記憶であり、具体的なものではありません。

マルチバイトとしてコンパイルされているにもかかわらず、コードの一部の場所でワイド バージョン メッセージが表示される理由を知っている人はいますか?

ノート:

  • このメッセージは絶対に送信していません。おそらく ToolTip コントロールが送信しています。
  • ある場所では間違いなく (W) メッセージだけを受け取り、他の場所では間違いなく (A) メッセージだけを受け取ります。
  • 私は、すべてのコンパイル モジュールが Unicode ではなく MBCS を使用していること、およびビルド ターゲットがすべて Unicode ではなく MBCS を指定していることを確信しています。
  • これは、CMainFrame でホストされているウィンドウとコントロールでのみ発生するようです。つまり、メイン フレームの外側にある Windows は、ナロー バージョンを使用できます (ダイアログ ボックスなど)。
4

2 に答える 2

5

コモン コントロールWM_NOTIFYFORMATからメッセージが送信され、"MBCS 通知と Unicode 通知のどちらを受け取りますか?" というメッセージが表示されます。CreateWindowExWデフォルトでは、ウィンドウがまたはで作成されたかどうかに基づいて応答しますCreateWindowExA

于 2012-09-25T19:48:08.303 に答える