System.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:2k
源码类别:

图形图象

开发平台:

Visual C++

  1. /********************************************************************
  2. System.cpp - ISee图像浏览器—图像处理模块图像内存分配和删除实现函
  3. 数代码文件
  4.     版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
  5.     这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
  6. 条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
  7. 的选择)用任何更新的版本。
  8.     发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
  9. 目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
  10.     你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
  11. 写信给:
  12.     The Free Software Foundation, Inc.,  675  Mass Ave,  Cambridge,
  13.     MA02139,  USA
  14. 如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
  15. 系:
  16. http://isee.126.com
  17. http://www.vchelp.net
  18. 或:
  19. iseesoft@china.com
  20. 作者:马翔
  21.    e-mail:hugesoft@yeah.net
  22.    功能实现:内存分配和删除等公用功能
  23. 文件版本:
  24. Build 000123
  25. Date  2000-12-3
  26. ********************************************************************/
  27. #include "stdafx.h"
  28. #include "System.h"
  29. #include "mmsystem.h"
  30. // 分配内存函数,这里借用了临风的格式
  31. LPVOID New(DWORD dwSize)
  32. {
  33. HGLOBAL hgMem;
  34. hgMem=GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,dwSize);
  35. if(hgMem==NULL)
  36. {
  37. AfxMessageBox("内存分配失败,请检查虚拟内存空间");
  38. return NULL;
  39. }
  40. return (LPVOID)hgMem;
  41. }
  42. // 释放内存函数,这里借用了临风的格式
  43. LPVOID Del(LPVOID lpv)
  44. {
  45. if(lpv!=NULL)
  46.     GlobalFree(lpv);
  47. return NULL;
  48. }
  49. // 创建内存图像函数
  50. BOOL CreatMemImage(LPIMAGEPROCSTR lpInfo)
  51. {
  52. //创建内存图像
  53. lpInfo->_pdbdata = (unsigned char*)New (lpInfo->sImageInfo.width*lpInfo->sImageInfo.height*(lpInfo->sImageInfo.bitperpix/8));
  54. if(lpInfo->_pdbdata==NULL)
  55. {
  56.     lpInfo->result=PR_MEMORYERR;
  57.     return PROCERR_FALSE;
  58. }
  59. //填写新建图像信息
  60. lpInfo->dImageInfo=lpInfo->sImageInfo;
  61. return TRUE;
  62. }
  63. // 延时函数,目前为未使用,我考滤以
  64. // 后可用它实现图象显示的淡入淡出
  65. void Delay(DWORD dwDelayTime)
  66. {
  67. DWORD dwTimeBegin,dwTimeEnd;
  68. dwTimeBegin=timeGetTime();
  69. do
  70. {
  71. dwTimeEnd=timeGetTime();
  72. }while(dwTimeEnd-dwTimeBegin<dwDelayTime);
  73. }
  74. // 排序函数,用于中值滤波,使用了新的
  75. // 算法后它暂时已无用
  76. int Compare(const void *e1,const void *e2)
  77. {
  78. if(*(BYTE*)e1<*(BYTE*)e2)
  79. return -1;
  80. if(*(BYTE*)e1>*(BYTE*)e2)
  81. return 1;
  82. return 0;
  83. }