Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

иконки


hahol ©   (2007-06-12 20:17:00) 

у меня вот какая проблема - когда мое приложение сворачивается в tray  то иконка не прорисовывается
вернее прорисовывается но какаято пустая ,просто в трее появляется кусок пустого места с которым можно производить действия но иконки как токовой нет.
помогите плз.


hahol   (2007-06-14 11:17:00) [1]

ну апечатался немного
application.icon.handle  {дискриптор иконки}


Rouse_   (2007-06-13 23:20:00) [2]


> hicon:=hicon1;{дискриптор иконки}

Hicon1:=(application.icon.hendle); - это что за зверь?


hahol   (2007-06-13 12:59:00) [3]

...
var
 myclose:boolean=false;

procedureTForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var st:string;
   instance:thandle;
   cdsize:integer;
begin
if myclose=false then
begin
canclose:=false;{не закрываем}
myclose:=true;{а при следующем закроем}
fhandle:=allocateHwnd(WndProc);{получем дискриптор окна}
Hicon1:=(application.icon.hendle);{получем дискриптор иконки}
with noiconData do
begin
cdsize:=sizeof(tnotifyicondata);{размер структуры}
wnd:=fhandle;{размер структуры}
uid:=0;{т.к. единственная иконка}
uflags:=nif_message or nif_tip;{взводим все флаги}
sztip:='slide_show';{подсказка}
hicon:=hicon1;{дискриптор иконки}
ucallbackmessage:=ico_message;{определяемое пользователем сообщение}
end;
shell_notifyicon(nim_add,@noicondata);{создали иконку}
form1.Hide;
end else {если окно закрыть , т.е. если myclose=true}
begin
DeallocateHWnd(fhandle); {убераем из памяти дискриптор окна}
shell_Notifyicon(nim_delete,@noicondata);{удаляем иконку}
canclose:=true;{можно закрыть}
end;
end;

procedureTForm1.wndproc(var message: tmessage);
begin
if message.Msg = ico_message then
begin
if message.LParam=wm_lbuttonup then
begin
myclose:=false;
form1.Show;
application.BringToFront;
deallocatehwnd(fhandle);
shell_notifyicon(nim_delete,@noicondata);
application.ProcessMessages;
end;
if message.LParam=wm_rbuttonup then
form1.PopupMenu1.Popup(screen.Width-50,screen.Height-5);
end;
end;

procedureTForm1.PopupMenu1Popup(Sender: TObject);
begin
setforegroundWindow(form1.Handle);
end;

procedureTForm1.N11Click(Sender: TObject);
begin
myclose:=false;
form1.Show;
application.BringToFront;
deallocateHwnd(Fhandle);
shell_notifyicon(nim_Delete,@noicondata);
application.ProcessMessages;
end;


Rouse_   (2007-06-13 09:57:00) [4]

И как тебе помочь? Код покажи? Хотя ошибка у тебя явно в том что описатель иконки передаешь неверный в структуру или вообще не передаешь :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо