这段代码什么意思?(50分)

  • 主题发起人 主题发起人 wdy801229
  • 开始时间 开始时间
W

wdy801229

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾这段代码是什么意思?特别是CreateCompatibleDC,BitBlt,SelectObject的用途
procedure TMRunScreen.DrawTextBitmap;
var
hDC, hCompDC, hOldHandle:THandle;
begin
hDC := GetDC(Handle);
hCompDC := CreateCompatibleDC(hDC);
hOldHandle := SelectObject( hCompDC, TitleBitmap.Handle );
BitBlt( hDC,0,0,Width,Height,hCompDC,0,0,SRCCOPY );
SelectObject( hCompDC, hOldHandle );
ReleaseDC(handle,hDC);
DeleteDC(hCompDC);
end;
 
CreateCompatibleDC 建立和 hDC 兼容的目标 DC
 
BitBlt 从 hOldHandle 拷贝一个矩形区域
 
这段程序的主要内容是将TitleBitmap的内容拷贝到hDC为句柄的显示窗口的客户区。
其中GetDC获取设显示窗口客户区所对应的设备上下文(DC),如果参数为0,好像是屏幕的。
CreateCompateibleDC创建和GetDC获得对应上下文的内存DC。
Bitblitjiu就是位图的拷贝,具体参数可以查SDK,或者MSDN。上面所有的函数调用其实是固定的。
 
多谢指教,我想问一下,为何要建一个兼容的目标DC,而不能直接用hCompDC := CreateCompatibleDC(hDC);中的hDC?
GetDC(Handle);中的Handle是指哪个的句柄,而 SelectObject( hCompDC, hOldHandle );中的hOldHandle又是指哪个的句柄?谢谢!
 
诸位大虾呢?
 
多人接受答案了。
 
后退
顶部