变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

東坡下載:內容最豐富最安全的下載站!

首頁編程開發Delphi → 實現應用程序的文件拖放功能

實現應用程序的文件拖放功能

相關文章發表評論 來源:本站時間:2010/10/14 10:02:53字體大小:A-A+

更多

作者:東坡下載點擊:852次評論:3次標簽:

      在Delphi中有許多控件支持拖放操作,但僅限于 應用程序內部,而不能實現從Windows環境里向應用程序拖放文件,本文將要介紹的就是如 何用Delphi編寫支持文件拖放的應用程序,由于主要使用WindowsAPI函數,因此也可供其 它語言使用者參考.
  首先要說明的是下面的三個API函數,為通用起見, 函數說明使用C語言格式,
1.VOIDDragAcceptFiles(
HWNDhWnd,
BOOLfAccept);
  DragAcceptFiles函數是用來為拖放文件作初始化, 它的第一個參數hWnd指明目標窗體的句柄,第二個參數fAccept是一個布爾型變量,為True時 則hWnd所指向的窗體可以接受拖放的文件.
2.UINTDragQueryFile(
HDROPhDrop,
UINTiFile,
LPTSTRlpszFile,
UINTcch)
  DragQueryFile函數用來查詢拖放文件的文件名,其 本身的返回值是一個無符號整數,參數hDrop是一個存放所拖放文件名稱的數據結構的句柄, 也就是文件名緩沖區的句柄,需要從Windows消息WM_DROPFILES中獲得.iFile指明所要查詢 文件的序號,它有兩種取值方式,1.值為十六進制數FFFFFFFF時,DragQueryFile的返回值為 所拖放文件的數目;2.值在0到拖放文件總數之間時,DragQueryFile函數將相應序號的文件 名放入參數lpszFile所指向的緩沖區內,若此時lpszFile的值為NULL,則DragQueryFile會返 回相應文件名的長度.參數cch決定緩沖區的長度,由于Windows95支持長文件名,它的值不能 設得太小.
3.VOIDDragFinish(HDROPhDrop);
  使用DragFinish函數告訴Windows拖放操作結束,使 其釋放文件名緩沖區,它的參數hDrop與DragQueryFiles函數中的一樣,也由Windows消息WM_DROPFILES 的hDrop參數獲得.
  下面將結合一個我編寫的例子來說明具體的編程 步驟.本例中窗體上放置了一個Memo控件memo1,在Windows中選取數個文件拖至程序窗體 放下,則memo1中便會顯示所選文件的總數及每個文件的各自名稱.程序代碼如下:
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Classes,
Graphics,Controls,Forms,Dialogs,
StdCtrls;
type
TForm1=class(TForm)
Memo1:TMemo;
procedureFormCreate(Sender:TObject);
procedureLabel3Click(Sender:TObject);
procedureLabel4Click(Sender:TObject);
private
PROCEDUREFinishDropped(VARMsg:TMessage);
MessageWM_DropFiles;
{Privatedeclarations}
public
{Publicdeclarations}
end;
var
Form1:TForm1;
implementation
usesshellapi;
{$R*.DFM}
pro ureTForm1.FormCreate(Sender:TObject);
begin
//initializethedragprocess;
DragAcceptFiles(Handle,True);
end;
ProcedureTForm1.FinishDropped(VARMsg:TMessage);
Var
hDrop:THandle;
iFile:Uint;
lpszFile:pchar;
CountOfFiles:integer;
FileIndex:integer;
ReSults:string;
begin
hDrop:=Msg.WParam;
getmem(pchar,255);
iFile:=$FFFFFFFF;
CountOfFiles:=DragQueryFile(hDrop,iFile,lpszFile,254);
ReSults:=;
forFileIndex:=0CountOfFiles-1do
begin
iFile:=FileIndex;
DragQueryFile(hDrop,iFile,lpszFile,254);
//GettheFilenamesbyorder;
ReSults:=ReSults+#13#10+lpszFile;
end;
Dispose(lpszFile);
memo1.Clear;
memo1.lines.add(拖放了+IntToStr
(CountOfFiles)+個文件:+ReSults);
DragFinish(hDrop);
end;
end.
  從以上代碼可以看出,首先應該在窗體的OnCreate事 件中用DragAccepteFiles來說明程序窗體支持文件的拖放.
  另外,除了調用以上3個API函數,在Delphi中還應 編寫針對WM_DROPFILES的消息處理過程FinishDropped,截取了WM_DROPFILES,由其wParam 才能夠得到文件名緩沖區的句柄.
  在FinishDropped過程里,有兩處DragQueryFile 函數,第一處其iFile參數為$FFFFFFFF,得到拖放文件的總數;第二處iFile參數為每個文 件的序號,則可在lpszFile中可得到相應的文件名.當然,為了明顯的對比iFile的值對DragQueryFile 函數的影響,這里的代碼不夠簡練.有一點需要注意的是,lpszFile是Pchar型的變量,為了 程序運行安全,它使用前需用getmem過程為其分配內存,使用后再用dispose過程將其釋放. 在FinishDropped過程的最后,用DragFinish函數釋放文件名緩沖區.
  以上范例代碼在Delphi4中通過.

相關評論

閱讀本文后您有什么感想? 已有 人給出評價!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)

本類常用軟件

主站蜘蛛池模板: 色视频网站在线 | 五月天婷婷网站 | 欧美成人免费观看国产 | 天天综合网天天综合色 | 中文一区二区在线观看 | 波多野结衣一区二区在线 | 成人午夜在线观看国产 | 在线视频欧美亚洲 | 黄色一级片免费在线观看 | 国产亚洲人成网站在线观看不卡 | 视频福利一区 | 手机看片a永久免费看大片 手机看片91精品一区 | 香港经典a毛片免费观看爽爽影院 | 伊人网伊人网 | 午夜影院伦理片 | 午夜影院在线看 | 老司机午夜视频在线观看 | 一级黄色片中国 | 国产精品成人一区二区 | 亚洲欧美一区二区三区在饯 | 一级片免费在线 | 男女视频免费在线观看 | 91导航福利| 新版天堂中文资源官网 | 中文字幕第8页 | 成人欧美视频免费看黄黄 | 欧美黄色片 一级片 | 一级全黄男女免费大片 | 国产成人免费视频 | 写真片 理论 在线播放 | 一本大道香蕉最新在线视频 | 在线观看91精品国产不卡免费 | 欧美日本一道免费一区三区 | 天天影视色香欲综合网网站麻豆 | 国产在线一卡二卡 | 高h喷水荡肉爽文np欲 | 性xxx视频在线观看 性国产videofree另类 | 曰批人成在线观看 | 成人av播放 | 国产激情一级毛片久久久 | 男人边吃奶边爱边做视频刺激 |