Вниз
Скачать: CL | DM;

кнопки и иконки   Найти похожие ветки 

← →
alexey1   (2002-02-28 15:25) [0]

И снова всем привет!
Перехожу сразу к вопросу.
Мне нужно создать кнопку в чужом окне, и выложить на эту кнопку
иконку или bmp-шку
Значит кнопку создавать я умею и делаю это так:

var
Form1: TForm1;
alexbutton : Tbutton;
procedure TForm1.Button1Click(Sender: TObject);
var
aa:hwnd;
begin
aa:=findwindow(........);
alexbutton := Tutton.Create(self);
alexbutton.Caption:="Ё";
alexbutton.ParentWindow:=aa//handle окно владельца кнопки
alexbutton.Height:=25;alexbutton.Width:=25;
end;

а теперь, ВЫ , наверное, спросите - а почему нельзя сделать через
speedbutton или bitbtn?:

var
Form1: TForm1;
alexbutton : Tbitbtn;
procedure TForm1.Button1Click(Sender: TObject);
var
aa:hwnd;
begin
aa:=findwindow(........);
alexbutton := Tbitbtn.Create(self);
alexbutton.Caption:="Ё";
alexbutton.gryph..................
alexbutton.ParentWindow:=aa//handle окно владельца кнопки
alexbutton.Height:=25;alexbutton.Width:=25;
end;

При использовании данного кода происходит странное:
закрывается Explorer и несколько программ, возможно даже зависание.

А у speedbutton свойство PARENTWINDOW вообще отсутсвует.

Так что не знаю как решить эту проблему.
Я УВЕРЕН ЧТО через API НА ЛЮБОЙ ОБЬЕКТ МОЖНО ВЫЛОЖИТЬ ICO ИЛИ BMP
ИЛИ Я НЕ ПРАВ????

Заранее благодарен!!!!!!!!!!


← →
VuDZ ©   (2002-02-28 15:30) [1]

это иконка должна быть в адресном пространстве другого приложения (того, в котором ты эту кнопку делаешь)


← →
Raptor ©   (2002-02-28 21:30) [2]

Во первых, в самом деле иконка должна быть в адр. простр. процесса, которому принадлежит окно.
Во вторых, забудь про VCL в таких вещах. Создавай кнопку с помощью CreateWindowEx(...,BUTTON,...,BS_ICON,...).
В третьих, что тебе с кнопки которая будет только красоватся на чужом окне, а отслеживать ее события ты не сможешь. Придется подменять процедуру окна этого окна (каламбурчик вышел :-) ), что повлечет за собой необходимость внедрения в адр. протр. чужого процесса. Ведь новая процедура окна тоже должна находится в адр. простр. подопытного процесса.
Или еще вариант - ставить хук на нить, которой принадлежит окно, и прехватывать сообщения WM_COMMAND посылаемые твоей кнопкой этому окну.
Как видишь, здесь проблем немало.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
1-2537
AFROLOV
2002-04-17 14:44
2002.05.02
Как узнать что файл блокирован(используется) другим приложением?


3-2500
Zak
2002-04-08 09:56
2002.05.02
Мастер-детаиЛ чтоб её!


1-2516
anacronix
2002-04-20 18:23
2002.05.02
Ввод текста в Edit1 в любом регистре


7-2705
Макс
2002-02-05 17:48
2002.05.02
Получение изображений со сканера


1-2554
OlegG
2002-04-16 09:01
2002.05.02
dll + String +PChar




   Наверх