• mfc 动态为控件添加事件1


    知识点:
      认识窗口过程
      GetWindowLong
      SetWindowLong
      为动态控件绑定事件
    
    一、获取窗口过程
    
    二、设置新窗口过程
        1、书写一个新窗口过程函数
            窗口过程格式
       LRESULT CALLBACK WindowProc(
    
    HWND hwnd,     // 窗口句柄
      
    UINT uMsg,     // 消息事件
      
    WPARAM wParam, // 消息参数1 
    LPARAM lParam   //消息参数2
    );
    
    
      CallWindowProc 把消息事件传递给以前的窗口过程       
    LRESULT CallWindowProc(
      
    WNDPROC lpPrevWndFunc, // 指向前一个窗口过程
     
    HWND hWnd,             // 窗口句柄
      
    UINT Msg,               // 消息事件
      
    WPARAM wParam,         // 消息参数1
     
    LPARAM lParam           // 消息参数2
    );
    
        2、注册新的窗口过程 
    三、为动态控件绑定事件
      EN_CHANGE
      WM_CHAR
      WM_LBUTTONDOWN
    
    
    
    WNDPROC oldProc;
    LRESULT CALLBACK newProc(
                                HWND hwnd,      // handle to window
                                UINT uMsg,      // message identifier
                                WPARAM wParam,  // first message parameter
                                LPARAM lParam   // second message parameter
                                )
    {
        if (uMsg==WM_COMMAND)
        {
            switch(LOWORD(wParam)) //0xFFFF FFFF
            {
            case 10081:
                if (HIWORD(wParam)==EN_CHANGE)
                {
                    TRACE(" myedt 控件 产生EN_CHANGE消息
    ");
                    // 添加相应事件处理函数
                }
                break;
            case 10082:
                if (HIWORD(wParam)==EN_CHANGE)
                {
                    TRACE(" myedt2 控件 产生EN_CHANGE消息
    ");
                    // 添加相应事件处理函数
                }
                break;
            }
        }
    
        return CallWindowProc(oldProc,hwnd,uMsg,wParam,lParam);
    }
    
    // CDialog_Dynamics_Create 消息处理程序
    
    void CDialog_Dynamics_Create::OnBnClickedButton1()
    {
        //替换窗口过程
        //1获取当前窗口过程
        oldProc=(WNDPROC)GetWindowLong(m_hWnd,GWL_WNDPROC);
        //替换窗口过程
        SetWindowLong(m_hWnd,GWL_WNDPROC,(LONG) newProc);
    
        
    }
  • 相关阅读:
    js自定义事件
    js回调函数
    git和github使用
    23种设计模式(10):命令模式
    HBase查询引擎——Phoenix的使用
    八、shell的管道
    七、Linux的shell的重定向
    五、Linux的常用命令 和 使用方式 1
    十二、TestNG分组测试2
    十一、TestNG依赖测试
  • 原文地址:https://www.cnblogs.com/whzym111/p/6228497.html
Copyright © 2020-2023  润新知