1

タッチスクリーン用の既存のインターフェースを「近代化」するために C++ で使用する GUI フレームワークを探しています。

私は C++/Java のバックグラウンドを持つ初心者プログラマーで、MFC (3 つのデータ ビュー、複数のテキスト/無線制御ダイアログ ボックスなど) を使用して既存の C++ プログラムを取得し、インターフェイスを再設計するプロジェクトを割り当てられたばかりです。より大きなボタンコントロール、スライダーなどの「タッチスクリーンフレンドリー」 。

私が与えられた典型的な必要最小限の MFC とは対照的に、 「よりモダンな外観のインターフェイス」を作成するための指示がかなり自由に与えられました。いずれにせよ学ぶべきことがかなりあることはわかっているので、どんな提案も役に立ちます。

これまでのところ、私が思いついたオプションは次のとおりです。

  1. MFCは、タッチ入力に対応するために既存のコントロールを微調整するだけで、見栄えの悪いインターフェイスを維持します。
  2. マネージ C++ または C++/CLIは、基になる C++ 構造を保持しながら、WPF または Windows フォームとの新しいインターフェイスを設計できる方法を見つけ出します。
  3. Qtは私にとってまったく新しいものですが、有望な代替手段のようです。

本当に、このプログラムを 10 年以上前に書かれたものではないようなものにする方法を見つける必要があるだけで、これまで MFC を独学で学んでいると、あらゆる種類のグラフィックデザインを組み込むという点でそれほど柔軟ではないようです/テーマ。


私が検討すべき他の選択肢はありますか?MFC には目に見える以上のものがありますか?それについてもっと学ぶ必要がありますか? 私が言ったように、調べるべきことの提案は役に立ちます。

4

1 に答える 1

3

#1 としてリストしたものは、実際には 2 つのアプローチのいずれかである可能性があります。1 つ (1a と呼びます) は、元のバージョンと同じバージョンの VC++ と MFC を引き続き使用し、必要に応じてコントロールのサイズを大きくするために最小限の編集のみを行うことです。既存のコードの書き方でかなりの不運に遭遇することを除けば、これは実際のプログラミングをまったく必要としない可能性があり、比較的迅速かつ簡単です。

2 つ目 (1b と呼びます) は、現在のバージョンの VC++、MFC などを使用して更新を行うことです。これにはおそらくいくつかのコードの更新が含まれますが、おそらくひどいものではありません (ただし、10 年以上前の重要なコード場合は、更新も必要になる可能性があります)。多少の注意を払えば、かなり最小限の投資で UI をかなり更新できる場合があります (メニューからリボンへの変更、カラー テーマのサポートの追加など) 。

あなたの #2 は、ほぼ完全な書き直しになってしまう可能性があります。表面的な類似性にもかかわらず、C++/CLI は C++ とはまったく異なる言語です。これが本当に理にかなっている唯一の方法は、かなりの数の非 UI コードがある場合に、完全にそのままにし、既存の C++ と .NET UI の間の「ブリッジ」として C++/CLI のみを使用することです (そして UI はかなり最小であるため、C++/CLI のかなり平凡なツール サポートは大きな問題を引き起こしません)。UI がそれほど単純ではない場合、C# には十分に優れたツール サポートがあり、C++/CLI よりも簡単に優れた選択肢となる可能性があります。

あなたの #3 は、少なくとも UI に関連するコードについては、おそらく 2 よりもわずかに少ない書き換えしか必要としません。コードは C++ のままですが、Qt は MFC とは大きく異なります。大きな利点は、Windows 以外のもの (iOS や Android など) を (まもなく) サポートしたい場合です。移植性については、Qt は、あなたが名前を挙げたどの代替手段よりも大きな利点があります。

多くの場合、C++ コードをどれだけそのまま保持できるかという問題に戻ります。UI から完全に分離された "エンジン" に多くのコードがあり、UI がかなり単純な場合、その既存のコードを保持することは非常に理にかなっていて、UI をゼロから書き直すことはそれほどひどいことではありません。問題の。一方、UI とビジネス ロジックのコードが大きく絡み合っている (かなり一般的) 場合、UI を微調整するだけでなく、残りのコードも大幅に書き直す可能性があります。

結論: UI が他のコードと深く絡み合っている場合、唯一の選択肢は 1a と 1b の間です。UI が他のコードから簡単に分離できる場合、2 と 3 のどちらを選択するかは、(少なくとも私にとっては) 主に、移植性が問題になる可能性があるかどうか (現在または近い将来) の 1 つです。

于 2013-05-13T20:39:02.513 に答える