• DeleteDC、ReleaseDC 、DeleteObject的使用


    DeleteDC  

    该函数删除指定的设备上下文环境(DC)。

    原型:

    BOOL DeleteDC(HDC hdc);

    参数:

    hdc:设备上下文环境的句柄。

    返回值:

       成功,返回非零值;失败,返回零。调用GetLastError获取扩展错误信息。

    说明:

       如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它应该调用ReleaseDC函数来释放该设备上下文环境。

    ReleaseDC   

    函数释放设备上下文环境(DC)供其他应用程序使用。函数的效果与设备上下文环境类型有关。

    原型:

    int ReleaseDC(HWND hWnd, HDC hdc);

    参数:

    hWnd:指向要释放的设备上下文环境所在的窗口的句柄。

    hDC:指向要释放的设备上下文环境的句柄。

    返回值:

       返回值说明了设备上下文环境是否释放;如果释放成功,则返回值为1;如果没有释放成功,则返回值为0。

    说明:

       每次调用GetWindowDCGetDC函数检索公用设备上下文环境之后,应用程序必须调用ReleaseDC函数来释放设备上下文环境。

       应用程序不能调用ReleaseDC函数来释放由CreateDC、CreateCopatibleDC 函数创建的设备上下文环境,只能使用DeleteDC函数。

    DeleteObject

    该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。

    原型:

    BOOL DeleteObject(HGDIOBJ hObject);

    参数:

    hObject:逻辑笔、画笔、字体、位图、区域或者调色板的句柄。

    返回值

       成功,返回非零值;如果指定的句柄无效或者它已被选入设备上下文环境,则返回值为零。调用GetLastError获取扩展错误信息。

    说明:

       当一个绘画对象(如笔或画笔)当前被选入一个设备上下文环境时不要删除该对象。当一个调色板画笔被删除时,与该画笔相关的位图并不被删除,该图必须单独地删除。

    例子:

    var hMemBackground = (IntPtr)0;
                var hBmpBackground = (IntPtr)0;
                var formHandle = (IntPtr)0;
    
      formHandle = GetDC(this.CallHandle);
                    hMemBackground =CreateCompatibleDC(formHandle);
                    hBmpBackground = Bitmap.GetHbitmap();//创建DUI位图对象          
                  SelectObject(hMemBackground, hBmpBackground);
    
     
    
     if (hBmpBackground != (IntPtr)0)              
           EasyWayLEDDriver.DeleteObject(hBmpBackground);
    
                    if (hMemBackground != (IntPtr)0)         
                EasyWayLEDDriver.DeleteDC(hMemBackground);
    
                    if (formHandle != (IntPtr)0)                
         EasyWayLEDDriver.ReleaseDC(_thrLedParam.CallHandle, formHandle);
    
  • 相关阅读:
    get函数理解
    get函数理解
    Absolute C++ 第9章字符串 编程练习4
    Absolute C++ 第9章字符串 编程练习4
    Absolute C++ 第9章字符串 编程练习4
    Absolute C++ 第9章字符串 编程练习4
    C字符串使用陷阱 “=”和“==” 学习笔记
    [Android]ListView中分割线的设置
    如何在adapter 中调用activity的方法
    Android开发中Handler的经典总结
  • 原文地址:https://www.cnblogs.com/hellosnowy/p/3718661.html
Copyright © 2020-2023  润新知