VC常用函数介绍

来源:互联网 发布:董小枫淘宝店 编辑:程序博客网 时间:2024/05/16 09:48

############################################################################

BitBlt

原来是bit block transfer

http://msdn.microsoft.com/en-us/library/windows/desktop/dd183370(v=vs.85).aspx

The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destinationdevice context.

http://www.hudong.com/wiki/BitBlt

BitBlt - 函数功能

函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境

BitBlt - 函数原型

BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);

############################################################################

http://baike.baidu.com/view/1217951.htm

GetSafeHwnd

 

  当我们想得到一个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数,通过下面的例子来看其理由:
  CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器
  HWND hwnd = pwnd->m_hwnd; //得到它的HWND
  这样的代码当开始得到的pwnd为空的时候就会出现一个“General protection error”,并关闭应用程序,因为一般不能对一个NULL指针访问其成员,如果用下面的代码:
  CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器
  HWND hwnd = pwnd->GetSafeHwnd(); //得到它的HWND
  就不会出现问题,因为尽管当pwnd是NULL时,GetSafeHwnd仍然可以用,只是返回NULL,通过GetSafeHwnd()的实现代码就更清楚了:
  _AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
  {
  return this == NULL?NULL:m_hWnd;
  }

############################################################################

http://msdn.microsoft.com/en-us/library/windows/desktop/dd144877(v=vs.85).aspx

GetDeviceCaps是VC程序中的一个函数,这个函数可以访问使用设备描述表的设备数据,应用程序指定相应设备描述表的句柄和说明该函数访问数据类型的索引来访问这些数据.

m_nBitsPixel = ::GetDeviceCaps(hDc, BITSPIXEL);

BITSPIXEL

Number of adjacent color bits for each pixel.

############################################################################

CreateCompatibleDC - 函数功能

函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。

    函数原型:HDC CreateCompatibleDC(HDC hdc);

http://zhidao.baidu.com/question/149613341

你首先明白DC的含义,Windows不允许程序员直接访问硬件,它对屏幕的操作是通过环境设备,也就是DC来完成的。屏幕上的没一个窗口都对应一个DC,可以把DC想象成一个视频缓冲区,对这这个缓冲区的操作,会表现在这个缓冲区对应的屏幕窗口上。在窗口的DC之外,可以建立自己的DC,就是说它不对应窗口,这个方法就是CreateCompatibleDC,这个DC就是一个内存缓冲区,通过这个DC你可以把和它兼容的窗口DC保存到这个DC中,就是说你可以通过它在不同的DC之间拷贝数据。例如:你先在这个DC中建立好数据,然后在拷贝到窗口的DC就是完成了这个窗口的刷新。下面是一个代码段:不长hDeskTop = GetDesktopWindow(); hDeskTopDC = GetDC(hDeskTop);//桌面窗口DC hMemDC = CreateCompatibleDC(hDeskTopDC);//这建立的就是与桌面窗口兼容的DC。

############################################################################

SelectObject - 函数功能

函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。
函数原型:HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj);

SelectObject - 参数说明
   
参数
   
hdc:设备上下文环境的句柄。
   
hgdiobj:被选择的对象的句型,该指定对象必须由如下的函数创建。
   
位图:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有内存设备上下文环境可选择位图,并且在同一时刻只能一个设备上下文环境选择位图)。

 

原创粉丝点击