zoukankan      html  css  js  c++  java
  • 替换一个窗口控件的窗口过程,必须用子类化

    unit   Unit1;  
       
      interface  
       
      uses  
          Windows,   Messages,   SysUtils,   Classes,   Controls,   Forms,   Dialogs,   StdCtrls;  
       
      type  
          TForm1   =   class(TForm)  
              Edit1:   TEdit;  
              procedure   FormCreate(Sender:   TObject);  
          private  
              {   Private   declarations   }  
              FOldWndProc,   FNewWndProc:   TFarProc;  
              procedure   WindowProc(var   Message:   TMessage);  
          public  
              {   Public   declarations   }  
          end;  
       
      var  
          Form1:   TForm1;  
       
      implementation  
       
      {$R   *.dfm}  
       
      procedure   TForm1.WindowProc(var   Message:   TMessage);  
      begin  
          Message.Result   :=   CallWindowProc(FOldWndProc,   Edit1.Handle,   Message.Msg,  
                Message.WParam,   Message.LParam);  
      end;  
       
      procedure   TForm1.FormCreate(Sender:   TObject);  
      begin  
          FNewWndProc   :=   MakeObjectInstance(WindowProc);  
          FOldWndProc   :=   Pointer(GetWindowLong(Edit1.Handle,   GWL_WNDPROC));  
          SetWindowLong(Edit1.Handle,   GWL_WNDPROC,   LongInt(FNewWndProc));  
      end;  
       
      end.
     
    // 其它消息做默认处理
      Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
    View Code

  • 相关阅读:
    Python之socket_tcp
    Python之多进程&异步并行
    Qt forever关键字
    Qt程序在XP系统上不能正常运行
    Qt多线程的使用
    QScrollArea
    QtoolButton
    QComboBox
    Qt播放音频文件
    Qt5.9.1编译oracle驱动
  • 原文地址:https://www.cnblogs.com/key-ok/p/3380556.html
Copyright © 2011-2022 走看看