Visual C++/MFC指南(1):幕後 (轉)
Visual C++/MFC Tutorial 第一課:幕後:訊息和控制程式碼
儘管你會想要深入鑽研,但你其實並不會這樣做。起初都是非常困難的。
讓我們來的看一看Windows下的是這樣運作的。
你程式設計的關鍵將是處理和傳送訊息。那什麼是訊息呢?
簡單的說,訊息是一個32位值,用來指明一個事件。比如:
當你移動滑鼠的時候,一個訊息(定義為WM_MOUSEMOVE)就被髮送給當前的視窗。
當你按下鍵盤上的鍵,一個訊息(定義為WM_KEYDOWN)就被髮送給了當前的視窗。
當你調整視窗的尺寸,一個訊息(定義為WM_SIZE)被髮送到當前的視窗。
想象出這個過程了麼?
那麼這些訊息被髮送到哪裡去了呢?
它們會排進一個隊裡,視窗最終會將它們拿出來並相應的。
例如當視窗得到WM_MOVE訊息,它將改變視窗座標並在螢幕上重畫視窗。
讓我們來看看控制程式碼。
Windows在面向方面做的很好。你面對著一些window物件(比如桌面,你現在用來閱讀的程式,等等。。。)。一個程式設計師用非物件導向的方式怎麼區分這類東呢?
使用控制程式碼。
控制程式碼用來引用不同的windows物件。你可以對視窗、使用控制程式碼,也能對分配了的、圖象使用控制程式碼。可以把控制程式碼理解為與指標類似。你必須透過某種方式來建立控制程式碼;而且在使用完後銷燬掉,不然將造成資源洩漏而使你的癱瘓。所以要保證它們在某個時候被銷燬了。
好了,現在是時候讓我們把這兩件東西放在一起了。
比方說有一個視窗,你有一個指向它的控制程式碼(稱為HWND)。把你的控制程式碼命名為your_HWND。當這個遮蓋在這個視窗上面的其他視窗被移去的時候,系統會要求你重畫視窗。windows會這樣傳送訊息:
PostMessage(your_HWND, WM_PAINT, 0,0);
這個傳送一個重畫的訊息給控制程式碼為your_HWND的視窗。最後的兩個引數作為該訊息的額外資訊,現在先不必考慮。這樣,你的程式就應該有一個包括很多分支判斷的函式來處理不同的訊息。比如:
void HandleTheMessage(long Message) { switch(Message) { case WM_PAINT: DrawWindow(); break; case WM_KEYDOWN: break; //etc... } }
好了,這些是windows幕後最基本的運作。
不過這些足夠讓你繼續來學習MFC了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-998428/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Visual C++/MFC 指南(4):MFC 簡要指點 (轉)C++
- 擴 展Visual c++ MFC 類 庫 (轉)C++
- Visual C++/MFC入門教程C++
- 在 Visual C++ 中 建 立 MFC 擴 展 DLL (轉)C++
- Answers to your MFC/ATL questions from the Visual C++ .NET Product Manager (轉)C++
- Visual C++ MFC 中常用巨集的含義C++
- MFC技術內幕簡結 (轉)
- 初學MFC(1) (轉)
- VC++/MFC 教程1(英文) (轉)C++
- MFC 擴充套件庫 - CJ60Lib ( 針對Visual C++ 6.0進行的升級 ) (轉)套件C++
- 理解 Visual C++ Extensions for ADO(轉)C++
- Visual C++應用框架揭密 (轉)C++框架
- 【C++】Visual Studio 2012 MFC——Expression: _pFirstBlock==pHead解決辦法C++ExpressBloC
- 在Visual Basic 中使用C++ 類 (轉)C++
- Visual C++中的圖形特技 (轉)C++
- Visual C++ 6.0 編 程 經 驗 (轉)C++
- Visual C++ 6.0的文件/視結構 (轉)C++
- Visual C++實現檔案間批次轉換功能 (轉)C++
- 在Visual C++中使用內聯彙編 (轉)C++
- 在Visual C++中使用內聯彙編(轉)C++
- Visual C++中函式呼叫方式淺探 (轉)C++函式
- Visual C++與Delphi/C++Builder之比較 (轉)C++UI
- No MFC,Only API (轉)API
- mfc程式流程 (轉)C程式
- 情有獨鍾C++:Visual C++ .NET編譯器的新特性(轉)C++編譯
- Visual Basic 程式設計標準(1) (轉)程式設計
- 模板初學者指南1 (轉)
- An interview with Microsoft's new Visual C++ Architect Stanley Lippman (轉)ViewROSC++
- Visual C++ 6.0程式設計實現列印功能(轉)C++程式設計
- 用Visual C++編寫電子郵件程式 (轉)C++
- LangChain內幕指南LangChain
- mfc 讀寫 excel 示例 C++ libxlExcelC++
- 初學MFC(2) (轉)
- C++ articles:Guru of the Week #1 (轉)C++
- 高質量C++/C程式設計指南(第1章 檔案結構) (轉)C++C程式程式設計
- Visual C++ 讀寫 MySQLC++MySql
- 【Visual Studio調教小記錄】C++指標靠前靠後??C++指標
- 《HTTP權威指南》每個成功Web事務的幕後推手HTTPWeb