MFC中的消息映射机制
声明宏 写道 .h 中
分界宏 写道 .cpp 中 BEGIN_MESSAGE_MAP(子类,父类) …END_MESSAGE_MAP()
找消息宏 写到分界宏中间
把函数原型声明写到 .h 中,函数实现写到 .cpp
鼠标,键盘的实现
代码注释如下
mfc.h
#include <afxwin.h> //mfc使用的头文件
#include <intsafe.h>
//声明一个应用程序类
class MyApp:public CWinApp //继承于应用程序类
{
public:
virtual BOOL InitInstance(); //程序入口
};
class MyFrame :public CFrameWnd //窗口框架类
{
public:
MyFrame();//保留构造函数即可
//声明宏 提供消息映射的机制
DECLARE_MESSAGE_MAP()
afx_msg void OnLButtonDown(UINT, CPoint);
afx_msg void OnLButtonUp(UINT, CPoint);
afx_msg void OnChar(UINT, UINT, UINT);
afx_msg void OnPaint();
};
mfc.cpp
#include "mfc.h"
MyApp app; //全局的应用程序对象,有且仅有一个
//对类的实现
BOOL MyApp::InitInstance() //程序入口
{
//创建窗口 MyFram
MyFrame * frame = new MyFrame;
//显示和更新
frame->ShowWindow(SW_SHOWNORMAL);
frame->UpdateData();
m_pMainWnd = frame; //保存指向应用程序的主窗口的指针
return TRUE; //返回正常的初始化
}
//消息分界宏
BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)
ON_WM_LBUTTONDOWN() //鼠标左键按下
ON_WM_CHAR() //键盘
ON_WM_PAINT() //绘图
END_MESSAGE_MAP()
MyFrame::MyFrame()
{
Create(NULL, TEXT("湖南科技大学"));
}
void MyFrame::OnLButtonDown(UINT, CPoint point)
{
TCHAR buf[1024];
wsprintf(buf, TEXT("x = %d,y = %d"),point.x,point.y);
MessageBox(buf);
//mfc中的字符串 ----- CString
/*CString str;
str.Format(TEXT("x = %d,,,y = %d"), point.x, point.y);
MessageBox(str);*/
}
void MyFrame::OnLButtonUp(UINT, CPoint)
{
}
void MyFrame::OnChar(UINT key,UINT,UINT)
{
CString str;
str.Format(TEXT("按下了 %c 键"),key);
MessageBox(str);
}
void MyFrame::OnPaint()
{
CPaintDC dc(this); //MFC中文手册CDC中可查看其他图形
//dc.TextOutW(100, 100, TEXT("为了部落"));
dc.Ellipse(10, 10, 100, 100); //
}
mfc创建窗口完结!!