วิวัฒนาการของ Win32 API [ปิด]


11

Windows 32 API มีการเปลี่ยนแปลงตลอดเวลาหรือไม่ Charles Petzold หนังสือ "Programming Windows, 5th Edition" จากปี 1998 ยังคงมีข้อมูลที่เกี่ยวข้องหรือเป็นส่วนใหญ่ที่ล้าสมัย / ล้าสมัยหรือไม่?

ตัวอย่างที่โดดเด่นของการเพิ่มเติมล่าสุดไปยัง Windows 32 API (ถ้ามี) คืออะไร?

คำตอบ:


4

Thread Pool API ใหม่ใน Windows Vista คือการปรับปรุงและช่วยเหลืออย่างจริงจังในการเขียนโปรแกรมหลายเธรดเป็นอย่างดีตัวอย่างง่ายๆของวิธีที่ WinAPI พัฒนาขึ้น อย่างไรก็ตามความจำเป็นในการรักษาความเข้ากันได้นั้นเป็นปัจจัยผลักดันในการรักษาพื้นฐานของ Windows API ไว้เหมือนกันและส่งผลให้เกิดสิ่งที่ไม่เหมาะเช่นความเด่นของฟังก์ชั่น Ex เช่น CreateWindowEx ยังคงมีฟังก์ชั่นที่คอมไพล์ได้กับ Windows 64 บิตที่เข้ากันได้กับโปรแกรม 16 บิต

หนังสือเล่มนั้นยังคงมีการใช้งานอยู่หากคุณต้องการเขียนโปรแกรมที่ใช้ WinAPI ซึ่งมีฟังก์ชั่นที่ใช้กันทั่วไปในปี 1998 เนื่องจากไม่น่าเป็นไปได้ที่ API จะเปลี่ยนไป แน่นอนว่าแนวปฏิบัติที่ดีที่สุดในภาษาดั้งเดิมอาจเป็นลีกต่อไปโดยเฉพาะอย่างยิ่งหากหนังสือเล่มนี้เขียนขึ้นสำหรับ C หรือ C ++ เนื่องจากหนังสือเล่มหนึ่งจากปี 1998 เกือบจะถูกเขียนเทียบกับมาตรฐาน C ++ ขั้นต้น

นอกจากนี้การอ้างอิงที่ถูกต้องคือ Windows API ไม่ใช่ Windows 32 API เนื่องจาก API เดียวกันนั้นควบคุมทั้ง Windows 32 และ Windows 64


3

ฉันพบว่าการเขียนโปรแกรม Windowsยังคงมีประโยชน์ ขอบคุณที่ Microsoft ให้ความสำคัญกับความเข้ากันได้แบบย้อนหลังสิ่งสำคัญทั้งหมด (หน้าต่างจับข้อความ GDI ฯลฯ ) ดูเหมือนจะยังคงมีความเกี่ยวข้องและครอบคลุมใน Petzold (หากมีการเปลี่ยนแปลงอย่างรุนแรงเกินไปมันจะทำลายโปรแกรม Windows ที่มีอยู่มากเกินไปและโปรแกรม Windows ที่มีอยู่จำนวนมากเป็นข้อได้เปรียบส่วนใหญ่ของ Windows ในตลาด)

มี API ใหม่เฉพาะเช่นSetup API , Thread Pool APIและGDI +และมีหัวข้อใหม่เช่นทำงานภายในบริบทของ UAC ของ Vista และ 7 นอกจากนี้ยังมีฟังก์ชั่นใหม่หลายอย่างที่ Petzold ไม่ครอบคลุม แต่มันง่ายพอที่จะค้นหาหัวข้อใหม่ ๆ บน MSDN ได้ตามต้องการ การเขียนโปรแกรม Windowsยังไม่ครอบคลุม COM ซึ่งเป็นส่วนสำคัญของการเขียนโปรแกรม Windows

โปรดทราบว่า API ที่ครอบคลุม Petzold นั้นอยู่ในระดับต่ำและใช้ C (มี API ที่ใหม่กว่าสองสามตัวเช่น GDI + และ COM บางอย่างที่เป็นเชิงวัตถุ) การพัฒนาที่ทันสมัยใด ๆ ในปัจจุบันจะเป็นเชิงวัตถุและมักจะใช้เฟรมเวิร์กเช่น. NET หรือ Qt หรือ Delphi ของ VCL ดังนั้น จะไม่ค่อยเขียนแอปพลิเคชันที่สมบูรณ์ที่ดูเหมือนรหัสตัวอย่างในการเขียนโปรแกรม Windows ; อย่างไรก็ตามมันก็ยังดีสำหรับการอธิบายสิ่งที่เกิดขึ้นภายใต้ประทุน

