FBIagent
Erfahrenes Mitglied
Mahlzeit,
ich wollte einer meine Anwendungen heute um ein paar ToolTip Fenster erweitern.
Ich habe ein Fenster welches beliebig viele 32x32 große Buttons beinhalten kann.
Bei meinem ersten Versuch hat alles funktioniert, ich habe für jeden Button einen ToolTip erstellt wobei das Parentfenster der Button slebst war.
Nun brauche ich aber mehrzeilige ToolTipfenster, da dieses beispielsweise folgendes
beinhalten sollen:
Also musste ich als Parent-Fenster der ToolTip-Fenster das Fenster benutzen das alle
Buttons beinhaltet, da ich laut MSDN auf WM_NOTIFY und TTN_GETDISPINFO achten
muss im Parent vom ToolTip. Also habe ich jetzt als Parent dieses Fenster. Nur
werden jetzt keine tool tips mehr angezeigt.
Folgendes steht für die positionierung für die Buttons im Fenster, die auch einwandfrei
ist:
Es liegt nicht daran das die ToolTip fenster RECT's direkt auf der position der Buttons ist, das habe ich schon ausprobiert inde ich die ToolTip RECT's einfach mal um eine Button länge nach untern verschoben habe und ich dort auch kein ToolTip
angezeigt bekommen habe.
Best wishes
FBIagent
ich wollte einer meine Anwendungen heute um ein paar ToolTip Fenster erweitern.
Ich habe ein Fenster welches beliebig viele 32x32 große Buttons beinhalten kann.
Bei meinem ersten Versuch hat alles funktioniert, ich habe für jeden Button einen ToolTip erstellt wobei das Parentfenster der Button slebst war.
Nun brauche ich aber mehrzeilige ToolTipfenster, da dieses beispielsweise folgendes
beinhalten sollen:
Code:
Productions:
Item1( 432 )
Ingredients:
Item53( 32 )
Also musste ich als Parent-Fenster der ToolTip-Fenster das Fenster benutzen das alle
Buttons beinhaltet, da ich laut MSDN auf WM_NOTIFY und TTN_GETDISPINFO achten
muss im Parent vom ToolTip. Also habe ich jetzt als Parent dieses Fenster. Nur
werden jetzt keine tool tips mehr angezeigt.
C++:
HWND CreateToolTipForWindow( HWND ParentWnd, RECT Rect, HINSTANCE hInstance ) {
HWND ToolTipWnd = CreateWindowEx(
WS_EX_TOPMOST,
TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
ParentWnd, NULL, hInstance, NULL
);
if ( ToolTipWnd == NULL ) {
return NULL;
}
SetWindowPos( ToolTipWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );
TOOLINFO ti = { 0 };
ti.cbSize = sizeof( TOOLINFO );
ti.uFlags = TTF_SUBCLASS;
ti.hwnd = ParentWnd;
ti.hinst = hInstance;
ti.lpszText = L"Moin";
ti.rect = Rect;
SendMessage( ToolTipWnd, TTM_ADDTOOL, 0, ( LPARAM )&ti );
// SendMessage( ToolTipWnd, TTM_SETTOOLINFO, 0, ( LPARAM )&ti );
return ToolTipWnd;
}
C++:
bool L2Shop::AddShopEntry( HWND hWnd, HINSTANCE hInstance, L2ShopEntry *ShopEntry ) {
RECT Rect;
Rect.left = ICON_BORDER_WND_LEFT + ( m_Column * ICON_STEP_X );
Rect.top = ICON_BORDER_WND_TOP + ( ( m_Row - m_ScrollInfo.nPos ) * ICON_STEP_Y );
Rect.right = Rect.left + ICON_WIDTH;
Rect.bottom = Rect.top + ICON_HEIGHT;
ShopEntry->SetWnd( CreateWindowEx(
0,
L"BUTTON",
L"",
WS_CHILD | WS_VISIBLE | BS_FLAT | BS_BITMAP,
/*ICON_BORDER_WND_LEFT + ( m_Column * ICON_STEP_X )*/Rect.left,
/*ICON_BORDER_WND_TOP + ( ( m_Row - m_ScrollInfo.nPos ) * ICON_STEP_Y )*/Rect.top,
ICON_WIDTH,
ICON_HEIGHT,
hWnd,
NULL,
hInstance,
NULL
)
);
CreateToolTipForWindow( hWnd, Rect, hInstance );
if ( m_Column ++ == MAX_COLUMN_INDEX ) {
m_Column = 0;
++ m_Row;
}
SendMessage( ShopEntry->GetWnd(), BM_SETIMAGE, 0, ( LPARAM )ShopEntry->GetProduction()->GetBitmapHandle() );
m_ShopEntries.push_back( ShopEntry );
m_ScrollInfo.fMask = SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL;
m_ScrollInfo.nMin = 0;
m_ScrollInfo.nMax = max( ( m_ShopEntries.size() % MAX_COLUMN == 0 ? m_Row : m_Row + 1 ) - MAX_VIS_LINE, 0 );
m_ScrollInfo.nPage = 1;
SetScrollInfo( hWnd, SB_VERT, &m_ScrollInfo, TRUE );
m_ScrollInfo.fMask = SIF_ALL;
GetScrollInfo( hWnd, SB_VERT, &m_ScrollInfo );
//SendMessage( hWnd, WM_SHOPENTRIESWND_UPDATE, 0, 0 );
return true;
}
Folgendes steht für die positionierung für die Buttons im Fenster, die auch einwandfrei
ist:
C++:
Rect.left = ICON_BORDER_WND_LEFT + ( m_Column * ICON_STEP_X );
Rect.top = ICON_BORDER_WND_TOP + ( ( m_Row - m_ScrollInfo.nPos ) * ICON_STEP_Y );
Es liegt nicht daran das die ToolTip fenster RECT's direkt auf der position der Buttons ist, das habe ich schon ausprobiert inde ich die ToolTip RECT's einfach mal um eine Button länge nach untern verschoben habe und ich dort auch kein ToolTip
angezeigt bekommen habe.
Best wishes
FBIagent
Zuletzt bearbeitet von einem Moderator: