Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Balloon tip u Borland C++

[es] :: C/C++ programiranje :: Balloon tip u Borland C++

[ Pregleda: 4094 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Balloon tip u Borland C++19.05.2006. u 20:19 - pre 218 meseci
Trebao bih napraviti ballon tip za svoju aplikaciju. Imam sljedeću funkciju:

Code:
void TfrmMain::ToolTip(HWND hWnd, wchar_t* wcText, TColor clBackCol, TColor clTextCol)
{
  HWND hWndToolTip;
  TOOLINFOW ti;

  hWndToolTip = CreateWindow( TOOLTIPS_CLASS,
                             NULL,
                             WS_POPUP | TTS_NOPREFIX | 0x40 |
                             TTS_ALWAYSTIP,
                             0, 0, 0, 0,
                             hWnd,
                             0,
                             HInstance,
                             NULL );
  if( hWndToolTip != 0 )
  {
   SetWindowPos( hWndToolTip,
                 HWND_TOPMOST,
                 0, 0, 0, 0,
                 SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE );

   memset(&ti,0,sizeof(ti));
   ti.cbSize  = sizeof(ti);
   ti.uFlags  = Flags;
   ti.hwnd    = hWnd;
   ti.lpszText = wcText;
   ti.rect = frmMain->GetClientRect();

   SendMessage( hWndToolTip, TTM_ADDTOOLW, 0, (LPARAM)&ti );
  }
}


I jednostavno na FormCreate događaju postavim sljedeći kod:

Code:
        Flags = TTF_TRANSPARENT | TTF_SUBCLASS;
        ToolTip(Button1->Handle , L"Pozdrav", clWhite, clBlack );


i imam ballon tip koji se pojavljuje kad pređem mišem preko dugmeta.

Ono što mene zanima kako napraviti da ja kažem aplikaciji kada će se pojaviti Balloon Tip i na kojem mjestu. Recimo nešto kao kad vam kaže da nemate slobodnog mjesta na Hard Disku pa se pojavi Ballon Tip.
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: Balloon tip u Borland C++23.05.2006. u 18:43 - pre 218 meseci
Zar nitko ne zna. Ne mora biti po ovom kodu samo neka radi.
Da pojednostavim : Kako napraviti dnevni savjetnik -> svaki put kada se pokrene program, pokaže savjet dana.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Balloon tip u Borland C++23.05.2006. u 18:57 - pre 218 meseci
Mislis onaj balon u tray-u ?
 
Odgovor na temu

sucur
Miljan Sucur
Web developer
Istocno Sarajevo

Član broj: 50035
Poruke: 411
*.so.pttrs.net.



+1 Profil

icon Re: Balloon tip u Borland C++23.05.2006. u 22:21 - pre 218 meseci
E da se i ja ubacim, da ne otvaram novu temu, takodje problem je sa baloon-om u trayu, dakle cim njega deklarsem sa NOTIFYICONDATA, prijavi mi gresku, kao da on nije clan NOTIFYICONDATA strukture, dok ostalim clanovima se pristupa uredno. U MSDN pise da se kao include koristi "shellapi.h" i njega ukljucim.
Dakle sta je problem ?
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
..26.static.techtelnet.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Balloon tip u Borland C++23.05.2006. u 22:30 - pre 218 meseci
Stavi sledece define pre includa windows.h i shellapi.h

#define _WIN32_IE 0x0600
#define _WIN32_WINNT 0x0500

#include <windows.h>
#include <shellapi.h>


Tko leti vrijedi
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: Balloon tip u Borland C++24.05.2006. u 12:15 - pre 218 meseci
Citat:
X Files: Mislis onaj balon u tray-u ?


Da upravo to. Trebam ga samo pozvati pomoću neke funkcije.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Balloon tip u Borland C++24.05.2006. u 14:50 - pre 218 meseci
Da bi imao Ballon u Tray-u, pre svega ti je potrebna manipulacija Tray ikonom.

Svo to zajedno i upakovano (tray+balloon) imas ovde, sa sve source-om:
http://tinyurl.com/o2jub
(prouci malo thread)


Inace, BDS2006 vec ima tray sa ballon-ima, ali ovaj kod koji ces pronaci je
100% najbolji koji je ikad napravljen za BCB. Cak i moja malenkost ima udela
u kodu ;)
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: Balloon tip u Borland C++24.05.2006. u 19:58 - pre 218 meseci
Uti koliko koda. Čekaj, pa to je komponenta. Zar nema nešto jednostavnije? Obična funkcija ili tako nešto...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Balloon tip u Borland C++24.05.2006. u 20:02 - pre 218 meseci
Sama problematika programa koji se minimizuje u tray nije bas trivijalna, jer se trebaju
predvideti razne situacije, kao na primer kada 'pukne' shell program OS-a (explorer.exe).

Taj kod jeste uradjen kao komponenta, ali ti je definitivno potreban ako zelis takav
program.

Prikazivanje balona jeste trivijalno, ali treba doci do tog stadijuma.

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Balloon tip u Borland C++24.05.2006. u 20:13 - pre 218 meseci
P.S.

Jesi li (is)probao onaj recnik sto mi je u potpisu? On ima taj Ballon 'Dnevni savetnik' ...

EDIT:
Evo ti na primer deo tog recnika, koji prikazuje dnevni savetnik pri startovanju programa
kada je u tray-u... pa probaj nesto da izvuces ...

Code:

