EDITBALLOONTIP wird nicht gefunden



  • ich möchte ne hilf-sprechblase erzeugen.
    aber beim

    EDITBALLOONTIP ebt;
    

    scheitert es schon. ich habe die CommCtrl.h included (in diesem File ist das struct auch definiert.
    trotzdem kommt die fehlermeldung, dass es EDITBALLOONTIP nicht findet 😕

    hat jemand einen tipp an was es liegt?

    BigNeal



  • wer lesen kann, ist klar im vorteil! 😉

    Auszug aus der MSDN:

    Remarks

    Note To use this API, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see Using Windows XP Visual Styles.

    Aber zuerst widmen wir uns dem code zum anzeigen eines Tooltips. Zum einfachen Testen einfach nen TButton und ein TEdit auf das Formular ziehen. Da die Strukturen und Definitionen nicht erkannt werden, leihen wir die uns einfach aus:

    // aus commctrl.h entnommen
    #define  ECM_FIRST           0x1500              // Edit control messages
    #define  EM_SHOWBALLOONTIP   (ECM_FIRST + 3)     // Show a balloon tip associated to the edit control
    
    // aus commctrl.h entnommen
    typedef struct tagEDITBALLOONTIP {
        DWORD cbStruct;
        LPCWSTR pszTitle;
        LPCWSTR pszText;
        INT ttiIcon;
    } EDITBALLOONTIP, *PEDITBALLOONTIP;
    
    // OnClick des Buttons
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      EDITBALLOONTIP ebt;
    
      wchar_t *wTitle = new wchar_t[25];
      wchar_t *wText  = new wchar_t[25];
    
      wcscpy(wTitle, WideString("Caption-Titel").c_bstr());
      wcscpy(wText, WideString("Hint-Text").c_bstr());
    
      // Struktur fuellen
      ebt.ttiIcon  = TTI_INFO;  // ein Icon unserer Wahl
      ebt.pszTitle = wTitle;
      ebt.pszText  = wText;
      ebt.cbStruct = sizeof(EDITBALLOONTIP);       
    
      // Ballon-Tip anzeigen
      SendMessage(Edit1->Handle, EM_SHOWBALLOONTIP, 0, (LPARAM) &ebt);
    
      delete [] wTitle;
      delete [] wText;
    }
    

    Und jetzt zum Manifest:

    Einfach mit einem Texteditor deiner Wahl eine neuen Txt-Datei anlegen und folgendes hineinschreiben:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        name="Microsoft.Windows.Shell.shell32"
        processorArchitecture="x86"
        version="5.1.0.0"
        type="win32"/>
    <description>Windows Shell</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0"
                processorArchitecture="x86"
                publicKeyToken="6595b64144ccf1df"
                language="*"
            />
        </dependentAssembly>
    </dependency>
    </assembly>
    

    dann diese Datei im gleichen Verzeichnis wie deine Projektdatei speichern udn zwar unter "NameDeinerExe.exe.manifest". Heisst dein Projekt also Project1, dann unter "Project1.exe.manifest".

    Wenn du nun dein Projekt ausführst und auf den Button klickst, erscheint im Edit-Feld der Tooltip.

    Viel Spass



  • Habe das jetzt genauso gemacht, wie du das beschrieben hast, funktioniert auch beim Edit Feld. Nur bei meinem TrayIcon funktioniert das nicht. Muss man da was anders machen? Habe Edit1->Handle durch TrayIcon1->Handle ausgetauscht.

    Danke und Gruß

    Tobias



  • Balloon-Tips fuer den Tray haben auch nix mit nem Eingabefeld zu tun.

    Hier findest du ein Beispiel fuer den Tray. Ist allerdings in Object Pascal, aber recht einfach zu verstehen.


Anmelden zum Antworten