windows編程原理

來源:互聯網
上載者:User

標籤:style   blog   http   使用   io   2014   ar   時間   

  這裡在學網路編程時遇到了講解windows的編程,稍微整理一下windows編程原理,順便複習一下。

  首先,理解Windows 程式運行原理:Windows應用程式,作業系統,電腦硬體之間的相互關係。

                                                     

  向下的箭頭③表示應用程式可以通知作業系統執行某個具體的動作,如作業系統能夠控制音效卡發出聲音,但它並不知道應該何時發出何種聲音,需要應用程式告訴作業系統該發出什麼樣的聲音。這個關係好比有個機器人能夠完成行走的功能,但是,如果人們不告訴它往哪個方向上走,機器人是不會主動行走的。這裡的機器人就是作業系統,人們就是應用程式。

  那麼,應用程式是如何通知作業系統執行某個功能的呢?有過編程經驗的讀者都應該知道,在應用程式中要完成某個功能,都是以函數調用的形式實現的,同樣,應用程式也是以函數調用的方式來通知作業系統執行相應的功能的。作業系統所能夠完成的每一個特殊功能通常都有一個函數與其對應,也就是說,作業系統把它所能夠完成的功能以函數的形式提供給應用程式使用,應用程式對這些函數的調用就叫做系統調用,這些函數的集合就是Windows作業系統提供給應用程式編程的介面(Application Programming Interface),簡稱Windows API。如CreateWindow就是一個API函數,應用程式中調用這個函數,作業系統就會按照該函數提供的參數資訊產生一個相應的視窗。

  向上的箭頭④表示作業系統能夠將輸入裝置的變化上傳給應用程式。如使用者在某個程式活動時按了一下鍵盤,作業系統馬上能夠感知到這一事件,並且能夠知道使用者按下的是哪一個鍵,作業系統並不決定對這一事件如何作出反應,而是將這一事件轉交給應用程式,由應用程式決定如何對這一事件作出反應。好比有個蚊子叮了我們一口,我們的神經末梢(相當於作業系統)馬上感知到這一事件,並傳遞給了我們的大腦(相當於應用程式),我們的大腦最終決定如何對這一事件作出反應,如將蚊子趕走,或是將蚊子拍死。對事件作出反應的過程就是訊息響應。

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

    typedef struct tagMSG

     {

      HWND hwnd; //視窗控制代碼,存放視窗的標識

      UINT message;//用一個整數來表示一個訊息

      WPARAM wParam;//指示關於該訊息的附加資訊

      LPARAM lParam;//同上(無符號整型)

      DWORD time;//訊息被投遞出去的時間

      POINT pt;//點的結構體,訊息被投遞時的游標位置

    } MSG;

  關於控制代碼:控制代碼(HANDLE),資源的標識。 作業系統要管理和操作這些資源,都是通過控制代碼來找到對應的資源。按資源的類型,又可將控制代碼細分成表徵圖控制代碼(HICON),游標控制代碼(HCURSOR),視窗控制代碼(HWND),應用程式執行個體控制代碼(HINSTANCE)等等各種類型的控制代碼。作業系統給每一個視窗指定的一個唯一的標識號即視窗控制代碼。

WinMain函數即Windows程式的入口函數

int WINAPI WinMain(

  HINSTANCE hInstance, // handle to current instance

  HINSTANCE hPrevInstance, // handle to previous instance

  LPSTR lpCmdLine, // command line (char* argv[])

  int nCmdShow // show state );

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.