web-dev-qa-db-ja.com

Win32 APIの進化

Windows 32 APIは時間の経過とともに大きく変化しましたか? Charles Petzoldの1998年の「Programming Windows、5th Edition」の本には関連情報がまだ含まれていますか、それともほとんどが時代遅れ/古くなっていますか?

Windows 32 API(ある場合)に最近追加されたいくつかの顕著な例は何ですか?

11
fredoverflow

Windows Vistaの新しいスレッドプールAPIは重大な改善であり、WinAPIの進化の簡単な例として、適切に作成された複数のスレッドプログラムを支援します。ただし、互換性を維持する必要性は、Windows APIの基本を同じに保つための原動力であり、CreateWindowExのようなEx関数の優勢など、いくつかの理想的でないものをもたらしました。 16ビットプログラムとの互換性のために、64ビットWindowsに対してコンパイル可能な関数がまだあります。

APIが変更された可能性は低いので、1998年に一般的だった機能を実行するWinAPIベースのプログラムを作成する場合、この本は引き続き役に立ちます。もちろん、元の言語のベストプラクティスは、特にCまたはC++向けに書かれている場合は、リーグが先行している可能性があります。

また、同じAPIがWindows 32とWindows 64の両方を管理するため、正しい参照はWindows APIではなくWindows APIです。

4
DeadMG

見つけた ウィンドウのプログラミング まだ役に立ちます。 Microsoftが後方互換性に重点を置いているおかげで、すべてのコア要素(ウィンドウハンドル、メッセージ、GDIなど)はまだ関連性があるようで、Petzoldで十分にカバーされています。 (何かが大幅に変更された場合、既存のWindowsプログラムの数が多すぎるため、既存のWindowsプログラムの数が非常に多いため、市場におけるWindowsの利点の大部分を占めています。)

セットアップAPIスレッドプールAPI 、および GDI + などの特定の新しいAPIがあり、コンテキスト内での作業などの新しいトピックがありますVistaと7のUACの。 Petzoldがカバーしていない個別の新機能もいくつかありますが、必要に応じてMSDNで新しいトピックを検索するのは簡単です。 ウィンドウのプログラミング また、Windowsプログラミングの大部分を占めるCOMについても取り上げていません。

PetzoldがカバーするAPIはすべて低レベルでCベースであることに注意してください。 (GDI +やいくつかのCOMのような、いくつかの新しいAPIはオブジェクト指向です。)最新の開発は事実上すべてオブジェクト指向であり、多くの場合、.NETまたはQtまたはDelphiのVCLなどのフレームワークを使用するため、サンプルコードのように見える完全なアプリケーションを書くことはめったにありません ウィンドウのプログラミング;ただし、内部で何が行われているのかを説明するのに最適です。

しばらく前を調べてみましたが、新しいAPI参照は見つかりませんでした。これは、現在のWindows APIのサイズが非常に大きいためだと思います。 プログラミングウィンドウ、第5版 すでにほぼ1500ページの長さですが、新しいものをカバーする本は大きすぎます。私はいくつかの興味深い外見のサプリメントを見つけました ウィンドウのプログラミング、まだ読んでいませんが:

  • 必須のCOM、Don Boxによる-Vistaの新しいAPIのいくつかはCOMベースであり、PetzoldはCOMをカバーしていません。
  • Windowsシステムプログラミング、Johnson M. Hart氏-GUIとGDIはPetzoldが非常にうまくカバーしているものを完全にスキップしているようですが、最新のアプローチであるマルチスレッド、IPCなどの詳細について説明しています。
  • Windows内部、Russonovich、Solomon、およびIonescuによる-APIについての詳細ではなく、Windowsが内部でどのように機能するかについての詳細。 Russonovichは、Microsoftの内部または外部の誰よりも、このことについて詳しく知っている可能性があります。
3
Josh Kelley

タスクスケジューラも新しく、多くの新しいオブジェクトとインターフェイスが追加されています。タスクスケジューラ2.0以前は、タスクのスケジュールに関与するオブジェクトは約5個でした。 2.0(Vistaが発表されたときに導入されました)では、20、冗談はありません。20です。これは、win32プログラミングのそれほど優れた点ではありませんが、それほど悪くはありません。

私はwin32でのプログラミングが大好きです。Windowsや他のOSが低レベルでどのように動作するかについて多くを学びます。 Pythonでプログラミングする場合、ディレクトリの編成方法については知りません。単にos.listdir("")を使用してください。しかし、win32でFindFirstFile()FindNextFileを使用すると、ディレクトリがどのように編成されているかがわかり、非表示の「..」と「。」が見つかります。ディレクトリおよびそれから、ディレクトリをカタログ化および検索するためのより効率的な方法が考えられます。

Win32リソースの場合は http://groups.google.com/group/comp.os.ms-windows.programmer.win32/topics にアクセスします

0
user14321

Windows APIは長年にわたって変化しています。これは、まったく新しい関数のセット(例: TaskDialog and family)、および既存の関数の置き換え(例: CreateWindowEx )が追加されています。

新しいリファレンスを参照することをお勧めします。

0
Powerlord