// set User & Company do this on WM_PAINT as it can change
OWNER_PROFILE OwnerProfile;
GetOwnerInfo(&OwnerProfile, NULL);
// Truncate the strings and append ellipses is they are too long
SetTextWithEllipsis(DI(IDC_STATIC_USER), OwnerProfile.szName);
HWND hUserCompany = DI(IDC_STATIC_USER_COMPANY);
if (hUserCompany)
SetTextWithEllipsis(hUserCompany, OwnerProfile.szCompany);
// Create the tooltip window for long strings
g_hToolTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hDlg, NULL, g_hInst, NULL);
case TTN_SHOW:
{
HWND hwndItem = (HWND) ((LPNMHDR) lParam)->idFrom;
ASSERT(hwndItem);
RECT rcItem = {0};
GetWindowRect(hwndItem, &rcItem);
RECT rcToolTip = {0};
GetWindowRect(g_hToolTip, &rcToolTip);
LONG lToolTipWidth = rcToolTip.right - rcToolTip.left;
HMONITOR hMonitor = MonitorFromWindow(hwndItem, MONITOR_DEFAULTTONEAREST);
ASSERT(hMonitor);
if (hMonitor)
{
MONITORINFO mi = {0};
mi.cbSize = sizeof(mi);
GetMonitorInfo(hMonitor, &mi);
if (mi.rcWork.right < (rcItem.left+lToolTipWidth))
{
rcItem.left -= (rcItem.left+lToolTipWidth)-mi.rcWork.right;
}
}
// TTM_ADJUSTRECT is not supported on CE so just assume +=2
// SendMessage(g_hToolTip, TTM_ADJUSTRECT, TRUE, (LPARAM) &rc);
rcItem.top += 2;
rcItem.left += 2;
I:\WINCE600\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\WAVEDEV\i2s.cpp
用到的例子
// Determine the CPU clock speed by querying the OAL.
//
if (!KernelIoControl(IOCTL_PROCESSOR_INFORMATION, NULL, 0, &procInfo, sizeof(PROCESSOR_INFO), &dwBytesReturned))
{
RETAILMSG(TRUE, (TEXT("WARNING: WAVEDEV.DLL: SetI2SClockRate: Failed to obtain processor frequency - using default value(%d).\r\n"), s3c2410_pclk));
}
else
{
s3c2410_pclk = procInfo.dwClockSpeed;
RETAILMSG(TRUE, (TEXT("INFO: WAVEDEV.DLL: SetI2SClockRate: Using processor frequency reported by the OAL (%d).\r\n"), s3c2410_pclk));
}