Форум: "WinAPI";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Внизкнопки и иконки Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c