aboutdlg.cpp
上传用户:kittypts
上传日期:2018-02-11
资源大小:241k
文件大小:3k
源码类别:

PlugIns编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. Windows Live Messenger Plugin Demo
  3. Copyright (C) 2008  Hern醤 Di Pietro
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program.  If not, see <http://www.gnu.org/licenses/>.
  14. /*****************************************************************************/
  15. #include "wlmplugin.h" 
  16. #include "clrzwind.h"
  17. #include "aboutdlg.h"
  18. #include "../resdll/resource.h"
  19. static WNDPROC pfnColorizedWndProc;
  20. HWND g_hwndNktAbout;
  21. void CreateAboutDlg(HWND* pHWnd) 
  22. {
  23. *pHWnd = CreateWindowEx(NULL, wszColorizedWndClass, NULL, WS_POPUP, 
  24. CW_USEDEFAULT, CW_USEDEFAULT, CX_DIALOGSIZE, CY_DIALOGSIZE,
  25. NULL, NULL, hDllInst, NULL );
  26. // subclass
  27. if (*pHWnd)
  28. {
  29. pfnColorizedWndProc = (WNDPROC) GetWindowLongPtr(*pHWnd, GWLP_WNDPROC);
  30. SetWindowLongPtr(*pHWnd, GWLP_WNDPROC, (LONG_PTR)AboutDlgProc);
  31. }
  32. }
  33. LRESULT AboutDlgProc (HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam)
  34. {
  35. static bool fChildCreated = false;
  36. static HBITMAP hLogo;
  37. switch(uMsg)
  38. case WM_CREATECHILDCTRLS:
  39. if (!fChildCreated)
  40. {
  41. RECT r;
  42. HWND hOkButton;
  43. HFONT hfDefault;
  44. GetWindowRect(hwnd, &r);
  45. hOkButton = CreateWindow(L"button", L"OK", WS_VISIBLE | WS_TABSTOP | WS_CHILD | BS_DEFPUSHBUTTON,
  46. r.right - 80, r.bottom- 30, 60, 21, hwnd, (HMENU)ID_OK,  hDllInst, 0);
  47. hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
  48. SendMessage(hOkButton, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
  49. // Load logo bitmap
  50. hLogo = (HBITMAP) LoadImage (hResLib, MAKEINTRESOURCE(IDB_NKTLOGO), 
  51. IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);
  52. fChildCreated = true;
  53. break;
  54. }
  55. case WM_COMMAND:
  56. if (LOWORD(wparam) == ID_OK)
  57. AnimateWindow(hwnd, 300, AW_HIDE | AW_BLEND);
  58. break;
  59. case WM_PAINT:
  60. {
  61. PAINTSTRUCT ps;
  62. HDC hdc;
  63. BITMAP bm;
  64. HDC hdcMem;
  65. RECT textRect;
  66. hdc = BeginPaint(hwnd, &ps);
  67. hdcMem = CreateCompatibleDC(hdc);
  68. HBITMAP hbmpOld = (HBITMAP) SelectObject(hdcMem, hLogo);
  69. GetObject(hLogo, sizeof(bm), &bm); 
  70. TransparentBlt (hdc, 20, 20, bm.bmWidth, bm.bmHeight, hdcMem, 
  71. 0,0, bm.bmWidth, bm.bmHeight, RGB(255,0,240));
  72. SelectObject(hdcMem, hbmpOld);
  73. DeleteDC(hdcMem);
  74. SetBkMode(hdc, TRANSPARENT);
  75. SetRect(&textRect, 20, bm.bmHeight + 30, CX_DIALOGSIZE - 20, CY_DIALOGSIZE - 20);
  76. SetTextAlign(hdc,  TA_LEFT | TA_TOP | TA_NOUPDATECP);
  77. SelectObject(hdc, (HFONT)GetStockObject(DEFAULT_GUI_FONT));
  78. DrawText (hdc, wszMessage, -1, &textRect,  DT_LEFT | DT_WORDBREAK );
  79. EndPaint(hwnd, &ps);
  80. }
  81. return 0L;
  82. case WM_CLOSE:
  83. SendMessage (hwnd, WM_COMMAND, MAKEWPARAM(ID_OK, 0), 0);
  84. return 0L;
  85. }
  86. return CallWindowProc(pfnColorizedWndProc, hwnd, uMsg, wparam, lparam);
  87. }