Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > Lesson 1 : Behind the Scenes with Handles and Messages
【标  题】:Lesson 1 : Behind the Scenes with Handles and Messages
【关键字】:Lesson,Behind,the,Scenes,with,Handles,and,Messages
【来  源】:http://blog.chinaunix.net/article.php?articleId=31692&blogId=6198

Lesson 1 : Behind the Scenes with Handles and Messages

Your Ad Here Visual C++/MFC Tutorial - Lesson 1: Behind the Scenes with Handles and Messages
Rating:

Brian Martin (view profile)
August 5, 2000

Lesson 1: Behind the Scenes with Handles and Messages

Though you think you want to dive right into the code, you really don't. Windows 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 object 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 resource leak. This could bring your system to a grinding halt. So take care to always make sure they are destroyed at sometime.
Now lets tie these 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.
Lesson 2: C++ Essentials:【上一篇】
开始VC++吧:【下一篇】
【相关文章】
  • Lesson 2: C++ Essentials
  • Lesson 3: Visual C++ IDE and Workspaces
  • Lesson 4: MFC Basics
  • Lesson 5: Dialog-Based Applications
  • Lesson 6: SDI and MDI Applications
  • Lesson 7: Data Viewer
  • FreeBSD Command Tools, 入门必看!
  • test {} and the "for" structure
  • Programming with pcap(一篇Wonderful的pcap库教程)
  • gd and gD in vim
  • 【随机文章】
  • Servlet中的3种监听器
  • [转载]lsof命令查看端口现在运行什么程序,开启文件的进程
  • 运行在移动数字网络上的移动多媒体方案
  • XQuery引擎的两种应用
  • Thinking in java 学习(一)
  • 优化Java Applet的加载过程
  • 用于非面向对象的共享对象
  • 使用Eclipse + MyEclipse开发Web Service的示例!(录像教程)
  • 操作系统常见问题:安装Win98出现(.CAB)包错误
  • 递归转非递归求N的阶乘
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.