(7) Rastreie a forma do ícone (ícone)
Crie um novo Form3, salve como Capture3.Pas. Defina as quatro propriedades do atributo Bordericons como FALSE.
O BordersTyle está definido como BSNONE, o FormStyle está definido como FSSTAYONTOP.
Uma variável privada: fdragging: boolean;
Captura da unidade3;
interface
usos
Janelas, mensagens, sysutils, variantes, classes, gráficos, controles, formulários,
Diálogos;
tipo
Tform3 = classe (tform)
Procedimento FormCreate (remetente: Tobject);
procedimento formmousedown (remetente: tabject; botão: tmouseButton;
Turno: tshiftState;
Procedimento formmouseMove (remetente: TOBJECT; SHIFT: TSHIFTSTATE;
X, y: número inteiro);
procedimento formmouseup (remetente: tabject; botão: tmouseButton;
Turno: tshiftState;
procedimento formative (remetente: objeto);
procedimento formDestroy (remetente: tabjas);
Procedimento FormPaint (remetente: Tobject);
Privado
fdragging: booleano;
público
FRECT: TRECT;
FBMP: TBITMAP;
fim;
var
Form3: TForm3;
Implementação
{$ R *.dfm}
// Crie um novo cursor personalizado Cursor_2 e coloque -o no recurso Capture3.Res
// No arquivo, há uma borda retangular branca de 32*32 para indicar o intervalo da captura.
procedimento TForm3.FormCreate (remetente: TObject);
var adc: hdc;
const CrBox = -19;
Começar
Screen.cursors [crbox]: = loadcursor (hinstance, 'cursor_2');
Cursor: = CrBox;
fbmp: = tbitmap.create;
fbmp.width: = screen.width;
fbmp.Height: = screen.Height;
ADC: = getDC (0);
Bitblt (fbmp.canvas.handle, 0,0, screen.width, screen.height, adc, 0,0, srccopy);
Lançadoc (0, ADC);
Setbounds (0,0, screen.width, screen.height);
fim;
Procedimento TForm3.FormMouseDown (remetente: Tobject; Button: TmouseButton;
Turno: tshiftState;
Começar
Se mbleft = botão então comece
fdragging: = true;
SetRect (FRECT, X, Y, X+32, Y+32);
Canvas.drawfocusrect (FRECT);
fim;
fim;
Procedimento TForm3.FormMouSEMove (remetente: Tobject; Shift: TSHIFTSTATE;
X, y: número inteiro);
Começar
Se fdragging então comece
Canvas.drawfocusrect (FRECT);
frect.left: = x;
fret.top: = y;
frect.right: = x+32;
frect.bottom: = y+32;
Canvas.drawfocusrect (FRECT);
fim;
fim;
Procedimento TForm3.FormMouseUp (remetente: Tobject; Button: TmouseButton;
Turno: tshiftState;
Começar
ModalResult: = mrok;
fim;
Procedimento TForm3.FormActivate (remetente: Tobject);
const crhand = -18;
Começar
Screen.cursors [crhand]: = loadcursor (hinstance, pchar ('cursor_1'));
Cursor: = crhand;
fim;
procedimento TForm3.FormDestroy (remetente: TObject);
Começar
fbmp.free;
Screen.cursor: = crDefault;
fim;
procedimento TForm3.FormPaint (remetente: TObject);
Começar
Canvas.draw (0,0, fbmp);
fim;
fim.