微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,它封装了内核,你在你的代码看不到原本的编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。
在MFC中使用PostMessage和SendMessage函数: 此函数为指定的窗口调用窗口程序。
一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)组成,用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。
(发送)SendMessage要等到受到消息处理的返回码(DWord类型)后才继续,必须等到消息被处理后才会返回。SendMessage的确是发送消息,然后等待处理完成返回,但发送消息的方法为直接调用消息处理函数(即WndProc函数),按照函数调用规则,肯定会等消息处理函数返回之后,SendMessage才返回。返回值表示其他程序处理消息后的返回值。
(投寄)PostMessage只负责将消息一个线程的消息队列后中,不确定何时及是否处理,寄送后马上返回。PostMessage却没有发送消息,PostMessage是将消息放入消息队列中,然后立刻返回,至于消息何时被处理,PostMessage完全不知道,此时只有消息循环知道被PostMessage的消息何时被处理了。返回值表示PostMessage函数执行是否正确。
wMsg:所要发送消息的编号,是个整形变量,根据相应的规则选择不同的消息,例如WM_LBUTTONDOWN、WM_LBUTTONUP、 WM_KEYDOWN、WM_KEYUP、WM_SETTEXT,但要根据相应的规则提前为这些整形参数进行赋值。16进制整型
wParam:消息的第一个参数,与lParam一样随着wMsg的内容而变,可以根据需求将其定义为整形或字符串。例如在WM_KEYUP中,该参数可 以设为VK_RETURN,意为模仿return键,也要根据相应的规则提前为该整形参数进行赋值。16进制整型
lParam:消息的第二个参数。可以根据需求将其定义为整形或字符串。例如在wMsg是WM_SETTEXT时,该参数可以是字符串,意为向edit类控 件中写入该字符串。16进制整型
在默认情况下,如果不对所要发送的消息做特殊要求,则可以默认为0.根据具体需求可以更改函数参数类型的设置。