现在可以动态创建控件类对象。   不过必须事先定义好ID号,并且为每一个控件绑定好ID和事件。这样在不知道有多少个控件类的情况下,启不是很麻烦??    有什么办法能指定所有的控件事件都映射到一个响应函数??

解决方案 »

  1.   

    1.比如动态创建一个Edit控件
    2.创建一个新的类CMyEdit ,继承于 CEdit
    3.之后动态创建的CMyEdit的类所收到的消息都会发往此类的处理函数
    4.如果你要求的是win32,那就比较麻烦了。网上有一种thunk技术。
    5.示例工程下载:http://cid-3ba16e78a53d2d3d.office.live.com/self.aspx/VC%5EM%5EM/edit.zip
    6.愿顺利!阿弥陀佛!1.************************************************************
    #include "MyEdit.h"void CDemoDlg::OnButton1() 
    {
    //动态创建多个edit类
    static int y=0;
    y+=40;
    RECT EditRect={0,y,128,y+30};
    CMyEdit* m_pEdit=new CMyEdit;
    m_pEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER ,EditRect,this,NULL);
    m_pEdit->SetFocus();
    }
    2.************************************************************
    每一个控件收到的消息都会发往这里,比如WM_CHAR消息
    void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    trace(nChar);

    CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
      

  2.   

     有什么办法能指定所有的控件事件都映射到一个响应函数??
    ---------------------------------------------------------
    已经有类似的ON_WM_MESSAGE_RANGE的宏,把一串消息的响应都放到一个函数~
      

  3.   

    现在可以动态创建控件类对象。 不过必须事先定义好ID号,并且为每一个控件绑定好ID和事件。这样在不知道有多少个控件类的情况下,启不是很麻烦??
    ----------------------------------------------------
    一种类型的控件预先定义一个ID值,后面的就是在该ID的基础上增加
     有什么办法能指定所有的控件事件都映射到一个响应函数??
    -------------------------------------------------
    ON_CONTROL_RANGE() , ON_COMMAND_RANGE()