zoukankan      html  css  js  c++  java
  • MFC知识点(DDX_Control 与 DDX_Text ,ON_COMMAND和ON_MESSAGE)

    1.DDX_Control 与 DDX_Text 区别

    DDX_TEXT()的作用可以理解为把字符串变量和控件的文本(WindowText)关联起来, 
    DDX_Control()
    的作用可以理解为把变量和控件本身关联起来, 
    DoDataExchange(pDX)
    就是处理所有变量与其关联控件交换数据的函数。

    void CView::DoDataExchange(CDataExchange* pDX)

    CFormView::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_ID_VALUE, m_strID);
    DDX_Control(pDX, IDC_ID_VALUE, m_editID);

    在程序中
    通过update(TRUE)取得控件上的值到m_strID,处理修改后通过update(FALSE)传回控件,界面显示
    通过m_editID.GetWindText(str),取得值,处理后,通过m_editID.SetWindText(str)传回控件界面显示

    2.MFC BEGIN_MESSAGE_MAP()

    BEGIN_MESSAGE_MAP(CpassApp, CWinApp)
        ON_COMMAND(ID_HELP, CWinApp::OnHelp)
    END_MESSAGE_MAP()

    这些都是宏定义,不是函数。 
    在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间添加你的消息响应函数,为每个消息处理函数加入一个入口

    BEGIN_MESSAGE_MAP( theClass, baseClass )

    参数:

    theClass 指定消息映射所属的类的名字。
    baseClass 指定theClass的基类的名字。


    说明:
    使用BEGIN_MESSAGE_MAP宏开始你的消息映射的定义。
    在你的类的成员函数的实现文件(.CPP)中,使用BEGIN_MESSAGE_MAP宏开始消息映射,然后为每个消息处理函数加入一个入口,最后用END_MESSAGE_MAP宏结束消息映射。

    每个消息映射入口的格式如下:
      ON_Notification(id, memberFxn)
      其中id指定了发送通知的控件的子窗口的ID,而memberFxn指定了处理该通知的父对象中的成员函数名。
      父对象的函数原型格式如下:
      afx_msg void memberFxn( );

      可能的消息映射入口如下:

    映射入口 何时向父对象发送消息
    ON_BN_CLICKED   用户单击按钮时
    ON_BN_DOUBLECLICKED 用户双击按钮时

    3.ON_COMMAND和ON_MESSAGE的区别

          在MFC应用程序中传输的消息有三种类型:窗口消息、命令消息和控件通知。
    窗口消息(Window Message)
    一般与窗口的内部运作有关,如创建窗口、绘制窗口和销毁窗口等。通常,消息是从系统发送到窗口,或从窗口发送到窗口。若需要窗口消息的完全的列表,请参考MFC文档。
    命令消息
    命令消息一般与处理用户请求相关,当用户单击一个菜单项或工具栏时,命令消息产生,并被发送到能处理该请求的类对象(如,装载文件、编辑文本和保存选项等)。
    控件通知
    通常,控件通知在某些重要事件发生时,由控件窗口发送到父窗口,如打开一个组合框。控件通知为父窗口进一步控制子窗口提供了机会。例如,打开一个组合框时,父窗口可以用组合框初建时得不到的消息填充它。
          ON_COMMAND 和ON_MESSAGE都是将消息处理函数加入消息路由表中,但是ON_COMMAND对应的消息ID一直都是WM_COMMAND,而ON_MESSAGE的消息ID为ON_COMMAND的第一个参数
    在MFC中,ON_COMMAND, ON_MESSAGE, ON_NOTIFY它们的区别。
    ON_NOTIFY是控件向其父窗口发送消息处理的宏,ON_COMMAND是菜单和工具栏项处理消息的宏,ON_MESSAGE是处理自定义消息的宏
    ON_COMMAND用来处理WM_COMMAND消息。老式的windows控件发送WM_COMMAND作为对父窗口的通知消息。另外,菜单,工具栏也向框架窗口发送WM_COMMAND消息。
    ON_MESSAGE主要用来处理用户自定义消息。
    对于某些新型的windows控件(如ListCtrl等),向父窗口发送通知消息时需要包含大量的信息,WM_COMMAND已不适应这种要求(因为WM_COMMAND的wparam和lparam都已经填满了),ON_NOTIFY主要用来处理这些新型的windows控件向父窗口的发送的WM_NOTIFY通知消息。
     
     
  • 相关阅读:
    .NET中非对称加密RSA算法的密钥保存
    WGS84经纬度坐标到北京54高斯投影坐标的转换[转]
    [APPS] HTC Footprints & HTC Locations for MikG 2.x Read more:
    firefox+ssh无法看youtube视频的解决方案
    【转】sdemon命令实践
    How to share a custom ArcMap command (DLL)
    【转】sdemon命令实践
    红旗桌面版本最新运用法子和结果解答100例8
    红旗Linux桌面4.1文本安装过程图解(二)
    Ubuntu把在效能器范畴起更重要的脚色
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5671593.html
Copyright © 2011-2022 走看看