|
|
#ifndef __C_DWTT_H__
#define __C_DWTT_H__
#include "ptt.h"
inline LPVOID GetHWNDPtr(HWND hwnd) { #ifdef _WIN64
return (LPVOID)::GetWindowLongPtr(hwnd, GWLP_USERDATA); #else
return (LPVOID)::GetWindowLong(hwnd, GWL_USERDATA); #endif
}
inline LPVOID SetHWNDPtr(HWND hwnd, LPVOID lpVoid) { #ifdef _WIN64
return (LPVOID)::SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)lpVoid); #else
return (LPVOID)::SetWindowLong(hwnd, GWL_USERDATA, (LONG)lpVoid); #endif
}
//----------------------------------------------------------------
//Disabled Window ToolTip class
//----------------------------------------------------------------
// For Disabled Window Tool Tip data
//----------------------------------------------------------------
typedef struct tagXINFO { struct tagXINFO *next; INT whichEvent; //TTM_RELAYEVNET or TTM_RELAYEVENT_WITHUSERINFO
TOOLTIPUSERINFO userInfo; TOOLINFOW toolInfoW; }XINFO, *LPXINFO;
class CDWToolTip; typedef CDWToolTip *LPCDWToolTip;
class CDWToolTip { public: CDWToolTip(HWND hwnd); ~CDWToolTip(); BOOL Enable(HWND hwndToolTip, BOOL fEnable); void *operator new(size_t size); void operator delete(void *p); static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); private: LRESULT RealWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT MsgCreate (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT MsgPrintClient (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT MsgPaint (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT MsgTimer (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT MsgDestroy (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT MsgSetFont (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT TTM_SetDelayTime(HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT TTM_AddToolW (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT TTM_DelToolW (HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT TTM_NewToolRectW(HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT TTM_RelayEventWithUserInfo(HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT TTM_RelayEvent(HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT TTM_GetSetToolInfoW(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT TTM_GetToolCount(HWND hwnd, WPARAM wParam, LPARAM lParam); BOOL SetWindowAnimate(HWND hwnd); LPWSTR GetTipTextW(VOID); INT GetTipSize (LPSIZE lpSize); INT DrawTipText (HDC hDC, LPRECT lpRc, LPWSTR lpwstr); BOOL IsMousePointerIn(VOID); BOOL IsSameInfo(LPXINFO lpXInfo1, LPXINFO lpXInfo2); static POSVERSIONINFO GetVersionInfo(); static BOOL IsWinNT4(VOID); static BOOL IsWinNT5(VOID); static BOOL IsWinNT(VOID); static BOOL IsWin98(VOID); static BOOL IsWin95(VOID); private: HWND m_hwndSelf; HFONT m_hFont; BOOL m_fShow; //Already show or not;
DWORD m_dwDelayFlag; DWORD m_dwDelayTime; DWORD m_dwDurationTime; LPXINFO m_lpXInfoHead; LPXINFO m_lpXInfoCur; XINFO m_xInfoPrev; //New 971104
MSG m_curRelayMsg; BOOL m_fEnable; //if FALSE never show tooltip;
}; #endif // __C_DWTT_H__
|