delphi – 为什么我的表单在文件被删除时不会收到WM_DropFiles?
发布时间:2020-12-15 09:40:37 所属栏目:大数据 来源:网络整理
导读:我正在使用Embarcadero RAD Studio XE来开发应用程序.我正在尝试使用以下代码将文件拖放到应用程序中 TMainForm = class(TForm)public: procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;end;procedure TMainForm.FormCreate(Sender: TO
我正在使用Embarcadero RAD Studio XE来开发应用程序.我正在尝试使用以下代码将文件拖放到应用程序中
TMainForm = class(TForm) public: procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; end; procedure TMainForm.FormCreate(Sender: TObject); begin DragAcceptFiles(Self.Handle,True); end; procedure TMainForm.FormDestroy(Sender: TObject); begin DragAcceptFiles(Self.Handle,False); end; procedure TMainForm.WMDropFiles(var Msg: TWMDropFiles); begin inherited; showmessage('catch here'); // some code to handle the drop files here Msg.Result := 0; end; 这段代码没有问题.此外,当我拖放文件时,光标显示状态已更改为拖放,但在删除后,没有任何反应(也未显示任何消息).这有什么不对吗? 解决方法
在普通的vanilla应用程序中,问题中的代码会导致在表单上删除对象时执行WMDropFiles.所以,显然还有其他事情可以阻止它发挥作用.最明显的潜在原因是:
>在初始调用DragAcceptFiles之后重新创建主窗体的窗口句柄. 方案2似乎很合理.要了解更多信息,请参阅:Q: Why Doesn’t Drag-and-Drop work when my Application is Running Elevated? – A: Mandatory Integrity Control and UIPI (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |