MFC初學,如圖,請問這個程式的兩處selectobject是做什麼用的 只用一處可以麼 謝謝

2021-03-24 18:17:50 字數 3786 閱讀 9716

1樓:匿名使用者

selectobject的作用是將指定gdi物件選定進入指定的dc,並作為其繪畫時使用的當前物件。

請仔細看下面這段話:

確保釋放dc的時候dc中的各gdi物件都不是你自己建立的!!!!確保個gdi物件在釋放的時候不被任何dc選中使用!!!!

假如我們要使用gdi函式畫圖,正確的步驟應該如下:

a.建立乙個記憶體相容dc(create***patibledc)

b.建立乙個記憶體相容bitmap(create***patiblebitmap)

c.關聯建立的記憶體相容dc和bitmap(selectobject)

d.畫圖

e.bitblt到目的dc上

f.斷開記憶體相容dc和bitmap關聯(selectobject)

g.銷毀記憶體相容bitmap

h.銷毀記憶體相容dc

由於selectobject在選入乙個新的gdi物件的時候會返回乙個原來的gdi物件(假如成功的話),所以需要在步驟c的時候儲存返回值,在步驟f的時候當作入口引數使用.還有,步驟g和步驟h實際上順序可以隨意,因為他們兩個此刻已經沒有關係了,但是為了結構清晰,我建議按照 "先create的後釋放,後create的先釋放 "的原則進行.

關於步驟f,可能會有爭議,因為即使省略這一步,步驟g和步驟h看起來照樣可以返回乙個成功的值.但實際上可能並沒有執行成功,至少boundschecker會報告有錯,錯誤資訊大致是說,在釋放dc的時候還包含有非預設的gdi物件,在釋放gdi物件的時候又說這個gdi物件還被乙個dc在使用.所以,我建議保留步驟f.

mfc vc初學,請問我如何在對話方塊類除錯的時候呼叫另外乙個類的方法並且把對話方塊類的實參傳過去?如圖,謝謝

2樓:匿名使用者

像bmp這個類,既然bmpdata是public的,那麼imgsize方法應該也要是public的。

但是既然imgsize是private的,那麼你自己手動將你的類新增為bmp的友元類吧,這樣可以呼叫其imgsize函式,如下:

class cmydialog;

class bmp

if(b.bmpdata!=null)

這樣只能保證程式不崩潰,但是邏輯是否正常需要靠你自己,因為影象資料還有很多設定項是在biheader裡面的,不光是只有資料。

請問mfc中的dc、cdc、hdc、控制代碼、裝置上下文究竟是什麼意思? 希望能解答詳細一點點 謝謝了

3樓:回頭的世界

dc: device context,中文也叫裝置上下文,通俗的理解叫視窗顯示描述裝置也行;

cdc: mfc中封裝了作業系統視窗輸出底層api的封裝類,如cdc的派生類cclientdc,用於視窗客戶區域的輸出。

hdc: vc++開發環境中的dc控制代碼型別,32位元的無符號整數型別,用來標識dc裝置的控制代碼。

裝置上下文:看上面解釋的第一行。

當我新建cdc時,使用selectobject選擇影象,等用完後為什麼還要selectobject上乙個返回的值?

4樓:匿名使用者

是這樣的.每乙個cdc都有它預設的字

體,點陣圖.和畫筆,比如說我不往裡面新增自

己定義的畫專筆,但是還是能在cdc上寫字屬,這裡就用的是預設畫筆當我們使用selectobject選入乙個物件到裝置場景後,就會把預設的返回

然後把預設的選入裡面去,最後等cdc的銷毀,你這個就幾行**倒無所謂,畫完

了之後,就基本釋放了cdc,當**複雜了,你就會可能會出問題,當然我也沒有遇

到這種問題,但是你這樣寫,絕對對你的程式的健壯性有好處!

5樓:加油

****sunxin.***孫鑫老師講的很詳細

6樓:_華麗de永恆

要返回原來的值啊。。。。

