1. 事件:命令消息
消息:非命令消息
2.类视图为什么分 doc 和 view?
因为: Doc文档:保存数据;view视图:显示。举个例子:同一组数据,可以分成饼图或者柱状图等显示。
3. API:应用程序编程接口
SDK:软件开发包,通常包括API函数库、帮助文档、使用手册、辅助工具等资源,sdk实际上就是开发所需资源的一个集合。
4.Windows程序框架分析
入口_tWinMain,windows应用程序的特点是消息驱动,当系统或者用户要求应用程序完成某一个任务时候,所依靠的就是消息,系统会把用户的要求或者系统的要求放到一个消息结构中,然后发送给应用程序,再去处理。
应用程序完成任务的过程:在应用程序初始化完成之后,调用一个显示窗口的API函数,所以系统知道了程序要显示窗口了,此时(注意,这里就是产生消息的动机),就会在消息队列中产生一个WM_PAINT消息,这样,应用程序的消息循环就可以捕捉到这个消息并且将它发送给窗口函数(注意,这个函数就是系统调用的),然后窗口函数就处理这个消息,完成它的任务。
5. MFC程序框架分析
入口点AfxWinMain,消息映射:1.SDK的消息实现机制 2.MFC的消息实现机制
6.3个实验:
(1)当鼠标左键单击次数是7的倍数时,弹出消息框,显示当前单击了多少次
//添加WM_LBUTTONDOWN
void CLmouseView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
static int times=0;
CString str;
++times;
if(times%7==0)
{
str.Format(_T("第%d次按下鼠标左键"),times);
MessageBox(str);
}
CView::OnLButtonDown(nFlags, point);
}
(2)按下键盘某个键,弹出消息框,显示按下键的ASCII码值
//添加非命令消息WM_Char
void CkeyASCIIView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString str;
str.Format(_T("按下的键是:%c, ASCII码是:%d"),nChar,nChar);
MessageBox(str);
CView::OnChar(nChar, nRepCnt, nFlags);
}
(3)鼠标移动时,在标题栏显示当前光标位置
//添加非命令消息WM_MOUSEMOVE
void CmoveView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString str;
str.Format(_T("(%d, %d)"), point.x, point.y);
AfxGetMainWnd()->SetWindowText(str);
CView::OnMouseMove(nFlags, point);
}