zoukankan      html  css  js  c++  java
  • 让窗体接受拖放, 并获取拖过来的文件信息 回复 "海浪问" 的问题


    问题来源: http://www.cnblogs.com/del/archive/2009/01/20/1353117.html#1435746

    原理分析:

    这需要用到 ShellAPI 单元的两个函数: DragAcceptFiles、DragQueryFile;

    用 DragAcceptFiles(窗口句柄, True); 以让窗口能够接受拖放;

    然后就等待 WM_DROPFILES 消息, 并用 DragQueryFile 函数处理消息参数, 从而获取信息.

    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        procedure FormCreate(Sender: TObject);
      protected
        procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses ShellAPI;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      DragAcceptFiles(Handle, True);
    end;
    
    procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
    var
      p: array[0..255] of Char;
      i,count: Integer;
    begin
      {先获取拖拽的文件总数}
      count := DragQueryFile(message.Drop, $FFFFFFFF, nil, 0);
    
      {分别获取文件名}
      for i := 0 to count-1 do
      begin
        DragQueryFile(message.Drop, i, p, SizeOf(p));
        Memo1.Lines.Add(p); {既然知道了文件名, 当然也可以随手打开它}
      end;
    end;
    
    end.
    

    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 154
      ClientWidth = 261
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object Memo1: TMemo
        Left = 0
        Top = 0
        Width = 261
        Height = 129
        Align = alTop
        Lines.Strings = (
          'Memo1')
        ScrollBars = ssBoth
        TabOrder = 0
      end
    end
    
  • 相关阅读:
    伸展树(SplayTree)的实现
    map的访问
    #pragma warning(disable 4786)
    debian sftp/ssh197
    debian 配置静态ip197
    deepin 安装tar.gz197
    npm构建vue项目197
    linux 常用命令197
    application/force-download 不生效197
    reids 安装197
  • 原文地址:https://www.cnblogs.com/del/p/1379130.html
Copyright © 2011-2022 走看看