RAM)(LPCTSTR)str2);
return 0;
}
现在大家应该知道为什么我第一步会修改单文档的标题了。这里我再多说两句,由于此处只是发送了自定义消息,而宏ON_MESSAGE()只与接收消息有关,所以不必需要添加ON_MESSAGE()消息映射宏和相应的映射函数。
第七步:在CMainFrame类的源文件顶部加入以下代码,用来自定义一个消息:
#define WM_TOSETSTATUS WM_USER+101
第八步:在CMainFrame类的源文件中找到消息映射宏部分,加入我们自定义的消息映射宏,代码如下:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code !
ON_WM_CREATE()
ON_MESSAGE(WM_TOSETSTATUS,ToSetStatusBar)//手动添加自定义的消息映射宏
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
第九步:在CMainFrame类的头文件中找到消息映射函数的声明部分,加入我们自定义的消息映射函数,代码如下:
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void ToSetStatusBar(WPARAM wParam,LPARAM lParam);
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
现在大家应该明白为什么第四步的时候,我们只在源文件中加入函数定义,而在头文件中不加入声明了吧。
好了,经过以上九步,我们完成了这个程序,运行后我们会看到状态栏先是变成“线程启动”,之后变成“线程结束”,程序完成。
补充一下,在发送和接收消息的时候,我们传递了两个参数,参数的传递很灵活,可以传递整型,指针,结构体等等。
最后我们来总结一下,自定义消息给我们编写程序带来了很大的方便,它可以很方便的将我们的消息和参数“
自由”的穿梭在代码中间,而我们上面举到例子只是在一个程序里面传递消息,下一篇文章,我将会介绍在不同程序中传递消息。