计算机二级DELPHI控件:标题窗体拖动计算机二级考试

文章作者 100test 发表时间 2009:04:30 03:54:23
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  方法一:
  通过响应“wm_NCHitTest”消息来移动窗体。
  Windows发送“wM_NCHitTest”消息来确定鼠标操作是否发生在窗体的客户区,或边框的特殊区上(非客户区)。
  如果Windows发现用户单击了窗体标题,系统将移动窗体,单击了窗体边框,则系统将开始改变窗体大小。
  例程如下:
  private
  { Private declarations }
  Procedure MoveForm(var M:TWMNCHITTEST).Message WM_NCHITTEST.
  //声明一自定义事件,拦截“WM_NCHITTEST”消息
  public
  {$R *.DFM}
  Procedure TForm1.MoveForm (var M:TWMNCHITTEST).
  begin
  inHerited. //继承,窗体可以继续处理以后的事件
  if (M.Result=HTCLIENT) //如果发生在客户区
  and ((GetKeyState(vk_CONTROL) <. 0) //检测“Ctrl”键是否按下
  then M.Result:=HTCAPTION. //更改“.Result”域的值
  end.
  方法二:
  通过为Application.OnMessage创建一个处理程序获得Windows消息,
  可以调整应用程序对不同消息的响应或为不能正常识别的
  消息提供服务。这里受到窗体客户区的鼠标按下的消息后,
  发送一条在标题栏内按下的消息。
  例程如下:
  procedure FormCreate(Sender: TObject).
  private
  { Private declarations }
  procedure AppMessage(var Msg:TMsg.var Handled:Boolean).
  {$R *.DFM}
  procedure TForm1.FormCreate(Sender: TObject).
  begin
  Application.OnMessage:=AppMessage.
  //捕捉消息:将程序的收到消息事件与消息过滤过程关联起来
  end.
  procedure TForm1.AppMessage(var Msg:TMsg.var Handled:Boolean).
  begin
  if (Msg.message=WM_LButtonDown) and
  //如果鼠标左键按下的话
  (DefWindowProc(Handle,WM_NCHitTest,0,GetMessagePos)=HTClient) and
  //判断光标是否在客户区内
  ((GetKeyState(vk_CONTROL) <. 0)
  //检测“Ctrl”键是否按下
  then
  begin
  SendMessage(Handle
  WM_NCLButtonDown
  HTCaption
  GetMessagePos).
  //发送鼠标在标题栏内按下的消息
  Handled:=true.
  end.
  end.

相关文章


计算机二级DELPHI控件:在RichEdit中的串查找计算机二级考试
计算机二级DELPHI控件:状态条插入可视控件计算机二级考试
计算机二级DELPHI控件:捕捉delphi中thread异常计算机二级考试
DELPHI控件:FindWindowEX的一个应用实例计算机二级考试
计算机二级DELPHI控件:标题窗体拖动计算机二级考试
DELPHI控件:delphiRichEdit中实现url计算机二级考试
二级DELPHI控件:文件_流的加密解密方法计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