良い質問。表面的には、「Java のようなオブジェクト指向」であるため、C++ を推奨することは明らかです。唯一の問題は、実際にはそうではないということです。C++ では OOP が許可されていますが、これは C++ がサポートするいくつかのパラダイムの 1 つにすぎません。C++ を OOP 言語のように扱う (特に Java のように扱う) と、フラストレーションがたまるだけです。
問題は、Java と C++ には実際にはあまり共通点がないことです。Java プログラマーは、Java が C++ に触発されたと信じがちですが、それは、C++ が C++ の最も初期のバージョンを意味する場合にのみ当てはまり、"C with classes" と呼ぶ方が適切かもしれません。それ以来、C++ は独自の方法で独自の言語に完全に変換されました。それ以来、おそらく Java よりもはるかに多くの変更が行われています。当時の Java プログラマーは、今日の Java コードを理解することができます。C++ ではそうではありません。したがって、C は実際には「最新の C++」よりも Java に近いと言えます。C は、Java から GC とクラスの概念とその他のいくつかの抽象化を取り除いた場合に得られるものです。C++ にたどり着くには、
さらに、C++ は非常に複雑な言語であり、それを十分に習得するには何年もかかります。そして、それをよく学ばないと、何度も自分の足を撃ちます。
最後に、それはあなたの目的に依存します。C++ は C よりもはるかに現代的な言語であり、一度習得すると、非常に表現力豊かで強力であり、驚くべきことに、非常にエレガントで簡潔になることさえあります。しかし、学習曲線は厄介です。したがって、長期的にネイティブ プログラミングを行う場合は、C よりも C++ をお勧めします。
しかし、主な目的が Win32 API (またはその他のネイティブ API) とのインターフェイスである場合は、C++ は必要ありません。Win32 およびその他のほとんどの API は C++ ではなく C で記述されており、Java とのインターフェイスに非常に複雑なコードはほとんど必要ありません。
Win32 の学習については、その通りです。必要な詳細はすべて MSDN にあります。全体像を知りたい場合は、Petzoldがそのテーマに関する本です。