Hallo Zusammen,
ich möchte einen ToolTip-Text während der Laufzeit ändern. Also das Grundgerüst (siehe Code) zur Erstellung eines ToolTip-Fensters habe ich schon aber irgenwie komme ich nicht weiter wie ich während der Laufzeit einen neuen Text (z.B. Uhrzeit etc.) zuweisen kann.
Es scheint irgendwie im Case-Zweig WM_NOTIFY mit case TTN_NEEDTEXT eine neue Zuweisung möglich aber bisher hab ich es noch nicht hinbekommen bzw. die Lösung in Google gefunden. Vieleicht kann jemand weiterhelfen, wäre Super! Gruss an Alle, michbach
PS: Mal ne Frage. Schon öfters ist mir beim googeln nach Lösungen aufgefallen dass es weit mehr MFC-Beiträge gibt als zu WinApi. WinApi scheint wohl nicht so gefragt zu sein oder täusche ich mich da? Ich hab halt mal mit Api angefangen weil ich ein Fenster basteln wollte und weil ichs vorher nicht besser wusste.. Ist wohl besser auf MFC zu wechseln, oder?
ich möchte einen ToolTip-Text während der Laufzeit ändern. Also das Grundgerüst (siehe Code) zur Erstellung eines ToolTip-Fensters habe ich schon aber irgenwie komme ich nicht weiter wie ich während der Laufzeit einen neuen Text (z.B. Uhrzeit etc.) zuweisen kann.
Es scheint irgendwie im Case-Zweig WM_NOTIFY mit case TTN_NEEDTEXT eine neue Zuweisung möglich aber bisher hab ich es noch nicht hinbekommen bzw. die Lösung in Google gefunden. Vieleicht kann jemand weiterhelfen, wäre Super! Gruss an Alle, michbach
PS: Mal ne Frage. Schon öfters ist mir beim googeln nach Lösungen aufgefallen dass es weit mehr MFC-Beiträge gibt als zu WinApi. WinApi scheint wohl nicht so gefragt zu sein oder täusche ich mich da? Ich hab halt mal mit Api angefangen weil ich ein Fenster basteln wollte und weil ichs vorher nicht besser wusste.. Ist wohl besser auf MFC zu wechseln, oder?
Code:
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "comctl32.lib")
#include <windows.h>
#include <commctrl.h>
#include <time.h>
#include <sstream>
#include <tchar.h>
using namespace std;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void CreateToolTipForRect(HWND hwndParent, int tt_nr);
HINSTANCE hInst;
HWND fe_haupt;
HWND bu_uhrzeit;
HWND *HW_TT = new HWND[50];
//####################################################################################################
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
MSG msg ;
WNDCLASS wc = {0};
wc.lpszClassName = "Tooltip" ;
wc.hInstance = hInstance ;
wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
wc.lpfnWndProc = WndProc ;
wc.hCursor = LoadCursor(0, IDC_ARROW);
hInst = hInstance;
RegisterClass(&wc);
//XXX Hauptfenster und Button erstellen
fe_haupt = CreateWindow(wc.lpszClassName,"Haupt",WS_OVERLAPPEDWINDOW|WS_VISIBLE,100,100,200,150,0,0,hInstance,0);
bu_uhrzeit = CreateWindow ("button","A",WS_CHILD|WS_VISIBLE,0,0,50,50,fe_haupt,(HMENU)100,hInstance,NULL) ;
//XXX Tooltip-Fenster erstellen
CreateToolTipForRect(fe_haupt, 0); // für Hauptfenster
CreateToolTipForRect(bu_uhrzeit, 1); // für Button
while( GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
//####################################################################################################
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch(msg)
{
//___________________________________
case WM_NOTIFY:
{
switch (((LPNMHDR)lParam)->code)
{
//****? case TTN_NEEDTEXT:
//****? Zuweisung neuer Text
}
}
break;
//___________________________________
case WM_DESTROY:
PostQuitMessage(0);
break;
}return DefWindowProc(hwnd, msg, wParam, lParam);
}
//####################################################################################################
void CreateToolTipForRect(HWND hwndParent, int tt_nr)
{
INITCOMMONCONTROLSEX ic;
ic.dwSize = sizeof(INITCOMMONCONTROLSEX);
ic.dwICC = ICC_TAB_CLASSES;
InitCommonControlsEx(&ic);
//XXX Tooltip-Fenster erstellen
HW_TT[tt_nr] = CreateWindowEx(WS_EX_TOPMOST,TOOLTIPS_CLASS,NULL,WS_POPUP|TTS_NOPREFIX|TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,hwndParent,NULL,hInst,NULL);
SetWindowPos(HW_TT[tt_nr],HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
//XXX Tool-Information
TOOLINFO ti = { 0 };
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_SUBCLASS;
ti.hwnd = hwndParent;
ti.hinst = hInst;
//ti.lpszText = "TestTest";
if(hwndParent == fe_haupt){ti.lpszText = "Hauptfenster";}
else if(hwndParent == bu_uhrzeit){ti.lpszText = "Button-Uhrzeit";}
GetClientRect (hwndParent, &ti.rect);
//XXX Associate the ToolTip with the "tool" window.
SendMessage(HW_TT[tt_nr], TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
SendMessage(HW_TT[tt_nr], TTM_ACTIVATE, true, NULL);
}