2017-10-30 18 views
0

Visual StudioでC++で書かれた既存のダイアログベースのプログラムを修正しようとしています。タイトルテキストを正当化する方法VS C++

ダイアログのタイトルバーに中央揃えのテキストが表示されます。私はそれが正当化される必要があります。しかし、なぜ私はそれが最初の場所に集中しているのか理解できません。別のサンプルプログラムを書いたので、タイトルテキストはデフォルトで左揃えになっています。ダイアログのプロパティのオプションはRight Right Textです。私のサンプルプログラムでは動作しますが、既存のプログラムでそれを変更しても効果はありません。

テキストを中央に揃えるのに誰かがやったに違いないようですが、コード内に何も表示されていません。実際には、センタリング(またはサンプル/テストプログラムの正当化)が表示されますダイアログエディタだから、それはそこのプロパティになければなりません。しかしここで!?!?!

これはちょうど簡単で、私はそれを見ていないそれらのものの一つです!

どのように私はそのタイトルテキストを正当化する必要がありますか?私はすでにプログラムのバージョン番号を追加するためにタイトルを変更しているので、コードでそれをやっても大丈夫です。ところで、タイトルに追加したり、新しいタイトルに入れ替えたりすると、そのテキストは中央に揃えられます。テキストセンターを作るために

+0

この参考文献は役に立ちますか? https://stackoverflow.com/questions/13159545/justify-text-with-setw – CraftedGaming

+0

[WM_NCPAINT'メッセージ](https://msdn.microsoft.com)を処理するコードを探しているようです。 /en-us/library/vs/alm/dd145212(v=vs.85).aspx)。ここには、ダイアログタイトルバー([Custom Titlebar](https://www.catch22.net/tuts/custom-titlebar))をカスタマイズした(比較的古くても)記事があります。 –

+0

@CraftedGaming、setwはこの場合には適用されないようです。 –

答えて

2

トリックは、あなたが、テキストセンターを作るオーバーライドを削除し、それが動作するはずですしたくない場合はWM_NCPAINTイベントにas given in this link

をオーバーライドすることです。

0

これは本当の答えではありませんが、私の「問題」はWin10とWin8で動作するプログラムを比較しているということでした。 Win10のデフォルトは、タイトルを左揃えにする必要がありますが、Win8のデフォルトは中央に配置する必要があります。

プログラムでは、タイトル番号にバージョン番号を付けるので、Win8のセンタリングプロセスは動的ではないため、結果は右に歪んで表示されます。私の解決策は、バージョン番号の文字数を元のタイトルに単純に加算することです。バージョン番号を付けると、それらの文字は切り取られます。

WM_NCPAINTはおそらく「正しい」答えですが、おそらく時間がかかりすぎるかもしれません。