8

WinAPI/Win32 に根本的な違いはありますか? 新しい OS 機能を利用するために必要な追加の知識はありますか?

過去に Win32 アプリをコーディングしたことがある人が陥る落とし穴はありますか?

Silverlight について話しているのではなく、まったく別のワックスのボールです。(私はまだ仕事でそれをサポートするVSを持っていません。)

編集: ドリューはこれまでのところかなり良い答えを出していますが、プログラマーが知っておくべき重要なことは何ですか? つまり、Charles Petzold の本の付録には何を含めるべきですか? (理論上)

4

5 に答える 5

14

もちろん、必要なツールがあることを確認するために知っておくべき新しい API がたくさんあります。それ以外にも、注目すべき変更点がいくつかあります。

哲学の変更
古い win32 API の大部分は、ハンドルが渡される C スタイルの API に焦点を当てていました。現在、開発されている新しい API の多くは COM ベースであるため、COM と ATL を強化することは価値があります。

また、独自のライブラリを作成している場合は、新しい API スタイルに注意することもできます。これは、もう少し一貫性があり、ハンガリー語表記などを回避します。

代替
手段 一般に、約 10 年前に知っていた方法がまだ最先端であると思い込まないでください。それらはすべてまだ存在しているため、間違っているとは必ずしも言われません。MSDN をチェックして、より適切なものを参照しているかどうかを確認し、最新の SDK を使用して、一部の機能の非推奨警告が表示されるようにします。特に、使用している文字列関数が安全であることを確認してください。

具体的には、「代替」API の 1 つに Direct 2d があります。これは、UI 用の DirectX スタイルの API です。Windows 7 用のグラフィックス コードを作成している場合は、Direct2d over GDI を検討する必要があります。これには、GDI と互換性がありますが、GDI とは大きく異なるプログラミング モデルがあります。Direct 2d は Vista に移植される可能性があります。

また、win32 スタイルのメニューを使用する代わりに、Vista と Win7 で使用できるリボンの使用を検討してください。

共通コントロール ライブラリを使用している場合は、デフォルトの v5 ではなく、必ず v6 を使用してください。

最後に、管理者権限を必要とするものを不必要に呼び出していないことを確認してください。これにより、UAC が表示されます。

今のところ思いつく限り。

于 2009-07-19T02:20:29.320 に答える
3

それぞれに新しい API があります。

必須ではないかもしれませんが、追加の知識があります。いくつか例を挙げると、64 ビットおよびマルチスレッドのアプリケーション開発に精通している必要があります。Direct2D、.NET などの上位レベルの構成要素は、必ずしも下位レベルの API ではなく、知識の調整を必要とするものです。

于 2009-07-19T01:09:25.960 に答える
2

従来の C/C++ を使用するか、新しい .Net フレームワーク言語 (C# / VB.net / Python.net など) を使用するかを選択できます。後者の場合、実装よりもフレームワークを知ることが重要です。言語間で移植可能なフレームワークを理解すれば、(一般に) ポインター、スレッド化、バッファー、およびメモリ管理から分離され、構文のいくつかの違いは別として、VB.net プログラミングを簡単に習得できます。アプリが行うことのほとんどはフレームワークの一部を呼び出すことであるため、C# の担当者です)。たとえば、C# でクラスを作成し、それを VB.net プログラムで使用して、Powershell コマンドレットから同じクラスを参照できます。

古いスタイルの C インターフェイスはまだ Win32 用ですが、特に使用する必要がない限り (レガシー コード、Direct X、デバイス ドライバーなど)、新しいものを検討します。WPF のようなものに関しては、アンマネージ コードを介した直接的なルートさえありません。あらゆる種類の醜い相互運用のフープを飛び越えなければなりません。

于 2009-08-12T10:17:32.647 に答える
1

整合性レベルについても学ぶのは良いことです。アプリケーションの性質にもよりますが、OS で実行されている他のプロセスを含む何かをしようとする場合は、これについて知っておくことが重要です。このテクノロジは、整合性レベルが低いプロセスが整合性レベルが高いプロセスと対話するのを防ぎます。これには、メッセージング、フック、DLL インジェクション、オープン ハンドル、およびその他の多くの手法が含まれます。

于 2009-12-16T21:40:46.080 に答える
1

特にない。古いものはほとんど同じように機能します。いくつかの新しい API がありますが、驚くようなものは何もありません (そして、古い Win32 規則に従っています)。したがって、Vista で知っていることはすべて、Win7 にも当てはまります。

現在、ユーザー エクスペリエンス (タッチ スクリーン、ライブラリ (プログラマーのものではなくユーザー エクスペリエンスのもの)) に関する新しいガイドラインがいくつかありますが、API スタイルは同じです。

于 2009-07-19T01:08:46.083 に答える