由於查爾斯Petzold的書代碼和一個大風扇的註釋圖靈我在他的書編程Windows教導Win32編程中C.我是一個大一計算機專業的學生誰第一個學過C來了,但我用C#和.NET for Windows編程,所以我想知道Win32是否仍然與專業Windows程序相關。作爲一名想要編程Windows應用程序的學生,本書涵蓋的深入學習Win32 API對我來說是否值得?Win32編程與現代專業人員的相關性如何?
回答
這真的取決於您想要開發的應用程序種類。對於大多數目的來說,C#和.NET是完全適合的。但是,某些類型的應用程序需要儘可能少的依賴關係(想到了外殼擴展),這些應用程序不適合用作.NET應用程序。對於那些你需要Win32的。
與往常一樣,即使您在大多數工作中使用.NET,也至少對Win32有基本的瞭解。
在我看來,沒有。我很久以前就知道了,所以你不必!
我認爲你首先學習C很棒,而且我會不時地寫C程序,但是我不明白爲什麼win32 API會深入挖掘。老實說,這是一個大混亂。
有些東西不能沒有贏的API調用,但隨着.NET那些東西每個版本做越來越少了,所以沒有我不會學勝API,如果我在那裏你...
我完全同意喬爾斯波斯基在他的許多偉大的作品之一articles中寫道。我認爲了解機器的底層不僅要能夠編寫高質量的代碼,還要能夠解決不可避免會出現的問題。
所以,是的,重要的是至少知道WIN32 API的基礎知識可能不深入,但至少知道它在那裏,在你將編寫的所有東西的基礎上。
除非您需要某些不在.NET Framework中的功能(例如獲取打印機驅動程序的詳細信息),否則不會。這大約是你將要做的99%(當然,這是我剛剛製作的一個任意值)。
即使您使用Win32而不是.NET,是否真的需要學習與本書相同的深度?瀏覽部分,瞭解如果您將來遇到某些問題,則知道該在哪裏尋找它。然後停下來。當你需要它或有空閒時間時深入研究。
我真的不認爲「學習的Win32 API」是任何人都現實。這些API(是的,不止一個)是巨大的,你幾乎不需要詳細瞭解它們。我建議閱讀一些基礎知識(例如,窗口創建,窗口消息,窗口過程,可能是某些GDI等),並使用MSDN在需要時查找其餘部分。
絕對要學AlexDrenea提到的基礎知識。雖然.NET可以避免許多Win32 API調用。 Win32 API非常龐大,你一定會遇到.NET沒有爲你包裝它的情況。
現實生活中常見的情況sort arrows on ListViewColumns
按格雷格的評論,這是依賴一定程度上域。我做了很多Windows CE /移動編程,其中.NET對於許多設備而言過於霸道,而其他框架(如MFC)沒有完全實現。在這種情況下,Win32的大部分仍然非常相關。這就是說,我不會先學習它,我只是通過基礎知識,並在需要時挖掘其餘部分。這些文檔和示例對於這種方法來說已經足夠了,就像這樣的社區提供的在線幫助一樣。
如果您在Windows上編寫C#,這非常相關。並非Win32的所有功能都通過.Net庫公開。一個具體的例子是我在這裏描述的WM_SETREDRAW消息技術:WM_SETREDRAW。在其他時候也需要控制焦點問題。
而且,理解的Win32和Windows的工作將如何給你一個更好的瞭解C#的各個方面/網等爲:
- 是什麼Control.Invoke()實際上呢?
- Control.BeginInvoke和Control.Invoke之間的區別是什麼?
- 真正導致我的控件事件觸發的原因OnClick等,我如何調試。
也就是說,WPF改變了所有這一切,如果你只寫.Net 3/3.5代碼,那麼我的論點就失去了一些相關性。
我認爲它已經被回答了,但是如果你在.NET中進行.NET 2.0開發或者任何winform,你肯定會遇到很多問題,關於框架的某些部分如何包裝win32和mfc以及你我們需要深入研究,以實現按預期工作的東西。
這已討論了專業Win32 API的新聞組多次( 消息://comp.os.ms-windows.programmer.win32)
(由最大的大師和暢銷書作家(彼佐爾德, Russinovich等)在世界上......)
如果你想解決商業問題,那麼比編程Win32系統有更好的工具。號角。德爾福。其他人我毫不懷疑。
但我想學習如何工作你在好代替與C
我覺得學習的基礎知識是非常重要的。如果你學到的東西足夠顯示一個帶有一些字段,一些按鈕和一個菜單的窗口。也許在一個單獨的窗口中畫一些東西它可以幫助您瞭解Windows如何真正工作的基礎知識。我相信理解消息循環和認識到幾乎所有你看到的都是一個窗口是每個人都應該知道的基本事情。我第一次意識到按鈕是它自己的窗口時,我的眼睛真的被打開了。然後通過發送這些窗口消息,它可以幫助您瞭解事物的功能可以打開和關閉。 Subclassing窗口讓你可以訪問.NET或VB Classic等功能中未公開的功能,讓你增強窗口的功能。
我仍然在使用它賺錢的一部分。我們有一個基於WinAPI的C IDE。現在已經有15年左右的時間了,而且還在運行;-)。它的完整下載大約是5 MB,因爲你在.NET世界中沒有任何東西。所以對我們來說這仍然是一件有價值的事情......
- 1. 記住代碼,專業人員你怎麼做
- 2. 如何在.Net序列化中成爲專業人員
- 3. 項目組織與專業人員和學生
- 4. 初級專業人員連接通過Java應用程序
- 5. 如何在會員專業使用jquery
- 6. 不相關的專業化必須存在編譯?
- 7. OpenAjax聯盟與普通Web開發人員的相關性如何?
- 8. 專業人員如何在iPhone應用程序中檢索數據? (數據庫)
- 9. 專業代碼
- 10. 關於編程工具/專業工作流程的博客
- 11. Zen Post Cart更新數據庫與Post會員專業編號
- 12. 成員模板專業化
- 13. 針對專家開發人員的JavaScript編程任務介紹
- 14. 的Win32應用程序崩潰嵌入式8專業版
- 15. 如何在CodeFirst中實現專業化
- 16. 用LINQ to SQL選擇人員和他所有的專業
- 17. 找到下一個可用的專業人員
- 18. 專業班與SFINAE
- 19. 公開論壇,爲培訓人員(專業的IT課程來回開發商)
- 20. 模板編程:專業化和enable_if
- 21. 如何刪除有關「數據庫專業人員的VSTS」包裝未正確加載的彈出窗口。「?
- 22. 爲什麼Ruby on Rails專業人員不使用腳手架?
- 23. 更改幣種和刪除.00付費會員專業人士
- 24. 初級專業人員場64錯誤ISO包裝
- 25. Oracle專業開發人員,版本。爲MS-DOS 6.0.33
- 26. 特定成員的模板專業化?
- 27. 模板模板的會員專業化
- 28. 成員的部分專業化
- 29. 如何實現專業版android應用程序
- 30. 模板專業化實現
這個問題的重複:http://stackoverflow.com/questions/5507/does-it-still-make-sense-to-learn-low-level- winapi-programming – MarkJ 2009-03-12 23:03:23