⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tkwingdi.c

📁 linux系统下的音频通信
💻 C
📖 第 1 页 / 共 5 页
字号:
                         devPtr->hobjs[selTest[i].type]);#ifdef CKGRAPH_DEBUG        /*         * look if the current object is owned by us         */         if(CkGraphFindObject(selTest[i].type,(ClientData)hsel)==NULL) {            dprintf("    %-12.12s 0x%8.8x isn't owned by us\n","ERROR",                         hsel);         }#endif       }       /* select back */       if(selTest[i].type==CKOBJ_PAL) {         SelectPalette(devPtr->hdc,hsel,TRUE);       } else {         SelectObject(devPtr->hdc,hsel);       }     }  }}#ifdef CKGRAPH_DEBUGint CkGraph_DumpActiveObjects (char* fileName){    FILE              *fileP;    GdiObj *objPtr;    int i=0;    if(fileName)      if((fileP = fopen (fileName, "a"))==(FILE*)0)        return 0;    /*go to the end*/    for (objPtr = gdiObjlistPtr; objPtr; objPtr = objPtr->next)      if(!objPtr->next)        break;    for (; objPtr ; objPtr=objPtr->prev,i++) {      if(!fileName)  {        dprintf ("%d:%-12.12s %8lx %s %d\n",i,            obj_type(objPtr->type),objPtr->handle,objPtr->file,objPtr->line);        if(isDC(objPtr->type)) {          GdiContext* devhead=FINDCONTEXT((HDC)objPtr->handle);          if (devhead!=NULL){            dprintf("   defbitmap=0x%x\n",devhead->defaultbitmap);          }        }      } else {        fprintf (fileP, "%-12.12s 0x%x %s %d\n",         obj_type(objPtr->type),objPtr->handle,objPtr->file,objPtr->line);      }    }    if(fileName)      fclose (fileP);    return 1;}//if debugging is off Windows-CreatePen a.s.o is usedHPEN CkGraph_CreatePen(int fnPenStyle,int nWidth,COLORREF  crColor,char* file,int line){  HPEN hpen;  if((hpen=CreatePen(fnPenStyle,nWidth,crColor))==(HPEN)0){    dprintf("CkCreatePen failed in %s %d\n",file,line);    return (HPEN)0;  }  tkWinGdi_CreatePen++;  GTRACE(("%d:CreatePen(..,%d,%0x%x) return 0x%x in %s %d\n",tkWinGdi_CreatePen,nWidth,crColor,hpen,file,line);)  CkGraphCreateObject(CKOBJ_PEN,(ClientData)hpen,file,line);  return hpen;}HPEN CkGraph_ExtCreatePen(DWORD dwPenStyle,DWORD dwWidth,CONST LOGBRUSH* lplb,                          DWORD dwStyleCount, CONST DWORD* lpStyle,                          char* file,int line){  HPEN hpen;  if((hpen=ExtCreatePen(dwPenStyle,dwWidth,lplb,dwStyleCount,lpStyle))==(HPEN)0){    dprintf("CkExtCreatePen failed in %s %d\n",file,line);    return (HPEN)0;  }  /* do create a PEN instead a EXTPEN , cause it's used in the same meaning*/  CkGraphCreateObject(CKOBJ_PEN,(ClientData)hpen,file,line);  tkWinGdi_ExtCreatePen++;  GTRACE(("%d:ExtCreatePen(..,%d,%0x%x) return 0x%x in %s %d\n",tkWinGdi_ExtCreatePen,dwWidth,lplb->lbColor,hpen,file,line);)  return hpen;}HBRUSH CkGraph_CreateSolidBrush(COLORREF crColor,char* file,int line){  HBRUSH hbrush;  if((hbrush=CreateSolidBrush(crColor))==(HBRUSH)0){    dprintf("CkCreateSolidBrush failed in %s %d\n",file,line);    return (HBRUSH)0;  }  CkGraphCreateObject(CKOBJ_BRUSH,(ClientData)hbrush,file,line);  tkWinGdi_CreateSolidBrush++;  GTRACE(("%d:CreateSolidBrush(0x%x) return 0x%x in %s %d\n",tkWinGdi_CreateSolidBrush,crColor,hbrush,file,line);)  return hbrush;}HBRUSH CkGraph_CreatePatternBrush(HBITMAP hbitmap,char* file,int line){  HBRUSH hbrush;  if((hbrush=CreatePatternBrush(hbitmap))==(HBRUSH)0){    dprintf("CkCreatePatternBrush(0x%x) failed in %s %d\n",hbitmap,file,line);    return (HBRUSH)0;  }  CkGraphCreateObject(CKOBJ_BRUSH,(ClientData)hbrush,file,line);  tkWinGdi_CreatePatternBrush++;  GTRACE(("%d:CreatePatternBrush(0x%x) return 0x%x in %s %d\n",tkWinGdi_CreatePatternBrush,hbitmap,hbrush,file,line);)  return hbrush;}HBITMAP CkGraph_CreateDIBitmap(HDC hdc, BITMAPINFOHEADER *lpbmih,                               DWORD fdwInit, VOID*lpbInit,                                BITMAPINFO *lpbmi,UINT fuUsage,char* file,int line){  HBITMAP hbitmap;  if((hbitmap = CreateDIBitmap(hdc,lpbmih,fdwInit,lpbInit,lpbmi,fuUsage))==(HBITMAP)0){    dprintf("CkCreateDIBitmap failed in %s %d\n",file,line);    return (HBITMAP)0;  }  CkGraphCreateObject(CKOBJ_BITMAP,(ClientData)hbitmap,file,line);  tkWinGdi_CreateDIBitmap++;  GTRACE(("%d:CreateDIBitmap(0x%x,..) return 0x%x in %s %d\n",tkWinGdi_CreateDIBitmap,hdc,hbitmap,file,line);)  return hbitmap;}HBITMAP CkGraph_CreateCompatibleBitmap(HDC hdc,int nWidth,int nHeight,char* file,int line){  HBITMAP hbitmap;  if((hbitmap = CreateCompatibleBitmap(hdc,nWidth,nHeight))==(HBITMAP)0){    dprintf("CkCreateCompatibleBitmap failed in %s %d\n",file,line);    return (HBITMAP)0;  }  CkGraphCreateObject(CKOBJ_BITMAP,(ClientData)hbitmap,file,line);  tkWinGdi_CreateCompatibleBitmap++;  GTRACE(("%d:CreateCompatibleBitmap(0x%x,%d,%d) return 0x%x in %s %d\n",tkWinGdi_CreateCompatibleBitmap,hdc,nWidth,nHeight,hbitmap,file,line);)  return hbitmap;}HBITMAP CkGraph_LoadBitmap(HINSTANCE hinst,LPCTSTR lpszBitmap,char* file,int line){  HBITMAP hbitmap;  if((hbitmap = LoadBitmap(hinst,lpszBitmap))==(HBITMAP)0){    dprintf("CkLoadBitmap failed in %s %d\n",file,line);    return (HBITMAP)0;  }  CkGraphCreateObject(CKOBJ_BITMAP,(ClientData)hbitmap,file,line);  tkWinGdi_LoadBitmap++;  GTRACE(("%d:LoadBitmap(..,%s) return 0x%x in %s %d\n",tkWinGdi_LoadBitmap,lpszBitmap,hbitmap,file,line);)  return hbitmap;}HBITMAP CkGraph_CreateBitmap(int nWidth,int nHeight,UINT cPlanes,UINT cBitsPerPel,                            VOID* lpvBits,char* file,int line){  HBITMAP hbitmap;  if((hbitmap = CreateBitmap(nWidth,nHeight,cPlanes,cBitsPerPel,lpvBits))==(HBITMAP)0){    dprintf("CkCreateBitmap failed in %s %d\n",file,line);    return (HBITMAP)0;  }  CkGraphCreateObject(CKOBJ_BITMAP,(ClientData)hbitmap,file,line);  tkWinGdi_CreateBitmap++;  GTRACE(("%d:CreateBitmap(%d,%d,%d,%d,...) return 0x%x in %s %d\n",tkWinGdi_CreateBitmap,nWidth,nHeight,cPlanes,cBitsPerPel,hbitmap,file,line);)  return hbitmap;}HRGN CkGraph_CreateRectRgn(int nLeftRect,int nTopRect,int nRightRect,int nBottomRect,char* file,int line){  HRGN hrgn;  if((hrgn = CreateRectRgn(nLeftRect,nTopRect,nRightRect,nBottomRect))==(HRGN)0){    dprintf("CkCreateRectRgn failed in %s %d\n",file,line);    return (HRGN)0;  }  CkGraphCreateObject(CKOBJ_REGION,(ClientData)hrgn,file,line);  tkWinGdi_CreateRectRgn++;  GTRACE(("%d:CreateRectRgn(%d,%d,%d,%d) return 0x%x in %s %d\n",tkWinGdi_CreateRectRgn,nLeftRect,nTopRect,nRightRect,nBottomRect,hrgn,file,line);)  return hrgn;}HFONT CkGraph_CreateFontIndirect( LOGFONT* lplogfont,char* file,int line){  HFONT hfont;  if((hfont = CreateFontIndirect(lplogfont))==(HFONT)0){    dprintf("CkCreateFontIndirect failed in %s %d\n",file,line);    return (HFONT)0;  }  CkGraphCreateObject(CKOBJ_FONT,(ClientData)hfont,file,line);  tkWinGdi_CreateFontIndirect++;  GTRACE(("%d:CreateFontIndirect(%s,%d) return 0x%x in %s %d\n",tkWinGdi_CreateFontIndirect,lplogfont->lfFaceName,lplogfont->lfHeight,hfont,file,line);)  return hfont;}#endif /*CKGRAPH_DEBUG*/int j;typedef struct PalObj {  HPALETTE       hpal;  struct PalObj *next;} PalObj;/*  * in this List all gdi-allocated palettes are stored */static PalObj *allocPals = (PalObj*)0;  static PalObj *freePals = (PalObj*)0;  /* adds a Palette to a given paletteList */void AddPalObj(PalObj** rootPtrPtr,HPALETTE hpal) {  PalObj* newPtr=(PalObj*)ckalloc(sizeof(PalObj));  newPtr->hpal = hpal;  newPtr->next = *rootPtrPtr;  *rootPtrPtr  = newPtr ;}/* deletes a Palette from a given paletteList */void RemovePalObj(PalObj** rootPtrPtr,HPALETTE hpal) {  PalObj *currPtr;  PalObj *prevPtr;  PalObj *nextPtr;  for (prevPtr = NULL, currPtr = *rootPtrPtr;        currPtr != NULL;       prevPtr = currPtr , currPtr = nextPtr ) {    nextPtr = currPtr->next;    if(currPtr->hpal==hpal) {      /* we found our candidate so remove it */      if (currPtr==*rootPtrPtr) {        *rootPtrPtr = currPtr->next;      } else {        prevPtr->next = currPtr->next;      }      ckfree((char*)currPtr);    }   }}/* walks through a palette list and tries to free the hpal gdiobject *//* if this was successful , the palette is deleted from the list */static void TryFreePalettes(PalObj** rootPtrPtr) {  PalObj *currPtr;  PalObj *prevPtr;  PalObj *nextPtr;  for (prevPtr = NULL, currPtr = *rootPtrPtr;        currPtr != NULL;       prevPtr = currPtr , currPtr = nextPtr ) {    nextPtr = currPtr->next;    if(DeleteObject(currPtr->hpal)) {#ifdef CKGRAPH_DEBUG     dprintf("successful removed palette 0x%x in TryFreePalettes\n",        currPtr->hpal);     CkGraphDeleteObject(CKOBJ_PAL,(HGDIOBJ)currPtr->hpal,__FILE__,__LINE__);#endif      /* delete object was successful, so remove the thing */      if(currPtr==*rootPtrPtr) {        *rootPtrPtr=currPtr->next;      } else {        prevPtr->next=currPtr->next;      }      ckfree((char*)currPtr);    } else {#ifdef CKGRAPH_DEBUG     dprintf("failed removing palette 0x%x in TryFreePalettes\n",        currPtr->hpal);#endif    }  }}#ifdef CKGRAPH_DEBUGHPALETTE CkGraph_CreatePalette( LOGPALETTE* lplogpal,char* file,int line)#elseHPALETTE CkGraph_CreatePalette( LOGPALETTE* lplogpal)#endif{  HPALETTE hpal;  if((hpal = CreatePalette(lplogpal))==(HPALETTE)0){#ifdef CKGRAPH_DEBUG    dprintf("CkCreatePalette failed in %s %d\n",file,line);#endif    return (HPALETTE)0;  }#ifdef CKGRAPH_DEBUG  CkGraphCreateObject(CKOBJ_PAL,(ClientData)hpal,file,line);  tkWinGdi_CreatePalette++;  GTRACE(("%d:CreatePalette(%d) return 0x%x in %s %d\n",tkWinGdi_CreatePalette,lplogpal->palNumEntries,hpal,file,line);)#endif  AddPalObj(&allocPals,hpal);  return hpal;}#ifdef CKGRAPH_DEBUGHGDIOBJ CkGraph_GetStockObject(int stockobj,char* file,int line)#elseHGDIOBJ CkGraph_GetStockObject(int stockobj)#endif /*CKGRAPH_DEBUG*/{  HGDIOBJ hobj=NULL;  switch(stockobj){    case NULL_PEN:      hobj=stock_NULL_PEN;break;    case WHITE_PEN:      hobj=stock_WHITE_PEN;break;    case BLACK_PEN:      hobj=stock_BLACK_PEN;break;    case NULL_BRUSH:      hobj=stock_NULL_BRUSH;break;    case WHITE_BRUSH:      hobj=stock_WHITE_BRUSH;break;    case BLACK_BRUSH:      hobj=stock_BLACK_BRUSH;break;    case GRAY_BRUSH:      hobj=stock_GRAY_BRUSH;break;    case DKGRAY_BRUSH:      hobj=stock_DKGRAY_BRUSH;break;    case LTGRAY_BRUSH:      hobj=stock_LTGRAY_BRUSH;break;    case SYSTEM_FONT:      hobj=stock_SYSTEM_FONT;break;    case OEM_FIXED_FONT:      hobj=stock_OEM_FIXED_FONT;break;    case SYSTEM_FIXED_FONT:      hobj=stock_SYSTEM_FIXED_FONT;break;    case ANSI_VAR_FONT:      hobj=stock_ANSI_VAR_FONT;break;    case ANSI_FIXED_FONT:      hobj=stock_ANSI_FIXED_FONT;break;    case DEVICE_DEFAULT_FONT:      hobj=stock_DEVICE_DEFAULT_FONT;break;    case DEFAULT_PALETTE:      hobj=stock_DEFAULT_PALETTE;break;#ifdef CKGRAPH_DEBUG    default:      dprintf("unknown stockobject %d\n",stockobj);#endif  }#ifdef CKGRAPH_DEBUG  if(hobj==NULL){    dprintf("CkGetStockObject failed in %s %d\n",file,line);  }#endif  return hobj;}#ifdef CKGRAPH_DEBUGHDC CkGraph_GetDC(HWND hwnd,char* file,int line)#elseHDC CkGraph_GetDC(HWND hwnd)#endif{  HDC hdc;  if((hdc=GetDC(hwnd))==(HDC)0){#ifdef CKGRAPH_DEBUG    dprintf("CkGetDC failed in %s %d\n",file,line);#endif    return (HDC)0;  }#ifdef CKGRAPH_DEBUG  CkGraphCreateObject(CKOBJ_DC,(ClientData)hdc,file,line);  tkWinGdi_GetDC++;  GTRACE(("%d:GetDC(0x%x) return 0x%x in %s %d\n",tkWinGdi_GetDC,hwnd,hdc,file,line);)#endif  CkGraphCreateDeviceContext(CKOBJ_DC,hdc);  return hdc;}#ifdef CKGRAPH_DEBUGHDC CkGraph_CreateDC(LPCTSTR lpszDriver,LPCTSTR lpszDevice,LPCTSTR lpszOutput,                     CONST DEVMODE* lpInitData,char* file,int line)#elseHDC CkGraph_CreateDC(LPCTSTR lpszDriver,LPCTSTR lpszDevice,LPCTSTR lpszOutput,                     CONST DEVMODE* lpInitData)#endif{  HDC hdc;  if((hdc=CreateDC(lpszDriver,lpszDevice,lpszOutput,lpInitData))==(HDC)0){#ifdef CKGRAPH_DEBUG    dprintf("CkCreateDC failed in %s %d\n",file,line);#endif    return (HDC)0;  }#ifdef CKGRAPH_DEBUG  {    int type;    if(Wtk_test_win32s())      type=CKOBJ_DC;    else {      if((type=GetObjectType(hdc))!=CKOBJ_DC){        dprintf("ObjectType in CkCreateCompatibleDC is %s\n",obj_type(type));      }    }    CkGraphCreateObject(type,(ClientData)hdc,file,line);    tkWinGdi_CreateDC++;  }  GTRACE(("%d:CreateDC(%s,..) return 0x%x in %s %d\n",tkWinGdi_CreateDC,lpszDriver,hdc,file,line);)#endif  CkGraphCreateDeviceContext(CKOBJ_DC,hdc);  return hdc;}#ifdef CKGRAPH_DEBUGint CkGraph_ReleaseDC(HWND hwnd,HDC hdc,char* file,int line)#elseint CkGraph_ReleaseDC(HWND hwnd,HDC hdc)#endif{  int result;  result=ReleaseDC(hwnd,hdc);#ifdef CKGRAPH_DEBUG  if(!result)    dprintf("CkReleaseDC failed in %s %d\n",file,line);  CkGraphDeleteObject(CKOBJ_DC,(ClientData)hdc,file,line);  tkWinGdi_ReleaseDC++;  GTRACE(("%d:ReleaseDC(0x%x,0x%x) return 0x%x in %s %d\n",tkWinGdi_ReleaseDC,hwnd,hdc,result,file,line);)#endif  CkGraphDeleteDeviceContext(hdc);  return result;}#ifdef CKGRAPH_DEBUGHDC CkGraph_CreateCompatibleDC(HDC hdc,char* file,int line)#elseHDC CkGraph_CreateCompatibleDC(HDC hdc)#endif{  HDC hdcmem;  if((hdcmem=CreateCompatibleDC(hdc))==(HDC)0){#ifdef CKGRAPH_DEBUG    dprintf("CkCreateCompatibleDC(0x%x) failed in %s %d\n",hdc,file,line);#endif    return (HDC)0;  }#ifdef CKGRAPH_DEBUG  {    int type;    if(Wtk_test_win32s())      type=CKOBJ_MEMDC;    else {      if((type=GetObjectType(hdcmem))!=CKOBJ_MEMDC){        dprintf("ObjectType in CkCreateCompatibleDC is %s\n",obj_type(type));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -