動態截獲並顯示視窗DC

2021-03-31 19:45:46 字數 867 閱讀 9402

我在網上看到很多螢幕擷取的文章,相信大家也看過不少。人類每一次的進步總是建立在別人的基礎之上,我今天要做得是如何將乙個視窗動態地顯示在另外乙個視窗上。

方法很簡單,核心演算法是要完成對乙個視窗dc顯示到另外乙個視窗的dc,為了方便**的重用,我特地把它放到乙個自己編寫的函式:

bool cshow_windowdcview::show_windowdc(cwnd *pwnddest /*目標視窗的wnd指標*/,

cwnd *pwndsrc /*源視窗*/)

有了這個函式的支援,其他實現就簡單了。要實現動態的獲取乙個視窗的dc只要加乙個計時器
settimer(1,100,null);
在計時器裡放乙個重新整理語句就可以了。

invalidate();
另外,為了消除不必要的閃爍,還要在過載wm_erasebkgnd訊息,只要在對應的 onerasebkgnd(cdc* pdc) 新增 return true,其它都不要,最後在 ondraw(cdc* pdc)新增:

cwnd *source=findwindow("geminiwindowclass",null);//搜尋視窗
這裡搜尋的是我的realone視窗

bool rst=show_windowdc(this,source);
為了程式的美觀,我去掉選單,工具欄和狀態列,具體可以參考我的源程式。程式執行如下:

快照結束語

程式本身當然還有不少問題,比如說只能找乙個具體的視窗,不靈活,我介紹大家一篇文章,《怎樣編寫乙個類spy++的搜尋視窗程式》,相信能解決這個問題。當程式執行的時候要保證源視窗在可見狀態,否則,是無法正常顯示的。也借這個機會,希望大家有更好的想法可以在這裡提出來,該程式在xp+v6.0下除錯通過。

JS開啟新視窗並居中顯示

hml部分 onclick opennewwindow js部分 功能 開啟新得瀏覽器視窗並居中顯示 引數 url 需要開啟的url位址 name 開啟的視窗名稱,可以為null customwidth 視窗的寬度 customheight 視窗的高度 function opennewwindow ...

動態建立button並顯示選單

我的form上有3個panel,我要在指定的panel上動態建立多個button,請問各位,這 如何寫?點這個button時要能彈出選單 var btn1 tbutton begin btn1 tbutton.create owner btn1.parent panel1 end var butto...

Ajax實現動態顯示並操作表資訊

在jsp連線資料庫訪問並顯示資料庫資訊時,使用ajax利用json物件會在頁面不重新整理的情況下獲取到資料。但若是要顯示資料庫表中的資訊,就需要動態的生成表的行以及單元格。並且對每一行的操作也是需要動態繫結的。今天分享給各位的是完成在對資料庫表資訊的顯示 增加 刪除 修改。顯示時通過用html 來控...