mzd
03-02-2004, 17:35
Пишу бесплатный Hypersnap :)
Для фото активного окна использую следующий код
procedure TFrmOptions.hotykey(var msg:TMessage);
var dd:hdc; g,m,d,h,mm,s,ss:word; ActivApp:TRect;
begin
if not DirectoryExists(dirpath) then CreateDir(dirpath);
dd:=GetDC(0);
DecodeDateTime(now,g,m,d,h,mm,s,ss);
if CheckBox1.Checked then begin
GetWindowRect(GetForegroundWindow,ActivApp);
DDF.Width:=ActivApp.Right-ActivApp.Left;
DDF.Height:=ActivApp.Bottom-ActivApp.Top;
StretchBlt(DDF.Canvas.Handle,0,0,DDF.Width,DDF.Height,
dd,ActivApp.Left,ActivApp.Top,ddf.Width,ddf.Height,MERGECOPY);
end else begin
DDF.Width:=Screen.Width;
DDF.Height:=Screen.Height;
StretchBlt(DDF.Canvas.Handle,0,0,Screen.Width,Screen.Height,
dd,0,0,Screen.Width,Screen.Height,MERGECOPY);
ReleaseDC(0,dd);
Выделеный код - делает снимок активного окна, а остальное - весь экран. Вопрос, почему выделеная часть не работает, что не так ?
Для фото активного окна использую следующий код
procedure TFrmOptions.hotykey(var msg:TMessage);
var dd:hdc; g,m,d,h,mm,s,ss:word; ActivApp:TRect;
begin
if not DirectoryExists(dirpath) then CreateDir(dirpath);
dd:=GetDC(0);
DecodeDateTime(now,g,m,d,h,mm,s,ss);
if CheckBox1.Checked then begin
GetWindowRect(GetForegroundWindow,ActivApp);
DDF.Width:=ActivApp.Right-ActivApp.Left;
DDF.Height:=ActivApp.Bottom-ActivApp.Top;
StretchBlt(DDF.Canvas.Handle,0,0,DDF.Width,DDF.Height,
dd,ActivApp.Left,ActivApp.Top,ddf.Width,ddf.Height,MERGECOPY);
end else begin
DDF.Width:=Screen.Width;
DDF.Height:=Screen.Height;
StretchBlt(DDF.Canvas.Handle,0,0,Screen.Width,Screen.Height,
dd,0,0,Screen.Width,Screen.Height,MERGECOPY);
ReleaseDC(0,dd);
Выделеный код - делает снимок активного окна, а остальное - весь экран. Вопрос, почему выделеная часть не работает, что не так ?