視窗被覆蓋的問題 |
尚未結案
|
white66
一般會員 ![]() ![]() 發表:5 回覆:4 積分:1 註冊:2006-07-08 發送簡訊給我 |
底下這樣寫,在Vista上執行,如果另1個視窗(例如IE)擋到panel1,此時Image1上顯示的仍是panel1實際內容.
如果在XP或Server 2003執行卻是顯示上層視窗的內容,就是panel1被覆蓋了,這是為什麼? 請問如何做才能不被覆蓋? [code cpp] void __fastcall TForm1::Timer1Timer(TObject *Sender) { Graphics::TBitmap*Source=new Graphics::TBitmap(); TCanvas *csBuf=new TCanvas; HDC hDC=GetDC(Panel1->Handle); csBuf->Handle=hDC; Source->Width=Panel1->Width; Source->Height=Panel1->Height; Source->Canvas->CopyRect(Rect(0, 0, Source->Width, Source->Height),csBuf, Rect(0, 0, Panel1->Width, Panel1->Height)); Image1->Picture->Assign(Source); ReleaseDC(0,hDC); delete csBuf; delete Source; } [/code] |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
white66
一般會員 ![]() ![]() 發表:5 回覆:4 積分:1 註冊:2006-07-08 發送簡訊給我 |
那個panel是顯示擷取卡memory影像用的,會一直更新.當我打開Form2(蓋到panel)用GetDC的方式取出影像,會取到Form2的畫面.
,所以必需把pBuf改成對應到Image上,才能解決.蠻奇怪的! StretchDIBits(VideoDc, 0, 0, 640, 480,0, 0, pBMIInfo->bmiHeader.biWidth, pBMIInfo->bmiHeader.biHeight,pBuf, pBMIInfo, DIB_RGB_COLORS, SRCCOPY); ===================引 用 ikk 文 章=================== 或許可以判斷,當Form被其他試窗遮住時就不重畫... Form->Active |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |