Tooltip und MFC PropertyPage



  • Hallo

    Wie kann man auf einer PropertyPage ein Tooltip hinzufügen ?
    Bzw wann muss man CToolTipCtrl erzeugen ? Damit ich parentWnd zur verfügung habe ?

    Grüße


  • Mod

    Mit der MFC kann man überall wo man will einen Tooltip hinzufügen.

    Lies mal diesen Artikel. Er fast ideal alles zusammen was man über Tooltips wissen sollte:
    http://www.microsoft.com/msj/0497/tooltip/tooltip.aspx



  • Hi

    Danke für den Link ... Denoch weiß ich jetzt noch nicht wie es machen soll.
    Ok ich hab mich auch nicht ganz klar bzw exakt ausgedrückt ... Es geht darum dass ich eine ATL-Property Page habe auf der Elemente vorhanden sind.

    Ich habe schon öfters CToolTipCtrl benutzt und
    Normalerweise mache ich dann diese Punkte.

    # Add a CToolTipCtrl member variable to the protected or private section of your dialog class.

    # Add a control member variable for each control that will have a tip. You can add the control member variables through the Member Variable tab of ClassWizard.

    # Override CDialog::OnInitDialog and call CToolTipCtrl::Create. Then call CToolTipCtrl::AddTool for each control that has a ToolTip. Pass the address of the control member variable and the text of the ToolTip as parameters.
    # Override CDialog::PreTranslateMessage and call CToolTipCtrl::RelayEvent for each message passed to CDialog::PreTranslateMessage. This insures that the ToolTip control gets all the necessary mouse messages.

    Das funktioniert auch. Meistens auch auf anderen MFC kompenenten.
    Wahrschein meinst du CPropertyPage(an die hab ich leider gar nicht gedacht das es die ja auch gibt) ja da würde das auch so funktionieren da das Element von CDilaog abgeleitet ist bzw ich wüsste was zu tun ist.

    Aber wie gesagt(ok vielleicht erst jetzt genau) geht es um eine ATL-Propertypage und die ist nicht von CDialog etc abgelgeitet. Und da verstehe ich nicht wo ich meine CToolTipCtrl initalisieren soll und wie ich
    auf PreTranslateMessag etc kommen soll.

    Da stehe ich voll auf "der Leitung" 🙂 kann sein dass ich irgendetwas übersehe und das es doch ganz einfach geht aber wie gesagt moementan wüsste ich nicht wie ich das bewerkstellen soll.
    Ich hoffe nicht das ich was überlesen habe 😉 Irgendwie hab ich da keine so richtige Idee. Hast du Tipps ??

    Grüße


  • Mod

    Dann kannst Du auch kein CToolTipCtrl verwenden.
    Es gibt in einem ATL Projekt weder PreTRanslateMessage noch entsprechende Behandlungen der Tooltip Nachrichten in der Parent Klasse.

    Dann musst Du dich eben auf die normalen API Funktionen verlassen, wie sie eben beschrieben sind:
    http://msdn.microsoft.com/en-us/library/bb760250(VS.85).aspx



  • Hi

    Ah ok dann halt so.

    Das Erzeugen der Tooltip-Elementes muss ich dann doch in InplaceActivate machen ? Dazu muss ich das dann überschreiben ...
    Wie macht man das ?

    Zuerst muss ich mal die Interfaceschnittstelle hinzufügfen.

    class ATL_NO_VTABLE CMyPropPage :
        ....
        public IOleObjectImpl<CMyPropPage>,
        ...
    {
    

    Dann einfach ... im Header.

    HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect);
    

    Bzw im "cpp" ...

    HRESULT CMyPropPage ::InPlaceActivate(LONG iVerb, const RECT* prcPosRect)
    {
       // TODO 
       // ... 
    }
    

    Bzw so hätt ich das gemacht klappt aber nicht da ich dann den Fehler habe:
    "error C2039: 'IOleObject_SetClientSite' : is not a member of 'CMyPropPage'"

    In InitCommonControls könnte ich es auch machen aber komme ich da auch drauf ?+
    Bzw wie ??

    Sorry aber mit ATL hab ich noch nicht ganz die Routine


Log in to reply