Tooltips in der Toolbar
-
Hallo,
wie kann man Tooltips in der Toolbar anzeigen?
In der Formview ging es ganz einfach, doch in der Toolbar funktioniert es nicht.
Die Lösung mit Hilfe der String Table kommt für meine Anwendung nicht in Frage da ich verschiedene Sprachen während der Laufzeit auswählen kann.
So habe ich es versucht:BOOL CMainFrame::OnToolTipNotify(UINT id, NMHDR* pNMHDR, LRESULT* pResult) { CSipromTDoc* pDoc = (CSipromTDoc*)(((CMainFrame*)AfxGetMainWnd())->GetActiveDocument()); ASSERT(pDoc); /* pointer to the tooltiptext structure */ TOOLTIPTEXT* pTTT = (TOOLTIPTEXT*)pNMHDR; ASSERT(pTTT); UINT nID =pNMHDR->idFrom; if (pTTT->uFlags & TTF_IDISHWND) { /* get the ID of the window */ nID = ::GetDlgCtrlID((HWND)nID); /* write string in tooltip */ switch(nID) { /* NEW */ case 57600: {strcpy(pTTT->lpszText, pDoc->szString[185]); break;} /* OPEN */ case 57601: {strcpy(pTTT->lpszText, pDoc->szString[186]); break;} /* SAVE */ case 57603: {strcpy(pTTT->lpszText, pDoc->szString[187]); break;} /* LOAD TO DEVICE */ case 32790: {strcpy(pTTT->lpszText, pDoc->szString[188]); break;} /* LOAD TO PC */ case 32791: {strcpy(pTTT->lpszText, pDoc->szString[189]); break;} /* DISPLAY */ case 32792: {strcpy(pTTT->lpszText, pDoc->szString[190]); break;} /* HELP */ case 57664: {strcpy(pTTT->lpszText, pDoc->szString[91]); break;} default: {break;} } } return(FALSE); }Weiß jemand wo mein Fehler liegt?
-
1. TTN_NEEDTEXTA und TTN_NEEDTEXTW überschreiben und behandeln!
2. Warum verwendest Du die IDs in Deinem Code und nicht die symbolischen Werte?
3. Warum verwendest Du String-Tabellen für das multilinguale Programm und keine Satelite DLLs
http://www.mpdvc.de/artikel/MultilingualeProgramme.htm
-
zu 1: wie muss ich diese methoden überschreiben? Was muss dort hinein?
zu 2: könnnte auch die symbolischen Werte verwenden, ist ja eigentlich egal.
zu 3: ich lese die Strings aus einer Textdatei in ein String array ein, dadurch ist dem User später möglich eine Sprache selbst zur Software hinzuzufügen ohne das der Code nochmal kompiliert werden muss.
-
maRKus23 schrieb:
zu 1: wie muss ich diese methoden überschreiben? Was muss dort hinein?
1. Bitte lies doch einfach mal die Doku!
2. Dazu gibt es Artikel in der MSDN und in www.codeproject.com
2. Hast Du sogar den MFC Sourcecode und kannst Dir ansehen was dort geschieht.PS: Du fragst mir nach meinem Geschmack zu viel und ich habe ehrlich gesagt keine Lust immer Handbuch Ersatz zu sein. Just my 2 cents!

Warum sage ich das!
Hättest Du einfach nur nach TTN_NEEDTEXT in Google gesucht hättest Du unter den ersten 4 Links 3 100% Treffer gehabt!
-
Ich habe ja die MSDN gelesen, und habe es genau so in meiner FormView gemacht.
In der FormView hat es ja auch funktioniert. Aber in CMainFrame funktioniert es auf diese Methode nicht. Warum weiß ich nicht und ich habe sonst nix unter google gefunden.
In der Toolbar wird die If-Abfrage if (pTTT->uFlags & TTF_IDISHWND) nicht erfüllt.
-
Mannomann! Dann lies doch mal die Doku!

Die Bedingung wird deshalb nicht erfüllt, was das Objekt auf dass das Tooltip verweist kein Fenster ist sondern dass in dem Feld direkt eine ID des Buttons geliefert wird.
So schwer?So schwer mal in den Sourcecode der MFC reinzusehen?