#ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include #include #include "cdwtt.h" #ifdef UNDER_CE // Windows CE specific #include "stub_ce.h" // Windows CE stub for unsupported APIs #endif // UNDER_CE // Safe String #define STRSAFE_NO_DEPRECATE #include "strsafe.h" #ifndef UNDER_CE static char g_szClass[]="fdwtooltip"; #else // UNDER_CE static TCHAR g_szClass[]=TEXT("fdwtooltip"); #endif // UNDER_CE #ifdef UNDER_CE // In Windows CE, all window classes are process global. static LPCTSTR MakeClassName(HINSTANCE hInst, LPTSTR lpszBuf) { // make module unique name TCHAR szFileName[MAX_PATH]; GetModuleFileName(hInst, szFileName, MAX_PATH); LPTSTR lpszFName = _tcsrchr(szFileName, TEXT('\\')); if(lpszFName) *lpszFName = TEXT('_'); StringCchCopy(lpszBuf, MAX_PATH, g_szClass); StringCchCat(lpszBuf, MAX_PATH, lpszFName); return lpszBuf; } BOOL ToolTip_UnregisterClass(HINSTANCE hInst) { TCHAR szClassName[MAX_PATH]; return UnregisterClass(MakeClassName(hInst, szClassName), hInst); } #endif // UNDER_CE HWND WINAPI ToolTip_CreateWindow(HINSTANCE hInst, DWORD dwStyle, HWND hwndOwner) { #ifndef UNDER_CE // Windows CE does not support EX WNDCLASSEX wc; if(!::GetClassInfoEx(hInst, g_szClass, &wc)) { #else // UNDER_CE TCHAR szClassName[MAX_PATH]; WNDCLASS wc; if(!::GetClassInfo(hInst, MakeClassName(hInst, szClassName), &wc)) { #endif // UNDER_CE ::ZeroMemory(&wc, sizeof(wc)); #ifndef UNDER_CE // Windows CE does not support EX wc.cbSize = sizeof(wc); #endif // UNDER_CE wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)CDWToolTip::WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; wc.hIcon = NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)NULL; wc.lpszMenuName = NULL; #ifndef UNDER_CE // In Windows CE, all window classes are process global. wc.lpszClassName = g_szClass; #else // UNDER_CE wc.lpszClassName = szClassName; #endif // UNDER_CE #ifndef UNDER_CE // Windows CE does not support EX wc.hIconSm = NULL; ::RegisterClassEx(&wc); #else // UNDER_CE ::RegisterClass(&wc); #endif // UNDER_CE } HWND hwnd; //---------------------------------------------------------------- //for Satori #2239. //If create window with WS_DISABLED, AnimateWindow change cursor as hourglass. //So, removed WS_DISABLED. //---------------------------------------------------------------- //00/08/08: This fix is NOT enough... //Tooltip gets focus... //---------------------------------------------------------------- hwnd = ::CreateWindowEx(0, #ifndef UNDER_CE // In Windows CE, all window classes are process global. g_szClass, #else // UNDER_CE szClassName, #endif // UNDER_CE NULL, //dwStyle | WS_POPUP | WS_BORDER | WS_VISIBLE, //WS_DISABLED, dwStyle | WS_POPUP | WS_BORDER | WS_DISABLED, 0, 0, 0, 0, hwndOwner, NULL, hInst, NULL); return hwnd; } INT WINAPI ToolTip_Enable(HWND hwndToolTip, BOOL fEnable) { LPCDWToolTip lpCDWTT = (LPCDWToolTip)GetHWNDPtr(hwndToolTip); if(lpCDWTT) { lpCDWTT->Enable(hwndToolTip, fEnable); } return 0; }