Newsgroups : Borland : borland.public.delphi.nativeapi.win32 : 2005 Apr : E_OUTOFMEMORY Why??
| Subject: | E_OUTOFMEMORY Why?? |
| Posted by: | "Jon Jacobs" (jonjacobsatcomcast.net) |
| Date: | Tue, 26 Apr 2005 20:57:51 |
Why does this give me E_OUTOFMEMORY?
Jon
unit ddp1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActiveX, ComCtrls;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TDnD = class(TInterfacedObject, IDropTarget)
private
FControl: TWinControl;
public
function DragEnter(const dataObj: IDataObject; grfKeyState: Longint;
pt: TPoint; var dwEffect: Longint): HResult; stdcall;
function DragOver(grfKeyState: Longint; pt: TPoint;
var dwEffect: Longint): HResult; stdcall;
function DragLeave: HResult; stdcall;
function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
var dwEffect: Longint): HResult; stdcall;
constructor Create(AControl: TWinControl);
end;
var
Form1: TForm1;
Dnd: IDropTarget;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
H: DWord;
S: string;
begin
Dnd := TDnD.Create(Self);
H := RegisterDragDrop(Handle, DnD);
if H = S_OK then
S := 'S_OK' else
if H = DWord(DRAGDROP_E_INVALIDHWND) then
S := 'DRAGDROP_E_INVALIDHWND' else
if H = DWord(DRAGDROP_E_ALREADYREGISTERED) then
S := 'DRAGDROP_E_ALREADYREGISTERED' else
if H = DWord(E_OUTOFMEMORY) then
S := 'E_OUTOFMEMORY'
else
S := IntToHex(H, 8);
StatusBar1.SimpleText := S;
end;
{ TDnD }
constructor TDnD.Create(AControl: TWinControl);
begin
inherited Create;
FControl := AControl;
end;
function TDnD.DragEnter(const dataObj: IDataObject; grfKeyState: Integer;
pt: TPoint; var dwEffect: Integer): HResult;
begin
end;
function TDnD.DragLeave: HResult;
begin
end;
function TDnD.DragOver(grfKeyState: Integer; pt: TPoint;
var dwEffect: Integer): HResult;
begin
end;
function TDnD.Drop(const dataObj: IDataObject; grfKeyState: Integer;
pt: TPoint; var dwEffect: Integer): HResult;
begin
end;
end.