C および C++ でコンソールおよびネットワーク クライアント/サーバー アプリケーションを作成した経験がありますが、win32 ビジュアル API、MFC、Qt、wxWidgets などの使用についてはほとんど知りません。に特化し、将来に備えて堅牢にするために?
9 に答える
Windows での GUI アプリケーションのプログラミングは非常に多くの方法で実行できるため、これはかなり幅広い質問です。
GUI アプリの開発には、言語とAPI/フレームワークという 2 つの主要部分があります。Windows GUI アプリの作成方法を学ぶことに興味があることを考えると、言語は実際には重要なポイントではありません。したがって、既に知っている言語を選択し、選択した言語で利用できるフレームワークまたは API を使用する必要があります。
C を使用したい場合は、自分で Win32 API を扱うことにかなり制限されています。その場合、PetzoldやRichterを読むことから始めるのが最適です。Win32 API は非常に困難な場合がありますが、学習する価値は十分にあります (imho)。Web 上には Win32 に関するチュートリアルがたくさんあり、Win32 API の完全なリファレンス/ガイドを含むMSDNが常にあります。API だけでなく、Win32 アプリケーションの構成要素であるリソースやダイアログなどの他の領域もカバーするようにしてください。
C++ を使用する場合は、C を使用する場合のすべてのオプションに加えて、いくつかのオプションがあります。Win32 API を直接使用してから、MFC、Qt、wxWindows、GTK などの既知のフレームワークに移行することをお勧めします。そうすれば、ボイラープレート コードの作業に費やす時間を減らし、代わりにアプリケーション ロジックの作成に集中できます。先ほどリストした最後の 3 つのオプションには、クロスプラットフォームであるという追加の利点があるため、プラットフォーム固有の問題についてあまり心配する必要はありません。あなたが Windows で作業したいと言ったことを考えると、クロスプラットフォームではなくそれに集中することに熱心であると思います.コンセプト。
MFC と Win32 API を扱う場合は、コードを記述する前に用語をしっかりと理解しておくことをお勧めします。たとえば、メッセージ ポンプとは何か、およびそのしくみを理解する必要があります。「オーナー描画コントロール」やサブクラス化などの概念について知っておく必要があります。これらのこと (およびそれ以上) を理解すると、MFC での作業がより簡単になります。なぜなら、MFC はそのクラス インターフェイスで同様の用語を使用するからです (たとえば、いつ、どのようにメッセージを変換するかを理解する前に、「メッセージを変換する」の意味を知る必要があります)。PreTranslateMessageを使用します)。
Managed C++ を使用して .NET GUI アプリケーションを作成することもできますが、いくつかの場所で、Managed C++ は実際にはこの方法で使用することを意図していないと読んだことがあります。代わりに、ネイティブ/アンマネージ コードとマネージ コードの間のゲートウェイとして使用する必要があります。.NET を使用している場合は、VB.NET や C# などの .NET 言語を使用して GUI を構築することをお勧めします。
したがって、.NET を使用する場合は、現在、WinFormsライブラリまたはWPFを選択できます。個人的には、WPF が WinForms アプリケーションを置き換えるように設計されていることを考えると、WinForms アプリケーションの構築を学ぶのに時間を浪費していると感じています。時間が経つにつれて、WPF はより普及し、Winforms は消滅する可能性が高くなります。WPF にはより豊富な API セットがあり、Winforms が行う制限の多くに悩まされることはありません。ただし、このルートを選択する場合は、間違いなく、WPF アプリケーションを駆動するマークアップ言語であるXAMLを学習する必要があります。この技術は成熟期を迎えており、それについて学ぶための素晴らしい場所がたくさんあります。まず、LearnWPFやDrWPFなどのサイトがあります。本当に素晴らしい記事がいくつかあります。第二に、このトピックに関する質の高い本がたくさんあります。
要約すると、言語と技術を選択したら、その道は実際には非常に簡単です。1 冊か 2 冊の本を手に取り、いくつかのブログを読み、いくつかのコード サンプルに取り掛かります。そして最も重要なことは、コードを書くことです。書き続け、間違いを犯し続け、そこから学び続けてください。
最後の注意として...
つまり、シルバーライト。MS ルートに行きたくない場合は、Adobe の Flash/Flex を見てみるとよいでしょう。Silverlight と Flash/Flex の両方が RIA をビルドします。それが私たちが向かっているところだと思います。Office のようなアプリの時代は終わりました
私はまったく同意しません。Silverlight は WPF と同じではありません。Silverlight は Web 固有であり、WPF の機能のサブセットのみを備えています。質問が Windows GUI アプリについて尋ねていることを考えると、Flash/Flex リッチ インターネット アプリは実際には適切な提案ではありません。また、リッチ クライアント アプリケーション (office など) の使用期限が定められていることにまったく同意しません。
それが役立つことを願っています。幸運を :)
これを開始するのに適した場所と呼ぶかどうかはわかりませんが、将来に備えたい場合は、 Windows用の GUI をプログラミングする目的で完全に構築されたWindows プレゼンテーション基盤をご覧ください。
Windows用の単純なGUIアプリケーションを作成した最初の経験は、C#とVisualStudioを使用したものでした。GUI構築インターフェースは、潜在的なユーザーアクションに基づいてスケルトンメソッドを生成する単純なドラッグアンドドロップ取引です。私はこれを使ってかなり基本的なプログラミングを行っただけですが、基本を学び始め、進むにつれてより高度な機能に拡張するのに最適な場所になると思います。
多くのオンライン Win32 チュートリアルがあります。
http://www.zeusedit.com/forum/viewtopic.php?t=1218
選択できるコンパイラはたくさんあります。
http://www.zeusedit.com/forum/viewtopic.php?t=238
Borland Win32 SDKドキュメントを WinHelp ファイル形式で入手することもお勧めします。
http://www.zeusedit.com/forum/viewtopic.php?t=7
Win32 の最低限の基本しか説明していませんが、MSDN よりも難解で肥大化していないため、開始時に役立ちます。
Silverlight、Flash/Flex、または同様のルートをたどることはありません。見た目はいいのですが、主な問題は、それを実行するエンジンのコードが完全にクローズド ボックスであり、1 つの会社によって制御されていることです。たとえば、両方の 64 ビット バージョンを考えてみましょう。新しいプラットフォームが出現した場合、既存のコードをそれに移行することはできません。
ビジネスアプリの場合、Windowsフォームは非常に成熟しています。それはあなたのためにたくさんを自動生成することからきめ細かい制御を可能にしそしてあなた自身を転がすことへの穏やかな道を提供します。そこにはたくさんの高品質のサードパーティのコントロールとたくさんの例、ドキュメントなどがあります。他の誰かが解決していない問題に遭遇するのは難しいです。WinFormsフレームワークはその上にあるため、Win32の背景知識(Petzoldなど)を取得することを強くお勧めします。
私はWPFの経験がありませんが、サンプルアプリから、インターフェイスがよりグラフィカルなメタファーの恩恵を受けるアプリに適しているように見えます。したがって、銀行のアプリを使用している場合は、追加の設計オーバーヘッドの価値はおそらくありません。ただし、たとえば倉庫管理アプリを使用している場合は、きれいな箱をきれいなゴミ箱に入れることで改善できます。
@StephenCox:間違った質問に対する間違った答え。OPは、デスクトップクライアントアプリ、さらにWPF!=Silverlightについて質問しています。
最初に基本を正しく理解してください。私が見つけた最高のチュートリアルは次のとおりです。http://winprog.org/tutorial/start.html
その後、ホームページはひどく不快ですが、チュートリアルページはコンテンツと美学に優れています: http://www.tenouk.com/cplusmfcdotnet.html
それからもちろんMSDNもあります。
読者は既に C と C++ に精通しているため、Charles Petzold の本を使用して単純な Windows GUI アプリの作成方法を学習することをお勧めします。Windows がどのように機能するかについての基本的な理解が得られます。目にするもののほとんどがウィンドウであり (たとえば、ボタンはウィンドウです)、これらのウィンドウはメッセージに応答することを理解しておくとよいでしょう。ただし、これに多くの時間を費やすつもりはありません.WPFを選択する場合は、必ずしも最初にこれを行う必要はありません. これだけは基本的なことを理解しておいてよかったと思います。
最近、.Net Rocksで「Kate Gregory Develops in C++ for Vista!」という優れたポッドキャストがありました。そこで彼女は、MFC をこれから始める人は (最近更新されたとしても) MFC を使用/学習しないことをお勧めします。
将来に備えて WPF を学ぶ必要がありますが、まだ完全ではないため、作成するクライアント サイド アプリの種類によっては、おそらく WinForms を学ぶ必要があります。大多数の人はまだ WPF を使用していないため、学習を開始するには良い時期です。C++ でマネージ コードを実行するよりも、C# を使用して学習する方が簡単だと思います。