VC++/MFC 教程1(英文) (轉)
Lesson 1: Behind the Scenes with Handles and Messages
Though you think you want to dive right into the code, you really don't. programming is overwhelming at first. Let's take a quick look at how Windows works. The backbone of all of your programming will be responding to and sending messages. What are messages? Messages are simply a 32bit number designating some event. Example: You move the mouse, a message (defined as WM_MOUSEMOVE) is 'posted' to the active window. You press a key, a message (WM_KEYDOWN) is 'posted' to the active window. You resize the window, a message (WM_SIZE) is 'posted' to the active window. Get the picture?Now where do these messages go? They get queued up and a window eventually takes them out of the queue and reacts to them. For instance when a window gets the WM_MOVE message it changes the coordinates of the window and redraws it on the screen.
Let's move on to Handles. Windows is very much oriented. You have several window objects (like the desktop, the program your reading this with, etc...). How does the programmer distinguish all of these things in an non-object-oriented language? He uses handles. Handles are a way to reference different windows objects. You can have handles to windows, handles to files, handles to allocated memory, handles to images, etc. You can think of them as pointers. You must create them some how. And when you are done with them, you must destroy them. If you don't you will end up with what is called a re leak. This could bring your system to a grinding halt. So take care to always make sure they are destroyed at sometime.
Now lets tthese two things together. Say you have a window. You will have a handle to it (called an HWND). Lets name your handle your_HWND. The operating system wants to tell you to redraw your window because it was just uncovered by some other window. Windoze passes you a message like this:
PostMessage(your_HWND, WM_PAINT, 0,0);
This function posts a paint messages to the window with handle your_HWND. The last two parameters are used for extra information about the message. Don't worry about them for now.
Now your application will have a function with a big case statement in it to handle all of the messages. For example:
void HandleTheMessage(long Message) { switch(Message) { case WM_PAINT: DrawWindow(); break; case WM_KEYDOWN: break; //etc... } }
Ok that is basically how windows works under the hood. That should be enough to get you going when we start talking about MFC.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1007460/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VC++/MFC 教程2(英文) (轉)C++
- VC++/MFC 教程3(英文) (轉)C++
- VC++/MFC 教程4&5(英文) (轉)C++
- VC++/MFC 教程6&7(英文) (轉)C++
- VC++ MFC UpdateData()用法C++
- 初學MFC(1) (轉)
- VC++ MFC入門簡明教程,我當時就是看了它一天入門的 (轉)C++
- VC++、MFC、COM和ATL的區別C++
- VC++ MFC程式設計版本資訊控制C++C程式程式設計
- Visual C++/MFC指南(1):幕後 (轉)C++
- No MFC,Only API (轉)API
- mfc程式流程 (轉)C程式
- 讓VC++支援中文 (轉)C++
- 思科認證CCNA專業英文詞彙全集(1)(轉)
- 初學MFC(2) (轉)
- vc++ 建立異性窗體(1)C++
- VC++ 執行緒同步(轉)C++執行緒
- VC++ 串列埠通訊(轉)C++串列埠
- VC++中STL的使用 (轉)C++
- Visual C++/MFC入門教程C++
- Visual C++/MFC 指南(4):MFC 簡要指點 (轉)C++
- Python 英文的月份轉數字及數字轉英文Python
- VC++ 的串列埠通訊 (轉)C++串列埠
- 用VC++編寫CGI程式 (轉)C++
- NO MFC - 使用 .log 除錯程式 (轉)除錯
- VC++儲存繪製的圖形-1C++
- 再談Delphi vs VC++(非常精彩) (轉)C++
- VC++ 6.0 結構定義大陷阱 (轉)C++
- VC++訊息對映的思考 (轉)C++
- MFC技術內幕簡結 (轉)
- 簡述MFC程式生與死 (轉)C程式
- Java Servlet和JSP教程(1)(轉)JavaServletJS
- 英文大小寫轉換
- [轉]符號的英文叫法符號
- VC++中實現程式互斥執行 (轉)C++
- VC++初學者常見問題解惑 (轉)C++
- VC++實現撥號上網程式 (轉)C++
- VC++介面一攬子解決方案 (轉)C++