void __fastcall TDiMainForm::FormActivate(TObject *Sender)
{
   // ...
   Invalidate();
   Repaint();

   // Secure that the code will be reached only once...
   static bool HasPassedOnActivate = false;

   // Has passed once...
   if ( !HasPassedOnActivate )
   {
      // Mark not to enter any more...
      HasPassedOnActivate = true;

      // If the Tray or Autostart is selected...
      if ( ( Tray == 1 ) || ( Autostart == 1 ) )
      {
         // Minimize the dictionary
         Application->Minimize();
      }

      // TODO: ...
      AlphaBlend = true;
      AlphaBlendValue = 255;


      // Prepare appropriate message if the code page 1250 is not set...
      if ( IsCodePage1250() )
         CODE_PAGE_MESSAGE = "";
      else
         CODE_PAGE_MESSAGE = X(IDS_SER_MAIN_CODEPAGE);

      // If Tray is selected ...
      if ( Tray == 1 )
      {
         // Set the flag to tell if the Tray icon is present... TODO: let it be a part of tray ocon code
         IsIconPresent = true;

         // Add icon to tray
         AddIconToTray();

         // Read INI Params and Arguments... TODO: Why?
         ReadIniParamsAndArguments();

         // If NOT the first time (all ini etries are present) the app is opened...
         // If the codepage WARNING is present...
         // If NOT called from IE context menu ...
         if ( !IsFirstTime() && ( CODE_PAGE_MESSAGE != "" ) && ( Prms == 0 ) )
         {
            NOTIFYICONDATA IconData;
            IconData.cbSize = sizeof( NOTIFYICONDATA );
            IconData.uID    = IDC_SER_BALLOON_DISMALL;
            IconData.hWnd   = Handle;
            IconData.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
            IconData.uCallbackMessage = WM_TRAYNOTIFY;

            // ???
            IconData.hIcon  = TrayIcon->Handle;

            // Caption: Tip in the tray when selected with mouse...
            lstrcpy( IconData.szTip, X(IDS_SER_MAIN_APPLICATION_TITLE).c_str() );

            // Warining
            IconData.dwInfoFlags = NIIF_WARNING;

            // Caption: Tip of the day...
            AnsiString Caption = X(IDS_SER_MAIN_HELPTIPOFTHEDAY);

            // Body: Code page warning message...
            AnsiString Body = X(IDS_SER_MAIN_CODEPAGE);

            // ...
            IconData.uFlags = NIF_INFO;
            IconData.uTimeout = 15000;
            StrLCopy( IconData.szInfo, Body.c_str(), 511 );
            StrLCopy( IconData.szInfoTitle, Caption.c_str(), 127 );
            Shell_NotifyIcon( NIM_MODIFY, &IconData );
         }
         else if ( ( Tips ) && ( !IsFirstTime() ) && ( Prms == 0 ) )
         {
            NOTIFYICONDATA IconData;
            IconData.cbSize = sizeof( NOTIFYICONDATA );
            IconData.uID    = IDC_SER_BALLOON_DISMALL;
            IconData.hWnd   = Handle;
            IconData.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
            IconData.uCallbackMessage = WM_TRAYNOTIFY;

            // ...
            IconData.hIcon  = TrayIcon->Handle;

            // Caption: Tip in the tray when selected with mouse...
            lstrcpy( IconData.szTip, X(IDS_SER_MAIN_APPLICATION_TITLE).c_str() );

            // Which tip to how...
            long number = DayOfTheYear( Now() );
            long position = 0;

            long AFrom = IDS_SER_MAIN_TIPS_01;
            long ATo   = IDS_SER_MAIN_TIPS_35;

            long module = ( ( ATo - AFrom ) / 2 ) + 1;

            ++position;

            long to_show = ( number + position ) % module;

            AnsiString Caption = X(IDS_SER_MAIN_HELPTIPOFTHEDAY);
            AnsiString Body = X( to_show * 2 + AFrom );


            IconData.dwInfoFlags = NIIF_INFO;
            //IconData.dwInfoFlags = NIF_TIP;

            IconData.uFlags = NIF_INFO;
            IconData.uTimeout = 15000;
            StrLCopy( IconData.szInfo, Body.c_str(), 511 );
            StrLCopy( IconData.szInfoTitle, Caption.c_str(), 127 );
            Shell_NotifyIcon( NIM_MODIFY, &IconData );
         }
      }
      else
      {
         // Set the flag to tell if the Tray icon is present... TODO: let it be a part of tray ocon code
         IsIconPresent = false;
      }

      // If called from IE, open it
      if ( Prms > 0 )
      {
         // TODO: Wahy that way?
         PostMessage( Handle, WM_HOOK_IE, 0, 0 );
      }
   }

}
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: Balloon tip u Borland C++25.05.2006. u 15:13 - pre 218 meseci
Stavim sljedeći dio koda ali se ništa ne događa:

Code:
            NOTIFYICONDATA IconData;
            IconData.cbSize = sizeof( NOTIFYICONDATA );
            IconData.uID    = 0; //tu nemam blage šta treba ali traži integer
            IconData.hWnd   = Handle;
            IconData.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
            IconData.uCallbackMessage = 0;//WM_TRAYNOTIFY; ///kao i ovdje

            IconData.hIcon  = Tray->Handle;

            // Caption: Tip in the tray when selected with mouse...
            lstrcpy( IconData.szTip, "xxxxxxxxxxxxxxxx" );

            IconData.dwInfoFlags = NIIF_WARNING;

            // Caption: Tip of the day...
            AnsiString Caption = "yyyyyyyyyyyyyyyy";
            AnsiString Body = "ggggggg";

            // ...
            IconData.uFlags = NIF_INFO;
            IconData.uTimeout = 15000;
            StrLCopy( IconData.szInfo, Body.c_str(), 511 );
            StrLCopy( IconData.szInfoTitle, Caption.c_str(), 127 );
            Shell_NotifyIcon( NIM_MODIFY, &IconData );


Inače, isprobao sam di riječnik i tako sam i dobio ideju.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Balloon tip u Borland C++

[ Pregleda: 4094 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.