第05章笔记

主要内容:

使程序能够响应菜单事件和鼠标事件(按下左键、移动、松开左键)。

关于事件:

视窗程序通过事件进行用户进行交互。当用户进行单击鼠标、选择菜单、按下键盘等操作时都会产生一个事件。在程序中,我们需要:1,为指定的事件编写处理程序;2.将事件处理程序进行注册。

编写事件处理程序

编写事件处理程序其实就是为处理事件的类添加一个方法(即成员函数)。在MFC中,无论是视窗框架类(如CFrameWnd,CMDIFrameWnd,CMDIChildWnd),还是文档类,或者视图类,都可以处理事件,我们只需要在类中添加相应的方法即可。

由于事件处理程序是特殊的方法,所以事件处理程序必须要以afx_msg开头

事件处理程序注册

要处理事件的类,在类体中除了要添加负责处理事件的方法外,还要:1,在类体中添加以下宏DECLARE_MESSAGE_MAP();2,在类体外添加事件处理程序注册宏,格式如下:

BEGIN_MESSAGE_MAP(类名,父类名)

具体的事件注册宏

END_MESSAGE_MAP()

程序代码:

#include <afxwin.h>
#include "Message.h"

class CMyFrame : public CFrameWnd
{
private:
    CMenu *pMenu;
public:
    CMyFrame()
    {
        Create(NULL, "Hello MFC");
        pMenu = new CMenu;
        pMenu->LoadMenu(IDR_MENU1);
        SetMenu(pMenu);
    }

    ~CMyFrame()
    {
        delete pMenu;
    }

    afx_msg void OnExit()
    {
        MessageBox("Exit1");
        DestroyWindow();
    }

    afx_msg void OnLButtonDown(UINT nFlags, CPoint point)
    {
        SetCapture();
    }

    afx_msg void OnMouseMove(UINT nFlags, CPoint point)
    {
        if(GetCapture() == this)
        {
            CClientDC aDC(this);
            aDC.SetPixel(point, RGB(255, 0, 0));
        }
    }

    afx_msg void OnLButtonUp(UINT nFlags, CPoint point)
    {
        ReleaseCapture();
    }

    DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
    ON_COMMAND(ID_Exit1, OnExit)
    ON_WM_LBUTTONDOWN()
    ON_WM_MOUSEMOVE()
    ON_WM_LBUTTONUP()
END_MESSAGE_MAP()

class CMyApp : public CWinApp
{
public:
    BOOL InitInstance()
    {
        CFrameWnd *pFrame = new CMyFrame;
        m_pMainWnd = pFrame;
        pFrame->ShowWindow(SW_SHOW);

        return true;
    }
}a_app;

。。。

时间: 2024-11-09 01:14:18

第05章笔记的相关文章

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第05章 | 条件、循环和其他语句

第05章 | 条件.循环和其他语句 ------ print 和 import #如果要打印多个语句,用,分割 >>> print "Name is:","Sherry.","Age is:",40 Name is: Sherry. Age is: 40 >>> print (1,2,3) #如果要打印元祖 (1, 2, 3) >>> print 1,2,3 #print语句会在每个元素间插入

异步编程系列第05章 Await究竟做了什么?

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,愿爱技术的园友们在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而

代理模式 + Effective C++ 第一章笔记

代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问. 应用: (1):远程代理,为一个对象在不同的地址空间提供局部代表.这样可以隐藏一个对象存在于不同地址空间的事实 (2):虚拟代理,根据需要创建开销大的对象.通过虚拟代理存放实例化需要很长时间的真是对象. (3):安全代理,用来控制真是对象访问时的权限. (4):智能指针,当调用真实的对象时,代理处理另外一些事. Effective C++: 1:确定对象被使用前已经被初始化 (1),为内置类型进行手工初始化,因为C++不保证初

Functional Programming Principles in ScalaScala函式编程原理 第一章笔记

所有non-trival编程语言都提供了 基本表达式(expression)去表示最简单的表达式 组合表达式的方法 抽象表达式的方法,也就是为表达式引入一个名字去引用它 substitional model 替代模型 sumOfSquares(3,2+2) sumOfSquares(3,4) square(3)+square(4) 9+square(4) 9+16 25 这种模型的核心概念是所有的表达式都规约成值,替代模型在lamada表达式中被形式化,构成了函数式编程的基石 substitio

第05章-可视化技术(4)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] [本小节内容对应原书的第112页至第117页] 5.3 规则网格可视化 规则网格在拓扑结构上规则

第05章-可视化技术(2)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] [本小节内容对应原书的第95页至第105页] 流线(Streamlines) 流线可以看做无重量

&lt;&lt;Linux 命令行大全学习1~2章笔记&gt;&gt;暑假学习

 <<Linux 命令行大全学习1~2章笔记>>暑假学习 第一章:shell是什么? 1 shell Shell是一个和Linux内核交互的解释性程序,我们在图形用户下通过shell终端仿真器可以和操作系统进行交互. 2本章命令行 date:显示时间 cal:  显示日历 df: 显示磁盘驱动器内存 free:显示系统内存 exit:退出终端 第二章:导航 2.1理解文件系统树 Linux系统采用树的结构表示系统的文件.目录和设备文件. 2.2当前工作目录 树的顶部是根目录,通常/

JavaScript权威指南第05章 语句

语句 5.1表达式语句 赋值语句 递增递减运算 delete运算符(不常用) 函数调用 5.2复合语句和空语句 1.语句块后面不要分号 2.缩进代码 3.javascript没有块级作用域 如果有特殊的目的使用空语句,那么应该加入注释,说明空语句的作用. 5.3声明语句 5.3.1 var var 声明一个变量,变量列表后面可以跟变量或者表达式. 如果var出现在函数体内,那么作用域是该函数,如果出现在顶层代码,那么这个变量是全局变量. var 定义变量后没有被赋值,其值为undefined.

HBase in Action前三章笔记

近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔记帖一下.后面几章内容不打算整理了.并非说书内容不好. key-value存储.强一致性,多个RegionServer节点对client端是不暴露细节的 使用场景:典型的web-search, capture incremental data, ad. click stream, content s