winutil.cpp
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // winutil.h
  2. // 
  3. // Copyright (C) 2002, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #include "winutil.h"
  10. void SetMouseCursor(LPCTSTR lpCursor)
  11. {
  12. HCURSOR hNewCrsr;
  13. if (hNewCrsr = LoadCursor(NULL, lpCursor))
  14.     SetCursor(hNewCrsr);
  15. }
  16. void CenterWindow(HWND hParent, HWND hWnd)
  17. {
  18.     //Center window with hWnd handle relative to hParent.
  19.     if (hParent && hWnd)
  20.     {
  21.         RECT or, ir;
  22.         if (GetWindowRect(hParent, &or))
  23.         {
  24.             if (GetWindowRect(hWnd, &ir))
  25.             {
  26.                 int x, y;
  27.                 x = or.left + (or.right - or.left - (ir.right - ir.left)) / 2;
  28.                 y = or.top + (or.bottom - or.top - (ir.bottom - ir.top)) / 2;;
  29.                 SetWindowPos(hWnd, HWND_TOP, x, y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
  30.             }
  31.         }
  32.     }
  33. }
  34. void RemoveButtonDefaultStyle(HWND hWnd)
  35. {
  36.     SetWindowLong(hWnd, GWL_STYLE,
  37. ::GetWindowLong(hWnd, GWL_STYLE) & ~BS_DEFPUSHBUTTON);
  38. InvalidateRect(hWnd, NULL, TRUE);
  39. }
  40. void AddButtonDefaultStyle(HWND hWnd)
  41. {
  42.     SetWindowLong(hWnd, GWL_STYLE,
  43.         ::GetWindowLong(hWnd, GWL_STYLE) | BS_DEFPUSHBUTTON);
  44. InvalidateRect(hWnd, NULL, TRUE);
  45. }
  46. const char* CurrentCP()
  47. {
  48.     static bool set = false;
  49.     static char cp[20] = "CP";
  50.     if (!set) {
  51.         GetLocaleInfo(GetThreadLocale(), LOCALE_IDEFAULTANSICODEPAGE, cp+2, 18);
  52.         set = true;
  53.     }
  54.     return cp;
  55. }
  56. string UTF8ToCurrentCP(const string& str)
  57. {
  58.     string localeStr;
  59.     LPWSTR wout = new wchar_t[str.length() + 1];
  60.     LPSTR out = new char[str.length() + 1];
  61.     int wlength = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, wout, str.length() + 1);
  62.     WideCharToMultiByte(CP_ACP, 0, wout, -1, out, str.length() + 1, NULL, NULL);
  63.     localeStr = out;
  64.     delete [] wout;
  65.     delete [] out;
  66.     return localeStr;
  67. }