第四章 輸出文字

來源:互聯網
上載者:User

這一章 實際上 是對 前幾章 知識的回顧,和舉例。 用一個 輸出文字的例子,講解,windows程式的結構。如果弄明白這個例子,就可以說,前幾章的知識已經 弄明白了。

 

其中,有幾個比較難理解的地方:

 

1、 回呼函數

 

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

 

LRESULT  傳回值類型,你看他的定義,就知道他實際是long 型的。

 

CALLBACK 用來標示這個函數是一個回呼函數。回呼函數,從使用的角度看,就是,函數由你定義,但是不由你調用。那麼它由誰來調用

 

呢,它 實際由作業系統來調用。那作業系統又如何知道 這個函數的存在呢? 這就是我們在

 

    WNDCLASS      wndclass ;
             
    wndclass.style    = CS_HREDRAW | CS_VREDRAW ;
       
    wndclass.lpfnWndProc= WndProc ;

    。。。

 

   從c語言的角度,這就是一個函數指標,不是嗎?lpfnWndProc的類型是一個函數指標,指向我們定義的WndProc 函數。

 

2、訊息 message

訊息是什麼呢,不用 把它看得太神秘,我們來看看他的定義 ,比如

WM_CREATE ,他是如下定義的:

#define WM_CREATE                       0x0001

原來 ,WM_CREATE 就是一個16進位數。如果還不好理解。那我就舉個例子:

現在吃,喝,玩,樂,四種動作。為了便於電腦儲存和傳輸。我們定義如下:

#define CHI    0x0001

#define HE     0x0002

#define WAN  0x0003

#define LE     0x0004

 

賈君鵬 ,你媽叫你回家吃飯。 我們在訊息處理函數

WndProc (Message msg)

{

    switch(msg)

{

 

     case CHI :

     賈君鵬回家吃飯;

     break;

     case  HE:

      賈君鵬回家喝水;

      。。。。    

  

}
Message 就是用來傳遞,作業系統 告訴  應用程式 發生了 什麼事情的, 應用程式 自訂 訊息處理函數,對這些訊息來進行處理。道理就這麼簡單,當然 這些行為事先 在作業系統裡都定義好了,可以在MSDN 裡 尋找不同訊息的用途,以及在什麼情況下,系統會發送這些訊息。

 

例如 我們搜尋 WM_CREATE   from MSDN

WM_CREATE Notification

 

The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. (The message is sent before the function returns.) The window procedure of the new window receives this message after the window is created, but before the window becomes visible.

A window receives this message through its WindowProc function.

聯繫我們

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