Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wie erstelle ich ein Tooltip.

Empfohlene Antworten

Veröffentlicht

HAllo, ich habe mal wieder ein problem.

Ich habe eine Toolbar (siehe Bild)

HAMTS.png

die einzelnen elemte sind dafür in einem Bitmap gespeichert

das Bitmap schaut so aus

(sihe Bild) I5IDL.png

Die einzlnen Elemente werden aus dem bitmap gelesen denn aller 15*16 Pixel entspricht ein symbol.

diese werden in einer header datei geladen


// Die Elemente für die Toolbar

TBBUTTON tbButton[] = 

{

//{0, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{16, ID_FILE_NEWtb, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, ID_FILE_MAKRO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{1, ID_FILE_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{2, ID_FILE_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

//{4, ID_FILE_SAVE_AS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

//{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{3, ID_EDIT_CLEAR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{12, ID_HARDCOPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{7, ID_STRUKTURIERTER_TEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{9, ID_EINGANG_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{10, ID_EINGANG_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{14, ID_ZOOM_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{15, ID_ZOOM_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{11, ID_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

//{13, ID_INFO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}

}; 

Die anfangs zahlen entpricht den Symbol auf den Bitmap.

Nun meine Frage wie kann ich realiesieren das wenn ich über ein BUtton mit der Maus bin, dann sich dann pro button so ein Tooltip öffnet wo der name des Butten steht.

Bsp. Maus ist über der dem Button OPEN das dann steht öffnen. Quasi so eine art mousovereffekt wie bei java.

Danke im VOrraus.

Hallo Danke für deinen Tipp aber es funktioniert noch nicht bei mir.

so sieht jetzt mein Quellcode aus für die Umgebung.h also wo die Toolbar erzeugt wird


bool ErstelleArbeitsFenster(HWND Handle,ProgrammInformation *info)

{

	RECT rect;

	GetClientRect(Handle,&rect);

	(*info).handles.Arbeitsfenster = CreateWindow (	TEXT("Arbeitsfenster"), NULL,

												WS_CHILDWINDOW | WS_VISIBLE,

												0,0,

												rect.right,rect.bottom,

												Handle,NULL,

												(*info).hInstance, NULL) ;

	if ((*info).handles.Arbeitsfenster == NULL)

		return FALSE;


	// Toolbar erstellen

	(*info).handles.Toolbar =	CreateToolbarEx((*info).handles.Arbeitsfenster,	// parent

												WS_CHILD | WS_BORDER | 

												WS_VISIBLE | TBSTYLE_TOOLTIPS,	// style

												IDR_TOOLBAR,						// toolbar id

												AnzahlButtons,                  // number of bitmaps

												(*info).hInstance,						// mod instance

												IDB_TOOLBAR,					// resource id for the bitmap

												(LPCTBBUTTON)&tbButton,			// address of buttons

												AnzahlButtons,                  // number of buttons

												16,16,							// width & height of the buttons

												16,16,							// width & height of the bitmaps

												sizeof(TBBUTTON)

												);	

	if ((*info).handles.Toolbar == NULL)

		return FALSE;


	HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,

		WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,

		CW_USEDEFAULT, CW_USEDEFAULT,

		CW_USEDEFAULT, CW_USEDEFAULT,

		(*info).handles.Arbeitsfenster, NULL,info->hInstance,

		NULL);


	if (NULL != hwndTip)

	{

		Programminfo.handles.ToolTip = hwndTip;


		SetWindowPos(hwndTip, HWND_TOPMOST, 0, 0, 0, 0, 

			SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); 


	}


	TOOLINFO ti;

	ti.cbSize = sizeof(TOOLINFO);

	ti.uFlags = TTF_SUBCLASS;

	ti.hwnd = info->handles.Arbeitsfenster;

	ti.hinst = info->hInstance;

	ti.rect.left=1;

	ti.rect.top=1;

	ti.rect.bottom=200;


	//ti.rect.left = 0;

	//ti.rect.top = 0;

	//ti.rect.right = 100;

	//ti.rect.bottom = 100;


	for(int i =0; i < AnzahlButtons; i++)

	{

		int x;

		if( ToolButtonHilfsText[i][0]==0) 

			x=6; // Separator

		else 

			x=22; // normaler Button

		ti.rect.right = ti.rect.left + x;

		ti.lpszText = ToolButtonHilfsText[i];

		SendMessage(hwndTip, TTM_ADDTOOL, 0,(LPARAM)&ti);

		ti.rect.left = ti.rect.right + 1;

	}



	return TRUE;

}
und so schaut der Quelltext vom Hauptprogramm.h aus wo die elemente definiert werden für die Toolbar
const int AnzahlButtons	= 18;


#define ID_FILE_NEW                     0xE100

#define ID_FILE_OPEN                    0xE101

#define ID_FILE_SAVE                    0xE103

#define ID_FILE_SAVE_AS                 0xE104

#define ID_EDIT_CLEAR                   0xE120

