Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
ВнизSetWallpaper - помогите вставить картинку !!! Найти похожие ветки
← →
312Kbps (2005-09-08 01:49) [0]SetWallpaper("Имя файла",2) - так подставляется из файла картинка на рабочий стол. Подскажите, пожалуйста, как мне вставить картинку не из файла, а из объекта TImage ???
← →
DesWind © (2005-09-08 02:01) [1]Откуда ты берешь картинку в TImage? Если сам рисуешь, то простейший путь, сохранить ее в файл и потом поставить.
← →
312Kbps (2005-09-08 02:07) [2]Надо именно через объект !!!
Скажем, картинка в TImage появляется путем захвата рабочего стола !
Подаскажите )))
← →
DesWind © (2005-09-08 02:14) [3]Тебе обои нада поставить или рабочий стол перерисовать? ;)
← →
312Kbps (2005-09-08 02:22) [4]Мне надо вставить картинку из объекта TImage, а не из файла !
Как это сделать ?
← →
312Kbps (2005-09-08 02:42) [5]Ни кто не может мне подсказать, как это сделать ?
← →
DesWind © (2005-09-08 02:44) [6]Еще раз! Куда те ее надо вставить? ))))
← →
312Kbps (2005-09-08 02:46) [7]Смена картинки рабочего стола
SetWallpaper("Имя файла",2)
Так вот мне вместо "Имени файла" надо подставить картинку из объекта TImage
Как ?
← →
Defunct © (2005-09-08 02:48) [8]312Kbps (08.09.05 02:22) [4]
У тебя вызывает проблему сохранение изображения из TImage в файл?
тебе ж уже подсказали в [1] решение твоей задачи, причем самый простой.
← →
Джо © (2005-09-08 02:50) [9]Тебе придется смириться с мыслью, что функции SetWallpaper требуется именно имя файла.
← →
312Kbps (2005-09-08 02:51) [10]Если изображение одно, то можно сохранить, а если будет идти поток картинок ! Без сохранения в файл, напрямую , как это сделать ???
← →
312Kbps (2005-09-08 02:53) [11]Или как по другому заменить картинку на рабочем столе из TImage ?
← →
Defunct © (2005-09-08 03:00) [12]312Kbps (08.09.05 02:51) [10]
Если будет поток, тогда и сохраняй поток.
Ты что там фильмы собираешься на рабочем столе крутить?
> Без сохранения в файл, напрямую , как это сделать
может ты имеешь в виду под "рабочим столом" экран?
← →
DesWind © (2005-09-08 03:01) [13]а если будет идти поток картинок
Тогда нада копать IActiveDesktop, вроде...
← →
312Kbps (2005-09-08 03:03) [14]будет небольшой мониторинг на рабочем столе !
← →
Defunct © (2005-09-08 03:05) [15]312Kbps (08.09.05 03:03) [14]
Гм.. тогда для чего нужен TImage?
← →
DesWind © (2005-09-08 03:05) [16]Defunct © (08.09.05 03:00) [12]
Есть такая штука - фильмы показывать как обои... Интересно смотриться...
← →
312Kbps (2005-09-08 03:06) [17](15) потому как туда будет передоваться изображение
← →
DesWind © (2005-09-08 03:07) [18]312Kbps (08.09.05 03:03) [14]
Объясни толком, что нужно!
← →
312Kbps (2005-09-08 03:08) [19]я ещё сам толком не знаю )))
Прмем как константу, что есть объект TImage из которого надо передать картинку на рабочий стол !
← →
DesWind © (2005-09-08 03:10) [20]Что такое "рабочий стол"?
← →
Defunct © (2005-09-08 03:19) [21]312Kbps (08.09.05 03:08) [19]
Бредовая задача.
Зачем принимать как константу какую-то чушь. Ты сам подумай. TImage - компонент для отбражения картинок (не для хранения, и тем более не для формирования). Накой из него еще что-то куда-то передавать?
← →
Antonn © (2005-09-08 04:43) [22]312Kbps (08.09.05 1:49)
SetWallpaper("Имя файла",2) - так подставляется из файла картинка на рабочий стол.
приведи содержимое SetWallpaper
← →
IceBeerg © (2005-09-08 10:16) [23]312Kbps (08.09.05 3:03) [14]
будет небольшой мониторинг на рабочем столе !
Так создавай TImage в RunTime и родителем делай рабочий стол и рисуй на этом TImage все, что хочеш...
К сожалению примера не могу дать, был где-то пример как создать кнопку на рабочем столе, но его долго искать...
← →
312Kbps (2005-09-08 12:57) [24](23) Извени, но ты не мог бы мне пободдробней объяснить как это делается ? Спасибо !
← →
IceBeerg © (2005-09-08 13:54) [25]Вот, откопал pas файл от компонента:
unit APIButton;
interface
uses
Windows, Messages, Forms;
type
TAPIButton = class;
TButtonEvent = procedure(Sender: TAPIButton) of object;
TAPIButton = class
protected
// varibles
FHandle:THandle;
FTop,FLeft,FWidth,FHeight:Integer;
FMouseClick:TButtonEvent;
OldWinProc,NewWinProc:Pointer;
FMouse:Boolean;
// for "Caption" property
function GetCaption:string;
procedure SetCaption(const Value: string);
// for "Left" property
procedure SetLeft(const Value: Integer);
// for "Top" property
procedure SetTop(const Value: Integer);
// for "Width" property
procedure SetWidth(const Value: Integer);
// for "Height" property
procedure SetHeight(const Value: Integer);
// for "Visible" property
function GetVisible:Boolean;
procedure SetVisible(const Value: Boolean);
// for "Enabled" property
function GetEnabledB:Boolean;
procedure SetEnabledB(const Value: Boolean);
// for "Parent" property
function GetParent:THandle;
procedure SetParent(const Value: THandle);
// for Windows Messages
procedure msgUser(var Msg:TMessage);
published
property Handle: THandle read FHandle default 0;
property Caption:string read GetCaption write SetCaption;
property Left:Integer read FLeft write SetLeft;
property Top:Integer read FTop write SetTop;
property Width:Integer read FWidth write SetWidth;
property Height:Integer read FHeight write SetHeight;
property Visible:Boolean read GetVisible write SetVisible;
property Enabled:Boolean read GetEnabledB write SetEnabledB;
property Parent:THandle read GetParent write SetParent;
property OnMouseClick:TButtonEvent read FMouseClick write FMouseClick;
procedure SetFocus;
procedure SetBounds(ALeft,ATop,AWidth,AHeight: Integer);
constructor Create(ParentControl: THandle);
destructor UnCreate;
end;
implementation
{ TAPIButton }
constructor TAPIButton.Create(ParentControl: THandle);
begin
FHandle:=CreateWindow("Button","APIButton",WS_VISIBLE or WS_CHILD,0,0,72,25,
ParentControl,0,hInstance,nil);
SendMessage(FHandle,WM_CREATE,0,0);
FMouse:=GetSystemMetrics(SM_SWAPBUTTON) = 1;
FLeft:=0;
FTop:=0;
FWidth:=72;
FHeight:=25;
NewWinProc:=MakeObjectInstance(msgUser);
OldWinProc:=Pointer(SetWindowLong(FHandle,GWL_WNDPROC,Cardinal(NewWinProc)));
end;
destructor TAPIButton.UnCreate;
begin
Visible:=False;
SendMessage(FHandle,WM_DESTROY,0,0);
end;
function TAPIButton.GetCaption: string;
var
Buf:string;
L:Integer;
begin
L:=GetWindowTextLength(FHandle) + 1;
SetLength(Buf,L);
GetWindowText(FHandle,PChar(Buf),L);
Result:=PChar(Buf);
end;
function TAPIButton.GetEnabledB: Boolean;
begin
Result:=IsWindowEnabled(FHandle);
end;
function TAPIButton.GetVisible: Boolean;
begin
Result:=IsWindowVisible(FHandle);
end;
procedure TAPIButton.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
FLeft:=ALeft;
FTop:=ATop;
FWidth:=AWidth;
FHeight:=AHeight;
SetWindowPos(FHandle, 0, ALeft, ATop, AWidth, AHeight,0)
end;
procedure TAPIButton.SetCaption(const Value: string);
begin
SetWindowText(FHandle,PChar(Value));
end;
procedure TAPIButton.SetEnabledB(const Value: Boolean);
begin
EnableWindow(FHandle,Value);
end;
procedure TAPIButton.SetFocus;
begin
Windows.SetFocus(FHandle);
end;
procedure TAPIButton.SetHeight(const Value: Integer);
begin
FHeight:=Value;
SetWindowPos(FHandle,0,FLeft,FTop,FWidth,Value,0);
end;
procedure TAPIButton.SetLeft(const Value: Integer);
begin
FLeft:=Value;
SetWindowPos(FHandle,0,Value,FTop,FWidth,FHeight,0);
end;
procedure TAPIButton.SetWidth(const Value: Integer);
begin
FWidth:=Value;
SetWindowPos(FHandle,0,FLeft,FTop,Value,FHeight,0);
end;
procedure TAPIButton.SetTop(const Value: Integer);
begin
FTop:=Value;
SetWindowPos(FHandle,0,FLeft,Value,FWidth,FHeight,0);
end;
procedure TAPIButton.SetVisible(const Value: Boolean);
begin
if Value then
ShowWindow(FHandle,SW_SHOW)
else
ShowWindow(FHandle,SW_HIDE);
end;
function TAPIButton.GetParent: THandle;
begin
Result:=Windows.GetParent(FHandle);
end;
procedure TAPIButton.SetParent(const Value: THandle);
begin
Windows.SetParent(FHandle, Value);
end;
procedure TAPIButton.msgUser(var Msg: TMessage);
procedure RaiseClick;
var
Pnt:TPoint;
begin
GetCursorPos(Pnt);
if Assigned(FMouseClick) and (WindowFromPoint(Pnt) = FHandle) then
FMouseClick(Self);
end;
begin
Msg.Result:=CallWindowProc(OldWinProc,FHandle,Msg.Msg,Msg.WParam,Msg.LParam);
if not FMouse and (Msg.Msg = Wm_LButtonUp) then
RaiseClick
else if FMouse and (Msg.Msg = Wm_RButtonUp) then
RaiseClick;
end;
end.
Попробуй сделать по аналогии...
← →
312Kbps (2005-09-08 14:07) [26]Спасибо !
← →
DesWind © (2005-09-08 14:09) [27]У меня получилось так
function GetDesktopWindow: HWND; external "user32.dll";
......
Btn:=TButton.Create(Form1);
Btn.parent:=GetDesktopWindow;
............
← →
312Kbps (2005-09-08 14:34) [28]Btn.parent:=GetDesktopWindow;
[Error] Unit1.pas(36): Incompatible types: "TWinControl" and "HWND"
← →
DesWind © (2005-09-08 14:40) [29]Ну обшибся малек Btn.ParentWindow:=....;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.004 c