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 中常用巨集的含義C++
- VS2017 MFC C++入門C++
- mfc 讀寫 excel 示例 C++ libxlExcelC++
- 【Visual Studio調教小記錄】C++指標靠前靠後??C++指標
- Visual Studio Code 使用指南
- C++(1) gps轉換為enuC++
- Use any C++ Compiler with Visual StudioC++Compile
- OpenCV(c++)-1 安裝和配置OpenCV4.4(Windows+visual studioOpenCVC++Windows
- LangChain內幕指南LangChain
- Visual Studio 2015 MFC之Button顏色變化-斷點除錯(Debug)斷點除錯
- OpenCV(c++)-1 安裝和配置OpenCV4.4(Windows+visual studio 2019)OpenCVC++Windows
- MFC下CSocket程式設計詳解(轉)程式設計
- VISUAL-STUDIO(2022)-透過Visual Studio Installer新增C++工作負載C++負載
- gevent安裝錯誤解決方案:Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"ROSC++UI
- C++暴力指南C++
- 使用 Visual C++ 的 Office 自動化C++
- visual studio原生支援C++的含義C++
- Visual Studio C++ 安裝以及使用教程C++
- MFC 捕獲按鈕 按下和抬起 (轉)
- 【C++】【MFC】模態和非模態對話方塊C++
- Visual Studio部署C++環境下OpenCV庫C++OpenCV
- C++ 核心指南 —— 效能C++
- 幕後黑手 crontab
- Microsoft Visual Studio 2005 Service Pack 1ROS
- SSH Tunnel (埠轉發) -- 把個人PC變成“幕後boss”
- MFC打包
- 利用Visual Studio除錯WSL下的C++工程除錯C++
- Microsoft Visual C++ 微軟常用執行庫合集ROSC++微軟
- ubuntu螢幕旋轉Ubuntu
- SpringBoot的幕後推手...Spring Boot
- c++:-1C++
- Visual C++網路程式設計案例實戰pdfC++程式設計
- Visual C++ 6.0專案檔案型別簡介C++型別
- MFC: 檔案
- 如何讓Visual Studio 2019更好用(VS2019配置指南)
- Android 禁止螢幕旋轉Android
- orientationchange 螢幕旋轉事件事件
- (轉)OC專案轉Swift指南Swift
- 安裝Microsoft Visual C++ 2010 x64 Redistributable 報錯ROSC++Redis