博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC++/MFC 教程1(英文) (转)
阅读量:2499 次
发布时间:2019-05-11

本文共 2667 字,大约阅读时间需要 8 分钟。

VC++/MFC 教程1(英文) (转)[@more@]

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-1007460/

你可能感兴趣的文章
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>
Eclipse : An error occurred while filtering resources(Maven错误提示)
查看>>
在eclipse上用tomcat部署项目404解决方案
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>
suse如何修改ssh端口为2222?
查看>>
详细理解“>/dev/null 2>&1”
查看>>
suse如何创建定时任务?
查看>>
suse搭建ftp服务器方法
查看>>
centos虚拟机设置共享文件夹并通过我的电脑访问[增加smbd端口修改]
查看>>
文件拷贝(IFileOperation::CopyItem)
查看>>
MapReduce的 Speculative Execution机制
查看>>
大数据学习之路------借助HDP SANDBOX开始学习
查看>>
Hadoop基础学习:基于Hortonworks HDP
查看>>
为什么linux安装程序 都要放到/usr/local目录下
查看>>