Win32 APIの進化[終了]


11

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

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

回答:


4

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

APIが変更された可能性は低いため、1998年に一般的な機能を実行するWinAPIベースのプログラムを作成する場合、その本は引き続き有用です。もちろん、1998年の本はほぼ確実にpre-Standard C ++に対して書かれていたため、本がCまたはC ++向けに書かれている場合は、元の言語のベストプラクティスが先に進むかもしれません。

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


3

プログラミングウィンドウがまだ有用であることがわかりました。マイクロソフトは下位互換性に重点を置いているため、コアスタッフ(ウィンドウハンドル、メッセージ、GDIなど)はすべて関連性があり、Petzoldで十分に説明されています。(何かが大幅に変更された場合、既存のWindowsプログラムが多すぎるため、既存のWindowsプログラムの膨大な数が市場におけるWindowsの優位性の大きな部分を占めます。)

Setup APIThread Pool APIGDI +などの特定の新しいAPIがあり、Vistaおよび7のUACのコンテキスト内での作業などの新しいトピックがあります。また、Petzoldがカバーしていない個別の新しい関数もいくつかありますが、必要に応じてMSDNで新しいトピックを調べるのは簡単です。 WindowsはプログラミングもWindowsプログラミングの大きな一部とすることができCOMを、カバーしていません。

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

少し前に見て、新しいAPIリファレンスが見つかりませんでした。これは、現在のWindows APIのサイズが大きいためと思われます。プログラミングWindows、第5版はすでにほぼ1500ページの長さで、新しいものを扱った本は大きすぎます。まだ読んでいませんが、いくつかの興味深い外観のサプリメントをProgramming Windowsに見つけました。

  • Don Boxによる Essential COM -Vistaの新しいAPIのいくつかはCOMベースであり、PetzoldはCOMをカバーしていません。
  • Johnson M. Hartによる Windows System Programmingは、PetzoldがカバーしているGUIとGDIの部分を完全にスキップしているように見えますが、マルチスレッド、IPCなどの最新のアプローチに関する詳細があります。
  • Russonovich、Solomon、Ionescuによる Windows Internals -APIについてではなく、 Windowsが内部でどのように機能するかについて詳しく説明します。Russonovichは、おそらくマイクロソフトの内外の誰よりもこのことについてよく知っています。

0

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

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


何か提案がありますか?
ギャブリン

悲しいことに、いいえ...私は実際にはC / C ++ / WinAPIプログラマーではありません。これらの新しい関数の存在を知っています。
パワーロード

あなたは、20年前のOSがその期間中に完全に新しい機能を追加したと言うつもりですか?!心=吹き飛ばさ
-MarcusJ

0

タスクスケジューラも新しく、多くの新しいオブジェクトとインターフェイスが追加されました。タスクスケジューラ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にアクセスしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.