C++ 學習之旅 Windows程式內部運行原理

來源:互聯網
上載者:User

學習C++與.net不同的是,一定要搞清楚Windows程式內部運行原理,因為他所涉及大多數是作業系統的調用,而.net畢竟是在.netFrameWork上唱戲。

那Windows應用程式,作業系統,電腦硬體之間的相互關係究竟什麼了,下面的圖就給予很好的解釋。

向下箭頭①是 應用程式運行判斷處理的結果,輸出到輸出的裝置。

向上箭頭②是輸入裝置,輸入到作業系統中。

向下箭頭③代表API,我們要解釋以下API是什麼。API是應用程式介面, 表示應用程式可以通知作業系統執行某個具體的動作,如作業系統能夠控制音效卡發出聲音,但它並不知應該何時發出何種聲音,需要應用程式告訴作業系統該發出什麼樣的聲音。這個關係好比有個機器人能夠完成行走的功能,但是,如果人們不告訴它往哪個方向上走,機器人是不會主動行走的。這裡的機器人就是作業系統,人們就是應用程式。 對程式員來說,就可以理解為可以調用函數庫,C++程式員是對作業系統的同用。Java中調用的API是jdk中提供的函數庫,而。net程式員則是.netframework提供的函數庫。

向上的箭頭④表示作業系統能夠將輸入裝置的變化上傳給應用程式。如使用者在某個程式活動時按敲了一下鍵盤,作業系統馬上能夠感知到這一事件,並且能夠知道使用者按下的哪一鍵,作業系統並不決定對這一事件如何作出反應,而是將這一事件轉交給應用程式,由應用程式決定如何對這一事件作出反應。好比有個司機開車看見前面遇到一輛車,我們的神經末梢(相當於作業系統)馬上感知到這一事件,並傳遞給了我們的大腦(相當於應用程式),我們的大腦最終決定如何對這一事件作出反應,如將踩刹車,停下來,或是英勇撞上去(則是一個sb做法)。對事件作出反應。

作業系統是怎樣將感知到的事件傳遞給應用程式的呢?這是通過訊息機制(Message)來實現的。作業系統將每個事件都封裝成一個稱為訊息的結構體MSG來傳遞給應用程式,參看MSDN。

MSG結構定義如下:
typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;的過程就是訊息響應。

其實,寫在這裡,作為一個做過3年.net開發人員。我這裡有感而發,C++是如此,.net事件響應的機制。何嘗不是一個訊息機制。 訊息機制,是程式界一大質的飛躍,而也是這種訊息機制,把.net程式員的控制項封裝太死, 也造就一大批只能拖控制項的程式員。 我學了C++還是真的有一種豁然開朗的感覺。.net程式員,還是多看點C++吧!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.