www.pudn.com > ControlRemote.zip > Gdi.c
#include "Gdi.h" #include "Server.h" #include// 添加一个元素到GDI链表 struct GdiList *Add_Gdi(struct GdiList *pNode,struct GdiDS Gdi) { // 添加到链表的末尾 if (pNode->pNext = (struct GdiList *)malloc(sizeof(struct GdiList))) { pNode = pNode->pNext; // 添加网格坐标 pNode->Gdi.iGridX = Gdi.iGridX; pNode->Gdi.iGridY = Gdi.iGridY; // 设置区域的矩形坐标 pNode->Gdi.iWidth1 = Gdi.iWidth1; pNode->Gdi.iWidth2 = Gdi.iWidth2; pNode->Gdi.iHeight1 = Gdi.iHeight1; pNode->Gdi.iHeight2 = Gdi.iHeight2; // 设置DIB颜色表的颜色数 pNode->Gdi.nColors = Gdi.nColors; // 设置DIB信息头的字节数 pNode->Gdi.dwBitMapHeader = Gdi.dwBitMapHeader; // 设置位图长度和起始坐标 pNode->Gdi.dwLen = Gdi.dwLen; pNode->Gdi.dwCompress = Gdi.dwCompress; pNode->Gdi.iStartPos = Gdi.iStartPos; //设置DIB pNode->Gdi.DIBitmap = Gdi.DIBitmap; // 设置DIB信息头 pNode->Gdi.BMIH = Gdi.BMIH; // 设置DIB信息头的指针 pNode->Gdi.lpBMIH = Gdi.lpBMIH; // 设置区域的装置设备句柄 pNode->Gdi.hMemDC = Gdi.hMemDC; // 设置区域的位图句柄 pNode->Gdi.hDIBitmap = Gdi.hDIBitmap; // 区域无压缩DIB的指针 pNode->Gdi.pDIB = Gdi.pDIB; //设置指向区域DIB变化的部分的指针 pNode->Gdi.pDIBChange = Gdi.pDIBChange; //设置指向压缩区域的DIB的指针 pNode->Gdi.pDIBCompress = Gdi.pDIBCompress; //设置指向全局区域位图指针 pNode->Gdi.pDIBitmap = Gdi.pDIBitmap; // 区域位图标志 pNode->Gdi.fDIBitmap = Gdi.fDIBitmap; pNode->Gdi.fChange = Gdi.fChange; pNode->pNext = NULL; return pNode; } return NULL; } // 完全清楚GDI链表 void Clear_Gdi(struct GdiList *pStart) { struct GdiList *pPrev; struct GdiList *pNode; while (pNode = pStart->pNext) { pPrev = pStart; pPrev->pNext = pNode->pNext; DeleteDC(pNode->Gdi.hMemDC); DeleteObject(pNode->Gdi.hDIBitmap); if (pNode->Gdi.fDIBitmap) { free(pNode->Gdi.pDIBitmap); free(pNode->Gdi.pDIB); free(pNode->Gdi.pDIBChangeStart); } free(pNode); } }