ฉันมองไปรอบ ๆ มาแล้วและไม่พบการอ้างอิง API ใหม่ใด ๆ ฉันสงสัยว่านี่เป็นเพราะขนาดที่แท้จริงของ Windows APIs ปัจจุบัน การเขียนโปรแกรม Windows รุ่นที่ 5มีความยาวเกือบ 1,500 หน้าหนังสือที่ครอบคลุมทุกสิ่งใหม่จะใหญ่เกินไป ฉันหาข้อมูลเพิ่มเติมที่น่าสนใจสองประการเกี่ยวกับการเขียนโปรแกรม Windowsถึงแม้ว่าฉันยังไม่ได้อ่าน:

  • Essential COM , by Don Box - API ใหม่ของ Vista หลายตัวเป็นแบบ COM และ Petzold ไม่ครอบคลุม COM
  • การเขียนโปรแกรมระบบ Windowsโดย Johnson M. Hart - ดูเหมือนจะข้ามสิ่ง GUI และ GDI ทั้งหมดที่ Petzold ครอบคลุมเป็นอย่างดี แต่มีรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการที่ทันสมัยบนมัลติเธรด IPC และอื่น ๆ
  • Windows Internalsโดย Russonovich, Solomon และ Ionescu - น้อยกว่าเกี่ยวกับ API และอื่น ๆ เกี่ยวกับวิธีการทำงานของ Windows ภายใต้ฮูด Russonovich อาจรู้เรื่องนี้มากกว่าใครก็ตามที่อยู่ภายในหรือภายนอก Microsoft

0

Windows API มีการเปลี่ยนแปลงในช่วงหลายปีที่ผ่านมา มีการเพิ่มชุดฟังก์ชั่นใหม่ทั้งหมด (เช่นTaskDialogและตระกูล) และการแทนที่ฟังก์ชั่นที่มีอยู่ (เช่น: CreateWindowEx )

ฉันขอแนะนำให้ดูข้อมูลอ้างอิงที่ใหม่กว่านี้


มีข้อเสนอแนะใด ๆ ?
gablin

น่าเศร้าที่ไม่ ... ฉันไม่ใช่โปรแกรมเมอร์ C / C ++ / WinAPI จริงๆ ฉันเพิ่งรู้ถึงการมีอยู่ของฟังก์ชั่นใหม่เหล่านี้
Powerlord

คุณหมายถึงจะบอกฉันว่าระบบปฏิบัติการอายุ 20 ปีได้เพิ่มฟังก์ชั่นใหม่ทั้งหมดในช่วงเวลานั้นหรือไม่! mind = blown
MarcusJ

0

Task Scheduler เป็นของใหม่มีการเพิ่มออบเจ็กต์และอินเตอร์เฟสใหม่จำนวนมาก ก่อนหน้าที่ Task Scheduler 2.0 จะมีวัตถุประมาณ 5 รายการที่เกี่ยวข้องในการจัดตารางงาน ใน 2.0 (เปิดตัวเมื่อ Vista ออกมา), มี 20, ไม่มีการล้อเล่น, 20 นี่คือสิ่งที่ไม่ยอดเยี่ยมเกี่ยวกับการเขียนโปรแกรม win32 แต่มันก็ไม่ได้แย่ขนาดนั้น

ฉันรักการเขียนโปรแกรมใน win32 คุณเรียนรู้มากมายเกี่ยวกับการทำงานของ Windows และระบบปฏิบัติการอื่น ๆ ในระดับที่ต่ำกว่า & มันทำให้คุณเป็นโปรแกรมเมอร์ที่ดีกว่าที่ฉันเชื่อ ถ้าคุณเขียนโปรแกรมในหลาม, os.listdir("")คุณไม่ได้เรียนรู้เกี่ยวกับวิธีการไดเรกทอรีที่มีการจัดให้ใช้เพียง แต่เมื่อใช้FindFirstFile()& FindNextFileใน win32 คุณจะค้นพบวิธีจัดระเบียบไดเรกทอรีค้นหา ".. " & "ที่ซ่อนอยู่" ไดเรกทอรีและจากนั้นสามารถเกิดขึ้นกับวิธีที่มีประสิทธิภาพมากขึ้นในไดเรกทอรีและค้นหาไดเรกทอรี

สำหรับทรัพยากร win32 ไปที่http://groups.google.com/group/comp.os.ms-windows.programmer.win32/topics

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.