2009-04-15 19 views
5

最近、MFC(Prosise book)の学習を開始しましたが、難しいと感じています。しかし、最も難しい部分は、ユーザーインターフェイスを作成することです。コントロールが配置される位置を知っている必要があるようです(ダイアログベースのアプリケーションではそうではありません)。MFCを使用したGUIの作成

どうすれば回避できますか?最初にPhotoshopでアプリケーションを描画し、その距離を測定しますか?

また、GUIデザイナーはいますか? (痛みを和らげるため)。 私はそれが大好きです。特にスピードと大きなフレームワークを必要としないという事実のためです。

MFCのプログラミングを定期的に行う人は、MFCのプログラミングをうまく利用する方法についてアドバイスをいただけたら歓迎します。

答えて

0

多くの場合、ダイアログリソースエディタとデータバインディングを使用してMFCにUIを作成します(ダイアログベースのビューを持つことができます)。ダイアログを作成していないのであれば、通常、コントロールのレイアウトにいくつかのアルゴリズムを念頭に置いて実装します。

2

MFCはIMOの痛みです。 C++でプログラミングする必要がない限り、C#をWPFまたはWinFormsで使用することをお勧めします。はるかに簡単です。また、C++を使用する必要がある場合は、Qtのような優れたGUIソリューションがあります。

+0

多くのライブラリがあり、GUIが必要なので、C++が必要な場合は、wxWidgetsまたはQTをお勧めします。私は、MFCのパスに行くことをお勧めします。 – schoetbi

1

一般的なMFCアプリケーションには、トップレベルのフレームウィンドウといくつかの子ビューウィンドウとコントロールバーがあります。これらのものは通常、手作業で配置する必要はありませんが、時には構築中に初期サイズを指定する必要があります。 Visual Studioのダイアログボックスエディタを使用して、ダイアログボックスをレイアウトできます。測位コードを手動で書き込まなければならないことは非常にまれです。

4

MFCの作業には、Visual Studioの一部であるリソースエディタがおそらくMFCを使用する最も簡単な方法だということに同意する必要があります。コントロールをダイアログ上に置いて、適切な比率にストレッチすることができます。記録のために、MFC であり、それはWindowsの一部としてバンドルされているというフレームワークです。

コントロールのサイズを変更する場合は、サイズ変更(サイズはON_SIZEと思われます)を処理するコードを追加する必要があります。一度に多くのものをサイズ変更/再配置したくない限り、これはあまりにも悪くありません。

個人的には、私はWxWidgetsの方が有利です。 wxDesignerのようないくつかの素晴らしいGUIレイアウトプログラムがあり、サイズ変更可能なダイアログとプロパティページを簡単に作成することができます。

1

どのバージョンのVisual C++を使用していますか?私が使用したすべてのバージョンは、GUIコンポーネントを配置して編集するための非常に優れたグラフィカルツールが付属しています。私は通常、必要な基本コンポーネントを追加して、どのように見えているかを見て、別のレイアウトを試してみる前にいくつかのコードを書いています。

私は何年もMFCアプリケーションを書いてきましたが、かなり好きですが、なぜあなたが学習を気にしているのかを尋ねたポスターに同意する必要があります。最近は、C#またはJavaのどちらかを学習する方が良いでしょう。

+0

+1私から。それが私がMFCアプリケーションを一緒にハックするのに使用した方法でした。今、私はwxPythonを使用して、稼働中のプログラムを実行して使用できるようにする時間が全くかかりません! –

4

MFCは、基本的なDoc/View、ダイアログ、ファンシーキャンディーのUIはありません。基本的な動作を拡張する必要があるとすぐに、その作業はますます困難になります。

1

MFCアプリケーションはかなり膨れている可能性があります(例:大規模なアプリケーションの実行可能なサイズ、メモリフットプリント、および/または実行時のDLLをアプリケーションと共に使用する必要があります)。 C++に焦点を絞っているのであれば、代わりにWTLを見てみることをお勧めします(Microsoftのライブラリであったが、SourceForgeになっています)。それは非常に軽量の代替(テンプレートを使用して)同様の構文を持つMFCです。

最近、GUIを含むほとんどのアプリケーションでJava for C++を放棄しました。私は戻っていくつもりはありません。

+6

MFCは肥大化しており、Javaは:))? –

+3

Java GUIのルック&フィールを我慢できません。彼らは恐ろしいです。私はネイティブUIよりもJava UIを好む人は知らない。 – Tim

+1

@Tim Javaは多くのルックアンドフィールをサポートしている。だから、Javaも最高ですし、本当に非常に使いやすいですし、サイズ変更の問題などを処理する非常に強力なレイアウトがあります。 –

1

MFCアプリケーションでダイアログのレイアウト機能を使用する場合は、CViewクラスをCompoomViewから派生させます。これは、.NET WinForms、VB6などの "フォーム"ベースのGUIによく似ているはずです。

これは、新しいアプリケーションウィザードのGenerated Classes 'Base Classドロップダウンセクションで行うことができますVS 2008で)。

ダイアログベースのアプリケーションを作成することもできます。これはすでによく慣れているようです。

アプリケーションの「ビュー」を設計する他の方法を提供する、他のいくつかのCView派生クラスがあります。基本クラスとして既定のCViewを使用する(既定ではウィザードが作成するので)、手動で "コントロール"を作成したり、画面をで作成することを想定します。旧式のWin32開発者がよく慣れ親しんでいる絵画(実際にGDIを使ってディスプレイを描く)は、現代のフレームワークではしばしば行われることはありません。

2

私は10年以上MFCを使用しています。他のプラットフォームでアプリケーションを実行することに興味がない限り、他の非Microsoftフレームワークよりも推奨します。あなたのアプリケーションがダイアログのように見えるようにするには、AardvarkのようにCFormViewを使用し、ダイアログエディタでレイアウトしてください。多くの私のMFCプログラムでは、ビューはCListViewsまたは左側のツリーと右側のListViewを持つアプリケーションのようなエクスプローラです。もう1つは、タブコントロールとプロパティページを持つ一般的なCViewです。それらには、レイアウトの問題はありません。コントロールを作成し、エッジから所定の距離に配置するだけです。 Prosiseはとても良いです。それが私がMFCでやり遂げる理由です。 CodeProject.comで、MFCを拡張するいくつかのクラス(ダイアログボックスやプロパティシートのサイズ変更など)を確認してください。 ブライアン

+0

6年後も、MFCはまだQTより優れていますWindowsアプリケーションが必要な場合や、各プラットフォーム用のネイティブGUIを設計する人材が必要な場合。 – Lothar

-1

GUIの目的でQTに進みます。

+0

利点について何か教えていただけますか? –

0

他のフレームワークを追加することなく、優れた結果を得ることができます。 私が作成したユーティリティのexampleがあります。

関連する問題