對vc6裡的mfc各控制項有詳細介紹,函式介紹,各使用介紹的資料是什麼?謝謝 20

7樓:楓夜無眠

mfc不屬於vc6,mfc是微軟搞得一套類庫,查東西可以用msdn。

8樓:匿名使用者

如果是vc6.使用連線幫助就可以。

9樓:匿名使用者

兄弟,太多了,你記不住的,也沒必要, 用到的時候查msdn或是問度娘. 只要記住普遍規則

如,獲取什麼東西 .get***x 設定某個東西 .set***x

mfc程式為什麼release的和debug執行結果不一樣呢?是**設定有問題嗎?

10樓:匿名使用者

**中的一些預處理命令(如#ifdef _debug)會受到影響,release進行的程式優化在一些特殊情況下也會出現異常現象。具體原因還是要把**放上來才能幫著分析了……

我用vc做乙個mfc的東西,編譯都正常,執行時提示failed to create empty document ,怎麼解決啊? 謝謝了!

11樓:匿名使用者

是動態載入資源的關係,遮蔽就沒有問題

使用selectobject函式時傳遞給它乙個畫筆或畫刷物件而非指標物件時,為什麼會正常執行而不會報錯?

12樓:任明星

selectobject是選擇畫筆、畫刷或者字型的控制代碼,最終都會被轉換為hpen、hbitmap或者是hfont。

13樓:匿名使用者

畫筆,畫刷,這些屬於系統資源,通常比較佔記憶體,如果直接傳遞物件給selectobject,會導致不必要的記憶體複製,開銷很大,用指標就可以避免這樣的問題。

如何在乙個非mfc應用程式(如win32控制台程式設計)中使用mfc提供的類,例如cobject,要做哪些工作

14樓:匿名使用者

1.除了要包含必須的標頭檔案,關鍵是要選擇正確的mfc執行庫鏈結方式:project->setting->general->"use mfc in a shared dll"。

2.這是乙個自定義物件兩種持久化方式比較的測試例子:

#include // mfc core and standard ***ponents

//#include // mfc extensions

//#include // mfc automation classes

//#include // mfc support for inter*** explorer 4 ***mon controls

//#include // mfc support for windows ***mon controls

class cmyclass : public cobject

;cmyclass(lpctstr lpszclassname);

~cmyclass(){};

void dump(cdumpcontext& dc) const;

void serialize(carchive& ar);

cstring m_cstring;

};implement_serial(cmyclass,cobject,0)

void cmyclass::dump(cdumpcontext& dc) const

}void cmyclass::serialize(carchive& ar)

15樓:匿名使用者

包含相應的標頭檔案試試

請問這個東西叫什麼名字,請問這個東西如圖叫什麼名字?在哪裡能買到?

接線子,接通訊電纜用的。產品名稱 k1 k2 k3接線子 規格 200粒一包 適用範圍 用於兩線接續,如 線 網路線續接適用芯徑 0.4 0.7公釐 接線子適用於中 小功率線路的導線快速連線。它解決了螺釘壓接式端子接線操作繁瑣的問題。接線時,導線無須拔除絕緣層,直接將線頭插入接線子的接線孔,經按壓或...

請問這個是什麼意思?怎麼解決,如圖,請問這個是什麼意思?該如何解決?

這種不懂,如果打不開或者一直停留這個頁面,我建議還是找維修人員比較好 如果你本身就是這種不成熟男孩或者是男人的話,那當然就不用改變了,如果你和這種男人或者男孩恰好相反的話,那你要改變成這樣的話,那可就難上加難了,乙個人的性格是很難改變的,目前我知道的改變方法只有兩種。第一種是,快速改變法 你遇到一些...

c語言程式解析,請問這個c語言程式函式如何解讀?

你的意思是讀一段程式知道它什麼意思嗎?那就照它規則讀嘍。不明白你說的意思!int a 100 定義int型變數a,初始化為100.int 1 100是錯誤的,應該是手誤吧。if a 100 printf d a 100 如果a 100,那麼輸出a 100這個表示式的值,然後換行。else print...