Avatar billede cpphp Nybegynder
15. marts 2002 - 01:48 Der er 6 kommentarer og
2 løsninger

Tray ikon

Hej, jeg håber der er nogen der kan hjælpe mig.
Når en bruger minimere min application vil jeg have at applicationen skal minimeres til et "system tray icon". Jeg håber I forstår hvad jeg mener!
Avatar billede ducks Nybegynder
15. marts 2002 - 02:06 #1
ved ikke rigtig om det er helt hen i vejret, men prøv at se om du kan få noget ud af det :)

' Border handler class
Private m_bdr As CFormBorder

Private Sub Check1_Click()
  ' Toggle replacement property
  m_bdr.ShowInTaskbar = _
      CBool(Check1.Value)
End Sub

Private Sub Form_Load()
  ' Set up replacement properties
  Set m_bdr = New CFormBorder
  Set m_bdr.Client = Me
End Sub
Avatar billede cpphp Nybegynder
15. marts 2002 - 03:30 #2
Nej, jeg forstår ikke meget af det.
Avatar billede emileej Nybegynder
15. marts 2002 - 06:38 #3
Hehe - det er jo Pascal - vi er i Cpp kategorien :o)
mht. det tray ikon, så kan man til Borland C++ Builder få en komponent til det - hvilken compiler bruger du?

E-)mil
http://mfp.eej.dk
Avatar billede djernaes Nybegynder
15. marts 2002 - 06:59 #4
Kan du ikke se forskel på æbler og bananer? ;-)

Det er VB ;-(

Hvis i kan læse pascal, så er her en VCL komponent (object):

http://www.djernaes.dk/martin/vcl.html#TmdTray

Du skal have fat i en NOTIFYICONDATA structur, sæt size, widnows handle, ID (til eget brug), en call back message (jeg bruger WM_User+9100, men den skal bare være unique inde i dit program), en icon handle, tip og flags (f.eks. NIF_MESSAGE or NIF_ICON).

Herefter kalder du Shell_NotifyIcon med NIM_ADD og din structur.

Husk at slette den igen med NIM_ADD.

Så når brugere minimere programmet, så skjuler du det i stedet for at minimere det, og den åbnes igen fra trayen (hvis du husker at poppe en menu op).

Martin
Avatar billede laffe Nybegynder
15. marts 2002 - 07:50 #5
Her er et udklip af den kode jeg bruger:

.h filen skal indeholde følgende variable:

unsigned int IconMessage;

.cpp file.

void __fastcall TForm::FormDestroy(TObject *Sender)
{
  RemoveTrayIcon();
}
//---------------------------------------------------------------------------

void __fastcall TForm::FormCreate(TObject *Sender)
{
  IconMessage = RegisterWindowMessage("IconNotify");
  AddTrayIcon();
}
//---------------------------------------------------------------------------

void __fastcall TForm::AddTrayIcon()
{
  NOTIFYICONDATA IconData;

  memset(&IconData,0,sizeof(NOTIFYICONDATA));
  IconData.cbSize = sizeof(IconData);
  IconData.hWnd  = Handle;
  strncpy(IconData.szTip,"MX-Monitor",sizeof(IconData.szTip));
  IconData.hIcon  = Application->Icon->Handle;
  IconData.uCallbackMessage = IconMessage;
  IconData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
  Shell_NotifyIcon(NIM_ADD, &IconData);
}
//---------------------------------------------------------------------------

void __fastcall TForm::RemoveTrayIcon()
{
  NOTIFYICONDATA IconData;

  memset(&IconData,0,sizeof(NOTIFYICONDATA));
  IconData.cbSize = sizeof(IconData);
  IconData.hWnd  = Handle;
  Shell_NotifyIcon(NIM_DELETE, &IconData);
}
//---------------------------------------------------------------------------

void __fastcall TForm::WndProc(TMessage &Message)
{
  if (Message.Msg == IconMessage)
  {
    if (Message.LParam == WM_LBUTTONDBLCLK)
    {
      Show();
    }
    return;
  }else
  if (Message.Msg == WM_SYSCOMMAND)
  {
    if (Message.WParam == SC_MINIMIZE)
    {
      Visible = false;
      return;
    }
  }
  TForm::WndProc(Message);
}

void __fastcall TForm::FormClick(TObject *Sender)
{
  if (WindowState == wsMinimized)
  {
      ShowWindow(Handle,SW_MINIMIZE);
      ShowWindow(Handle,SW_HIDE);
      AddTrayIcon();
  }
}
Avatar billede emileej Nybegynder
15. marts 2002 - 18:03 #6
Hehe - upz det er jo VB! :o)
Så bare lige 'end' inden jeg smuttede ud af døren, så jeg tænkte jo straks Pascal *gG*
Avatar billede alvion Nybegynder
16. marts 2002 - 14:32 #7
http://www.codeguru.com/shell/index.shtml

Tag et kig på nederste sektion:

"Tray Icons"
Avatar billede ducks Nybegynder
16. marts 2002 - 17:35 #8
emileej: det var også bare en jeg havde på computeren (kan ikke huske hvorfra), tænkte at hvis den duede var det vel ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester