Cześć, chciałem się upewnić w jednej rzeczy, bo rzutowanie nie jest moją mocną stroną ;).
Pytanie dot. mojego wrappera na WinApi.
Zrobiłem sobie enum-a CursorType, w którym mam odpowiedniki różnych typów cursorów systemowych (np. ARROW, WAIT, HAND etc. - odpowiedniki IDC_ARROW, IDC_WAIT etc.).
W zależności od tego, który typ zostanie wybrany chcę go ustawić w oknie przy pomocy funkcji LoadCursor(). Problem w tym, że windowsowe wersje tych zmiennych są wskaźnikami (LPCTSTR) a nie int-ami i nie mogę przypisać ich bezpośrednio do moich enumów.
Zastanawiam się więc nad rzutowaniem ich do int, by uniknąć switch-a.
Ogólnie koncepcja jest taka: w enum-ie rzutuję IDC_NAZWA_CURSORA na int a w funkcji LoadCursor rzutuję mojego enuma na (LPCTSTR). Wygląda to mniej więcej tak:
enum CursorType
{
ARROW = (int)IDC_ARROW,
WAIT = (int)IDC_WAIT,
//...
};
//...
void SetSystemCursor(CursorType cursor)
{
if(hWnd)
{
LoadCursor(NULL, (LPCTSTR)cursor);
}
}
No i teraz pytanie:
- czy to jest bezpieczne?
- czy nie powinienem w enumie stosować dynamic_cast lub innego odpowiednika?
Z góry dzięki za pomoc.