Win32の新しいアプリケーションにマネージコードを使用しないことを選択していますか?なんで?CLRから利用できない必要なリソースはありますか?
(「新規」に注意してください-既存のコードベースの拡張ではありません。)
重要な理由の 1 つは、展開の容易さです。(MFC または WTL ライブラリを使用して) Win32 アプリケーションを構築でき、静的リンクを使用すると、外部ライブラリに依存しません (はい、静的リンクが推奨されるアプローチではないことはわかっています)。
ユーザーは、最初に何かをインストールする必要なく、このアプリケーションをインストールして実行できます。フレームワーク ライブラリは必要なく、DLL 地獄も必要ありません。比較のために、 Paint.Net の作成者によるこれらの 投稿を読んで、ユーザーが .Net アプリケーションをインストールするのがいかに苦痛であるかを確認してください。
Win32を書く最後の理由は移植性だと思います。C ++は、すべてのプラットフォームで、単純に、狂った依存関係なしにコンパイルされます。したがって、ポータブルコードの場合、GUI用にWin32にアクセスする必要があります。
Win32プログラミングを行うために.NETをバイパスしていません。アプリケーションをできるだけ多くのプラットフォームで実行したいので、Javaプログラミングを行うために両方をバイパスしています。Windowsは市場の大部分を支配しているかもしれませんが、特にC ++やC#よりもはるかに高速にJavaコードを記述できるため(これは私の能力に基づいており、言語自体)。
現時点では、.NETもWin32も、そのクロスプラットフォーム機能を提供していません。最終的にはMonoを使用する可能性がありますが、それでも本番環境に対応していないと考えており、その将来についてはまだ疑問があります。
私の職場には、MFCを使い慣れているという理由でMFCの使用を好む昔の人がいます。数日前、私たちはシンプルなアプリを作成する予定でしたが、当然、彼らはそれをMFCで作成したいと考えていました。その「むち打ち」だけで約1週間かかり、1日でアプリが必要になりました。私は本当に彼らを責めることはできません-古い習慣は一生懸命に死にます。最終的にはC#を使用し、MFCユーザーにGUIデザインをいじらせました(彼らは非常に高く評価しています)。
はいといいえ。Win32/COM の処理が必要な場合は、C++/CLI を使用します。C++/CLI は素晴らしいです。私たちの UI は完全に .NET ですが、場合によっては直接 C++ を使用する必要があります。