BalloonTip.cpp
上传用户:lswyart
上传日期:2008-06-12
资源大小:3441k
文件大小:5k
源码类别:

杀毒

开发平台:

Visual C++

  1. /*-----------------------------------------------------------------------------
  2. # Name:        BalloonTip.cpp
  3. # Product:     ClamWin Antivirus
  4. # Author:      alch [alch at users dot sourceforge dot net]
  5. #
  6. # Created:     2004/11/05
  7. # Copyright:   Copyright alch (c) 2004
  8. # Licence:     
  9. #   This program is free software; you can redistribute it and/or modify
  10. #   it under the terms of the GNU General Public License as published by
  11. #   the Free Software Foundation; either version 2 of the License, or
  12. #   (at your option) any later version.
  13. #   This program is distributed in the hope that it will be useful,
  14. #   but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. #   GNU General Public License for more details.
  17. #   You should have received a copy of the GNU General Public License
  18. #   along with this program; if not, write to the Free Software
  19. #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20. #-----------------------------------------------------------------------------
  21. */
  22. // BalloonTip.cpp : Defines the initialization routines for the DLL.
  23. //
  24. #include "stdafx.h"
  25. #include <Python.h>
  26. #include "BalloonHelp.h"
  27. HINSTANCE g_hInstance = NULL; // Handle to this DLL itself.
  28. extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
  29. {
  30. if (dwReason == DLL_PROCESS_ATTACH)
  31. {
  32. g_hInstance = hInstance;
  33. }
  34. return 1;   // ok
  35. }
  36. // Parse parameters and dispatch to the actual function.
  37. PyObject *BalloonTip_ShowBalloonTip(PyObject *pSelf, PyObject *pArgs) {
  38. LPTSTR szTitle, szContent, szURL;
  39. PyObject *pPointTuple;
  40. INT x, y;
  41. INT nOptions, nTimeout, hParentWnd, nIcon;   
  42. if(!PyArg_ParseTuple(pArgs, "ssOiiisi", &szTitle, &szContent, &pPointTuple,
  43. &nIcon, &nOptions, &hParentWnd, &szURL, &nTimeout)) {
  44. PyErr_SetString(PyExc_StandardError, "ShowBalloonTip() takes 8 parameters");
  45. return NULL;
  46. }
  47. if(!PyArg_ParseTuple(pPointTuple, "ii", &x, &y)){
  48. PyErr_SetString(PyExc_StandardError, "ShowBalloon() third parameter must be tuple with 2 integers representing tooltip coordinates: (x, y)");
  49. return NULL;
  50. }
  51. POINT pt = {x, y};
  52. CBalloonHelp::LaunchBalloon(szTitle, szContent, 
  53.                pt, (LPCTSTR)nIcon, nOptions,
  54. (HWND)hParentWnd, szURL, nTimeout);
  55. Py_INCREF(Py_None);
  56. return Py_None;
  57. }
  58. extern "C"  __declspec(dllexport) void LaunchBalloon(LPCTSTR strTitle, LPCTSTR strContent, 
  59.                POINT& ptAnchor, 
  60.                LPCTSTR szIcon,
  61.                unsigned int unOptions,
  62.                HWND hParentWnd,
  63.                LPCTSTR strURL,
  64.                unsigned int unTimeout)
  65. {
  66. CBalloonHelp::LaunchBalloon(strTitle, strContent, 
  67.                ptAnchor, szIcon, unOptions,
  68. (HWND)hParentWnd, strURL, unTimeout);
  69. }
  70. static PyMethodDef BalloonTipMethods[] = {
  71. {"ShowBalloonTip", BalloonTip_ShowBalloonTip, METH_VARARGS, "Display the Balloon Tooltip at given location"},
  72. {NULL, NULL, 0, NULL}
  73. };
  74. // Initialize the BalloonTip module.
  75. extern "C"  __declspec(dllexport) void initBalloonTip(void) 
  76. {
  77. PyObject *module = Py_InitModule("BalloonTip", BalloonTipMethods);
  78. PyModule_AddIntConstant(module, "CLOSE_ON_LBUTTON_UP", CBalloonHelp::unCLOSE_ON_LBUTTON_UP);
  79. PyModule_AddIntConstant(module, "CLOSE_ON_MBUTTON_UP", CBalloonHelp::unCLOSE_ON_MBUTTON_UP);
  80. PyModule_AddIntConstant(module, "CLOSE_ON_RBUTTON_UP", CBalloonHelp::unCLOSE_ON_RBUTTON_UP);
  81. PyModule_AddIntConstant(module, "CLOSE_ON_LBUTTON_DOWN", CBalloonHelp::unCLOSE_ON_LBUTTON_DOWN);
  82. PyModule_AddIntConstant(module, "CLOSE_ON_MBUTTON_DOWN", CBalloonHelp::unCLOSE_ON_MBUTTON_DOWN);
  83. PyModule_AddIntConstant(module, "CLOSE_ON_RBUTTON_DOWN", CBalloonHelp::unCLOSE_ON_RBUTTON_DOWN);
  84. PyModule_AddIntConstant(module, "CLOSE_ON_MOUSE_MOVE", CBalloonHelp::unCLOSE_ON_MOUSE_MOVE);
  85. PyModule_AddIntConstant(module, "CLOSE_ON_KEYPRESS", CBalloonHelp::unCLOSE_ON_KEYPRESS);
  86. PyModule_AddIntConstant(module, "CLOSE_ON_ANYTHING", CBalloonHelp::unCLOSE_ON_ANYTHING);
  87. PyModule_AddIntConstant(module, "DELAY_CLOSE", CBalloonHelp::unDELAY_CLOSE);
  88. //PyModule_AddIntConstant(module, "unDELETE_THIS_ON_CLOSE", CBalloonHelp::unDELETE_THIS_ON_CLOSE);
  89. PyModule_AddIntConstant(module, "SHOW_CLOSE_BUTTON", CBalloonHelp::unSHOW_CLOSE_BUTTON);
  90. PyModule_AddIntConstant(module, "SHOW_INNER_SHADOW", CBalloonHelp::unSHOW_INNER_SHADOW);
  91. PyModule_AddIntConstant(module, "SHOW_TOPMOST", CBalloonHelp::unSHOW_TOPMOST);
  92. PyModule_AddIntConstant(module, "DISABLE_XP_SHADOW", CBalloonHelp::unDISABLE_XP_SHADOW);
  93. PyModule_AddIntConstant(module, "DISABLE_FADEIN", CBalloonHelp::unDISABLE_FADEIN);
  94. PyModule_AddIntConstant(module, "DISABLE_FADEOUT", CBalloonHelp::unDISABLE_FADEOUT);
  95. PyModule_AddIntConstant(module, "DISABLE_FADE", CBalloonHelp::unDISABLE_FADE);
  96. PyModule_AddStringConstant(module, "SHADOWED_CLASS", "BalloonHelpClassDS");
  97. PyModule_AddStringConstant(module, "SHADOWLESS_CLASS", "BalloonHelpClass");
  98. }