您当前的位置:《可视化编程》听课笔记:05
《可视化编程》听课笔记:05

一、消息映射表

任何一个支持消息映射的类需要有以下部分:

1) 头文件中类定义时声明宏

                 public:     DECLARE_MESSAGE_MAP()

2) .cpp文件中声明消息映射表

                 BEGIN_MESSAGE_MAP(CMsgApp,CWinApp)

                 ON_COMMAND(ID_APP_ABOUT,OnAppAbout)

                 END_MESSAGE_MAP()

3) .cpp中写消息处理函数

                 void CMsgApp:OnAppAbout(){CAboutDlg aboutDlg}

二、窗口消息:窗口的很多动作(例如创建、销毁),操作系统都会给应用程

                 序发送各种消息

       是有View类可以对截获的WM_PAINT消息用OnDraw()函数,其他窗口没

       有OnDraw()函数来对截获的消息做进一步操作,需要程序员自己编写代码

        截获和处理WM_PAINT消息。

三、键盘消息

        WM_KEYDOWN      WM_KEYUP      WM_CHAR

1)  WM_CHAR消息的处理函数为OnChar,响应函数为:

    void CXxxxView::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)

   {

  CString str;

  strFormat("按下%c键,重复%d次,此键扫描码%d",nChar,nRepCnt,nFlags);

   }

2)特殊键  如F1,F2,UP,DOWM,....处理  在消息处理之前处理消息

BOOL CMsgViev::PreTranslateMessage(MSG* pMsg)

{

if(pMsg->message==WM_KEYDOWN)

 if(pMsg->wParam==VK_f1)  //do sth.

}

四、菜单消息

       应用程序(多文档)窗口上的菜单只能显示一个菜单,即不会同时显示主窗口和子窗口的菜单,只有关闭所有子窗口的时候才能显示主窗口菜单,主窗口菜单的功能是用来管理子窗口的,子窗口的菜单是用来操作窗口内容的。

五、定时器消息

      WM_TIMER计时器,用户通过成员函数SetTimwe() 设置一个时钟:

SetTimer(1,2000,NULL);  //ID号为1,时间间隔2000ms,使系统每隔两秒自动发送WM_TIMER消息,消息处理函数为NULL,表示以默认的OnTimer()为消息处理函数;

     OnDestroy()函数中加入一下代码:

KillTimer(1);  //清除计时器1 应用程序退出时关闭定时器

注:Beep(1000,500);//扬声器动作 1000hz 500ms

收藏状态
收藏本课程的同学
相关课程