LPWSTR TextAlloc( LPCWSTR lpszSrc) { LPWSTR pszT; DWORD cbString; if (lpszSrc == NULL) return NULL; cbString = (wcslen(lpszSrc) + 1) * sizeof(WCHAR); if (pszT = (LPWSTR)UserLocalAlloc(HEAP_ZERO_MEMORY, cbString)) { RtlCopyMemory(pszT, lpszSrc, cbString); } return pszT; }
int DlgDirSelectComboBoxExA( HWND hwndDlg, LPSTR pszOut, int cchOut, int idComboBox) { LPWSTR lpwsz; BOOL fRet; lpwsz = (LPWSTR)UserLocalAlloc(HEAP_ZERO_MEMORY, cchOut * sizeof(WCHAR)); if (!lpwsz) { return FALSE; } fRet = DlgDirSelectComboBoxExW(hwndDlg, lpwsz, cchOut, idComboBox); WCSToMB(lpwsz, -1, &pszOut, cchOut, FALSE); UserLocalFree(lpwsz); return fRet; }
int SmartStretchDIBits( HDC hdc, int xD, int yD, int dxD, int dyD, int xS, int yS, int dxS, int dyS, LPVOID lpBits, LPBITMAPINFO lpbi, UINT wUsage, DWORD rop) { LPBYTE lpBitsNew; UINT bpp; RGBQUAD rgb; LPBITMAPINFOHEADER lpbiNew = NULL; int i; /* * thunk to USER32 */ UserAssert(rop == SRCCOPY); UserAssert(wUsage == DIB_RGB_COLORS); UserAssert(xS == 0 && yS == 0); if ((GetDIBColorTable(hdc, 0, 1, &rgb) != 1) && (dxD != dxS || dyD != dyS) && // 1:1 stretch just call GDI (dxD >= dxS/2) && (dyD >= dyS/2) && // less than 1:2 shrink call GDI (lpbi->bmiHeader.biCompression == 0) && // must be un-compressed (lpbi->bmiHeader.biBitCount == 4 || // input must be 4,8,24 lpbi->bmiHeader.biBitCount == 8 || lpbi->bmiHeader.biBitCount == 24)) { bpp = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES); bpp = (bpp > 8 ? 24 : 8); lpbiNew = (LPBITMAPINFOHEADER)UserLocalAlloc(0, sizeof(BITMAPINFOHEADER) + (256 * sizeof(RGBQUAD)) + (UINT)((((dxD * bpp) / 8) + 3) & ~3) * (UINT)dyD); if (lpbiNew) { *lpbiNew = lpbi->bmiHeader; lpbiNew->biWidth = dxD; lpbiNew->biHeight = dyD; lpbiNew->biBitCount = bpp; lpBitsNew = (LPBYTE)lpbiNew + sizeof(BITMAPINFOHEADER) + (256 * sizeof(RGBQUAD)); if (ScaleDIB((LPBITMAPINFOHEADER)lpbi, (LPVOID)lpBits, lpbiNew, lpBitsNew)) { lpbi = (LPBITMAPINFO)lpbiNew; lpBits = lpBitsNew; dxS = dxD; dyS = dyD; } } } i = StretchDIBits(hdc, xD, yD, dxD, dyD, xS, yS, dxS, dyS, lpBits, lpbi, wUsage, rop); if (lpbiNew) UserLocalFree(lpbiNew); return i; }
WINUSERAPI HANDLE WINAPI SetSysColorsTemp( CONST COLORREF *lpRGBs, CONST HBRUSH *lpBrushes, UINT_PTR cBrushes) // Count of brushes or handle { UINT cbRGBSize; UINT i; UINT abElements[COLOR_MAX]; /* * See if we are resetting the colors back to a saved state */ if (lpRGBs == NULL) { /* * When restoring cBrushes is really a handle to the old global * handle. Make sure that is true. Also lpBrushes is unused */ UNREFERENCED_PARAMETER(lpBrushes); UserAssert(lpBrushes == NULL); UserAssert(cBrushes == (ULONG_PTR)gpOriginalRGBs); if (gpOriginalRGBs == NULL) { RIPMSG0(RIP_ERROR, "SetSysColorsTemp: Can not restore if not saved"); return NULL; } /* * reset the global Colors */ UserAssert((sizeof(abElements)/sizeof(abElements[0])) >= gcOriginalRGBs); for (i = 0; i < gcOriginalRGBs; i++) abElements[i] = i; NtUserSetSysColors(gcOriginalRGBs, abElements, gpOriginalRGBs, 0); UserLocalFree(gpOriginalRGBs); gpOriginalRGBs = NULL; gcOriginalRGBs = 0; return (HANDLE)TRUE; } /* * Make sure we aren't trying to set too many colors * If we allow more then COLOR_MAX change the abElements array */ if (cBrushes > COLOR_MAX) { RIPMSG1(RIP_ERROR, "SetSysColorsTemp: trying to set too many colors %lX", cBrushes); return NULL; } /* * If we have already a saved state then don't let them save it again */ if (gpOriginalRGBs != NULL) { RIPMSG0(RIP_ERROR, "SetSysColorsTemp: temp colors already set"); return NULL; } /* * If we are here then we must be setting the new temp colors * * First save the old colors */ cbRGBSize = sizeof(COLORREF) * (UINT)cBrushes; UserAssert(sizeof(COLORREF) == sizeof(int)); gpOriginalRGBs = UserLocalAlloc(HEAP_ZERO_MEMORY, cbRGBSize); if (gpOriginalRGBs == NULL) { RIPMSG0(RIP_WARNING, "SetSysColorsTemp: unable to alloc temp colors buffer"); } RtlCopyMemory(gpOriginalRGBs, gpsi->argbSystem, cbRGBSize); /* * Now set the new colors. */ UserAssert( (sizeof(abElements)/sizeof(abElements[0])) >= cBrushes); for (i = 0; i < cBrushes; i++) abElements[i] = i; NtUserSetSysColors((UINT)cBrushes, abElements, lpRGBs, 0); gcOriginalRGBs = (UINT)cBrushes; return gpOriginalRGBs; }
/***************************************************************************\ * ImmInitializeHotkeys() * * Called from user\client\UpdatePerUserSystemParameters() * * Read the User registry and set the IME hotkey. * * History: * 25-Mar-1996 TakaoK Created \***************************************************************************/ VOID CliImmInitializeHotKeys(DWORD dwAction, HKL hkl) { FE_KEYBOARDS feKbds = { 0, 0, 0, 0, }; BOOL fFoundAny; UNREFERENCED_PARAMETER(hkl); // First, initialize the hotkey list CliImmSetHotKeyWorker(0, 0, 0, NULL, ISHK_INITIALIZE); // Check if the user has customized IME hotkeys // (they're stored in the registry) fFoundAny = CliGetImeHotKeysFromRegistry(); if (dwAction == ISHK_INITIALIZE) { TAGMSG0(DBGTAG_IMM, "Setting IME HotKeys for Init.\n"); // Get the user's default locale and set its flag SetFeKeyboardFlags(LANGIDFROMLCID(GetUserDefaultLCID()), &feKbds); // Get preloaded keyboards' locales and set their flags CliGetPreloadKeyboardLayouts(&feKbds); } else { UINT i; UINT nLayouts; LPHKL lphkl; TAGMSG0(DBGTAG_IMM, "Setting IME HotKeys for Add.\n"); nLayouts = NtUserGetKeyboardLayoutList(0, NULL); if (nLayouts == 0) { return; } lphkl = UserLocalAlloc(0, nLayouts * sizeof(HKL)); if (lphkl == NULL) { return; } NtUserGetKeyboardLayoutList(nLayouts, lphkl); for (i = 0; i < nLayouts; ++i) { // // Set language flags. By its definition, LOWORD(hkl) is LANGID // SetFeKeyboardFlags(LOWORD(HandleToUlong(lphkl[i])), &feKbds); } UserLocalFree(lphkl); } if (feKbds.fJPN) { TAGMSG0(DBGTAG_IMM, "JPN KL Preloaded.\n"); CliSetDefaultImeHotKeys(DefaultHotKeyTableJ, DefaultHotKeyNumJ, fFoundAny); } if (feKbds.fKOR) { TAGMSG0(DBGTAG_IMM, "KOR KL Preloaded, but KOR hotkeys will not be registered.\n"); } if (feKbds.fCHT) { TAGMSG0(DBGTAG_IMM, "CHT KL Preloaded.\n"); CliSetDefaultImeHotKeys(DefaultHotKeyTableT, DefaultHotKeyNumT, fFoundAny); } if (feKbds.fCHS) { TAGMSG0(DBGTAG_IMM, "CHS KL Preloaded.\n"); CliSetDefaultImeHotKeys(DefaultHotKeyTableC, DefaultHotKeyNumC, fFoundAny); } }