• delphi自定义窗口消息


    假设你的消息这样定义:  
      Const    
          WM_YOURMSG=WM_USER+100;  
      你的过程定义可以这样:  
            procedure   YourProc(var   MSG:TMessage);message   WM_YOURMSG;  
      这样,当你的窗口收到该消息时,将调用这个过程。  
      例如:  
       
      unit   Unit1;  
       
      interface  
       
      uses  
          Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,  
          StdCtrls;  
      Const  
        WM_MINE=WM_USER+100;  
      type  
          TForm1   =   class(TForm)  
              Button1:   TButton;  
              procedure   Button1Click(Sender:   TObject);  
          private  
              {   Private   declarations   }  
              procedure   Mine(var   msg:TMessage);message   WM_MINE;  
          public  
              {   Public   declarations   }  
          end;  
       
      var  
          Form1:   TForm1;  
       
      implementation  
       
      {$R   *.DFM}  
       
      procedure   TForm1.Mine(var   msg:   TMessage);  
      begin  
          Showmessage('OK');  
      end;  
       
      procedure   TForm1.Button1Click(Sender:   TObject);  
      begin  
      Sendmessage(handle,WM_MINE,0,0);  
      end;  
       
      end.  
      这个单元定义了一个消息,当按下按钮时,向自己窗口发送这个消息(当然,不一定发送到自己的窗口,处理消息的过程也可以在其他地方),然后弹出个对话框。这当然是多此一举,不过,只是为了说明使用方法。  
       
      至于想处理MOUSECLICK时的MOUSE位置和状态,你可以不处理ONCLICK事件,而在ONMOUSEDOWN事件里处理。这个事件提供的参数分别告诉了你  
      Sender:那一个按钮接收这个鼠标事件:  
      Shift:当前鼠标的按钮状态是什么样,其他键盘状态是什么样,我们一般用  
      if   Shift=[ssleft]来判断是否鼠标左键点击,有关方括号里的值,你可以查询DELPHI的在线帮助,关键字:TShiftState  
      Button:表明那一个鼠标键被按下,  
      X,Y:鼠标在接收这个鼠标事件时的位置,如果你需要的是屏幕的位置可以这样做:  
       
      procedure   TForm1.Button1MouseDown(Sender:   TObject;   Button:   TMouseButton;  
          Shift:   TShiftState;   X,   Y:   Integer);  
      var  
          CurrentPos:TPoint;  
      begin  
          if   shift=[ssRight]   then   begin  
          CurrentPos:=TButton(Sender).clientToScreen(point(x,y));  
          {或者,GetcursorPos(CurrentPos)}  
          Showmessage(format('X:%d,Y:%d',[CurrentPos.x,CurrentPos.y]));  
      end;  
      //这个过程将使你鼠标在按钮上点下时弹出对话框,标明当前的位置。  
      end;  
      ;  
      这样CurrentPos的X,Y就是当前屏幕的坐标。
  • 相关阅读:
    前端 day 05 5.15 JavaScript入门
    前端 day 04 5.14 CSS定位,浮动,JavaScript
    Luogu P1860 新魔法药水
    XJOI 夏令营501-511NOIP训练18 高二学堂
    Luogu P3959 宝藏
    Luogu P2184 贪婪大陆
    XJOI 夏令营501-511NOIP训练18 高三楼
    XJOI 夏令营501-511NOIP训练17 蛇形数阵
    BZOJ 3813 奇数国
    POJ 2728 Desert King
  • 原文地址:https://www.cnblogs.com/huhu0013/p/1755247.html
Copyright © 2020-2023  润新知