给大家看看一个奇怪的问题......
mme 2003-07-30 11:21:25 大家把下面这段copy运行一下,会发现很奇怪的资源不足....
拉一个TButton 和 TImage 就可以了.
//---------------------------------------------------------------------------
DWORD WINAPI mythread(LPVOID lpparam)
{
HDC hdc;
TMemoryStream *pms = new TMemoryStream();
Graphics::TBitmap *bmp = new Graphics::TBitmap();
bmp->PixelFormat = pf24bit;
bmp->Width = Screen->Width;
bmp->Height = Screen->Height;
for(;;)
{
Sleep(100);
hdc = GetDC(NULL); //复制屏幕
BitBlt(bmp->Canvas->Handle, r.Left, r.Top ,r.Right, r.Bottom,
hdc, 0, 0, SRCCOPY);
ReleaseDC(NULL,hdc);
pms->Position = 0;
bmp->SaveToStream(pms);
pms->Position = 0;
Form1->Image1->Picture->Bitmap->LoadFromStream(pms);
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Parent->DoubleBuffered = true;
DWORD dwthread;
::CreateThread(NULL,0,mythread,(LPVOID)"",0,&dwthread);
}
如果把bmp->PixelFormat = pf24bit;注释掉,又有很奇怪的结果:)
又如果加一句bmp->FreeImage();又可以长一点时间才出现资源不足.
唉,我的结论是TMemoryStream或者TBitmap很有问题D.
不知道各位有什么高论.