全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1394
推到 Plurk!
推到 Facebook!

有關畫面擷取,如何避免被別的程式畫面覆蓋?(HDC dc...)

尚未結案
tester_61566
一般會員


發表:1
回覆:2
積分:5
註冊:2006-09-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-01 20:06:00 IP:220.137.xxx.xxx 未訂閱

//大家好,
//我利用下面這段程式來擷取我主程式的一些畫面,
//但我發現在執行擷取時,如果我讓其它正在執行的應用程式(例如IE),
//變成在我主程式上層的話,那擷取到的畫面就變成IE畫面!

//請問,我讓如何避免這個狀況發生....
//有辦法無論如何,只擷取我的主程式畫面嗎?(好像不行)
//那我讓如何限制,或讓怎麼改呢?

//謝謝大家幫忙!!

void __fastcall TFmMain::Button_2Click(TObject *Sender)
{

int i = 0;
AnsiString bmpFileName;

while(i < 7)
{
HDC dc;
dc = GetDC(Handle);
TCanvas *nCanvas = new TCanvas;
nCanvas->Handle = dc;
Graphics::TBitmap *tmpBmp = new Graphics::TBitmap;

bmp->Width = MainFrom->Width;
bmp->Height = MainFrom->Height;
bmp->Canvas->CopyMode = cmSrcCopy;
SetStretchBltMode(bmp->Canvas->Handle, STRETCH_HALFTONE);
bmp->Canvas->CopyRect(Rect(0, 0, bmp->Width, bmp->Height),
MainFrom->Canvas,
Rect(0, 0, MainFrom->ClientWidth, MainFrom->ClientHeight));

bmpFileName = "C:\\" IntToStr(i) ".bmp";
bmp->SaveToFile(bmpFileName);

i =1;

if(i < 7)
MainFrom->PageControl_2->ActivePageIndex = i;


delete bmp;
delete nCanvas;
ReleaseDC(NULL, dc);
}
}
------
N/A
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-06 01:07:24 IP:61.229.xxx.xxx 未訂閱

你附的程式碼好像怪怪的,能跑嗎?

比如說怎會GetDC,換後create canvas但都沒用? bitmap那個物件new出來的和後面用的不一樣…
能否先測一下你貼的程式是否能跑,然後再放上來,我可以幫忙測一下是怎樣的情形。當然,我不知道是否在你copy前使用BringWindowToTop 或是SetForegroundWindow會有用?!

蕭沖 qs.xiao@gmail.com
http://aftcast.blogspot.com/

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
tester_61566
一般會員


發表:1
回覆:2
積分:5
註冊:2006-09-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-06 11:46:41 IP:220.130.xxx.xxx 未訂閱

//不好意思,code 有點問題,我重貼

//還有我會試試你的方法,謝謝

int i = 0;
AnsiString bmpName;

while(i < 7)
{
HDC dc;
dc = GetDC(Handle);
TCanvas *nCanvas = new TCanvas;
nCanvas->Handle = dc;
Graphics::TBitmap *bmp = new Graphics::TBitmap;

bmp->Width = MainForm->pageControl1->Width;
bmp->Height = MainForm->pageControl1->Height;
SetStretchBltMode(MainForm->Canvas->Handle, STRETCH_HALFTONE);
bmp->Canvas->CopyMode = cmSrcCopy;
bmp->Canvas->CopyRect(Rect(0, 0, bmp->Width, bmp->Height),
MainForm->Canvas,
Rect(0, 0, MainForm->ClientWidth, MainForm->ClientHeight));

bmpName = "C:\\" IntToStr(i) ".bmp";
bmp->SaveToFile(bmpName);

i =1;
if(i < 7)
MainForm->pageControl1->ActivePageIndex = i;

delete bmp;
delete nCanvas;
ReleaseDC(NULL, dc);
}

------
N/A
系統時間:2024-04-29 5:02:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!