#define ID_HELP                         0xE146

#define ID_HELP_INDEX                   0xE142


// Die Elemente für die Toolbar

TBBUTTON tbButton[] = 

{

{0, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

//{0, ID_FILE_NEWtb, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{16, ID_FILE_MAKRO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{1, ID_FILE_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{2, ID_FILE_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

//{4, ID_FILE_SAVE_AS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

//{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{3, ID_EDIT_CLEAR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{12, ID_HARDCOPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{7, ID_STRUKTURIERTER_TEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{9, ID_EINGANG_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{10, ID_EINGANG_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{14, ID_ZOOM_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{15, ID_ZOOM_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

{11, ID_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},

{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0},

//{13, ID_INFO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}

}; 


char* ToolButtonHilfsText[AnzahlButtons] =

{

	"Neues FUP-Projekt",

	"Neues Makro-Projekt",

	"Projekt Öffnen",

	"Projekt Speichern",

	"letztes eingefügtes Element löschen",

	"HARDCOPY",

	"",

	"erzeuge Strukturierten Text",

	"",

	"Eingang hinzufügen",

	"Eingang entfernen",

	"",

	"herein zoomen",

	"heraus zoomen",

	"",

	"Hilfe",

	"",

	""

};

aber leider wird immernoch kein tooltip erzeugt wenn ich mit der Maus darüber fahre. Weis einer rat?? Oder was mache ich falsch??

Also Sendmessage war erfolgreich aber die Tooltips kamen immer noch nicht.

Nun hab ich beim googeln was gefunden:

Tooltip won't display over toolbar button - C Board

NUn hab ich das versucht den Code an mein Programm anzupassen, aber erscheint über jedem Toolbutton der gleiche Tooltext (immer der erste String von meinem Textarry, in dem ich die Tooltips hinterlegt habe)


for(int i =0; i < AnzahlButtons; i++)

	{

		if (*ToolButtonHilfsText[i] != *"")

		{			

			tbButton[i].iString = SendMessage((*info).handles.Toolbar, TB_ADDSTRING, 0, (LPARAM) (LPSTR) ToolButtonHilfsText[i]);

		}

		else tbButton[i].iString = 0;

}


DWORD ToolButtonID[AnzahlButtons] = 

{

	ID_FILE_NEW,

	ID_FILE_MAKRO,

	ID_FILE_OPEN,

	ID_FILE_SAVE,

	ID_EDIT_CLEAR,

	0,

	ID_HARDCOPY,

	0,

	ID_STRUKTURIERTER_TEXT,

	0,

	ID_EINGANG_PLUS,

	ID_EINGANG_MINUS,

	0,

	ID_ZOOM_PLUS,

	ID_ZOOM_MINUS,

	0,

	ID_HELP,

	0

};


char* ToolButtonHilfsText[AnzahlButtons] =

{

	"Neues FUP-Projekt",

	"Neues Makro-Projekt",

	"Projekt Öffnen",

	"Projekt Speichern",

	"letztes eingefügtes Element löschen",

	"HARDCOPY",

	"",

	"erzeuge Strukturierten Text",

	"",

	"Eingang hinzufügen",

	"Eingang entfernen",

	"",

	"herein zoomen",

	"heraus zoomen",

	"",

	"Hilfe",

	"",

	""

};

Hast du eine Idee, woran es liegt?

Das Problem ist vermutlich, dass du die Strings erst hinzufügst, nachdem die Toolbar mit allen Buttons bereits erstellt wurde. Nachträgliche Änderungen an dem TBBUTTON-Array wirken sich natürlich nicht automatisch aus. Möglicherweise reicht es, wenn du danach nochmal für jeden Button TB_SETBUTTONINFO verschickst, damit die aktualisierten Stringindizes auch bei der Toolbar ankommen.

Das Problem ist vermutlich, dass du die Strings erst hinzufügst, nachdem die Toolbar mit allen Buttons bereits erstellt wurde.

Ja, das mache ich. Wie kann man das schon vorher machen oder geht das nicht?

Nachträgliche Änderungen an dem TBBUTTON-Array wirken sich natürlich nicht automatisch aus. Möglicherweise reicht es, wenn du danach nochmal für jeden Button TB_SETBUTTONINFO verschickst, damit die aktualisierten Stringindizes auch bei der Toolbar ankommen.

Wenn ich die TB_SETBUTTONINFO Message sende fliegt das Programm weg. Ich hab den Aufruf von Sendmessage mit TB_SETBUTTONINFO in die Schleife gepackt, ist das vllt verkehrt?

Hast du eine Idee?

Wenn ich die TB_SETBUTTONINFO Message sende fliegt das Programm weg.
Was soll das denn für eine Fehlerbeschreibung sein? :rolleyes:

Ich hab den Aufruf von Sendmessage mit TB_SETBUTTONINFO in die Schleife gepackt, ist das vllt verkehrt?
Nö. Vermutlich sind irgendwelche Member der Struktur falsch oder gar nicht gesetzt.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.