CPaintDC和CClientDC的區別

2021-07-02 15:27:30 字數 662 閱讀 7624

1:cclientdc(客戶區裝置上下文)用於客戶區的輸出,它在建構函式中封裝了getdc(),在析構函式中封裝了releasedc()函式。一般在響應非視窗重畫訊息(如鍵盤輸入時繪製文字、滑鼠繪圖)繪圖時要用到它。用法是:

cclientdcdc(this);//this一般指向本視窗或當前活動檢視

dc.textout(10,10,str,str.getlength());

//利用dc輸出文字,如果是在cscrollview中使用,還要注意調

用onpreparedc(&dc)調整裝置上下文的座標。

2: cpaintdc用於響應視窗重繪訊息(wm_paint)是的繪圖輸出。cpaintdc在建構函式中呼叫beginpaint()取得裝置上下文,在析構函式中呼叫endpaint()釋放裝置上下文。endpaint()除了釋放裝置上下文外,還負責從訊息佇列中清除wm_paint訊息。因此,在處理視窗重畫時,必須使用cpaintdc,否則wm_paint訊息無法從訊息佇列中清除,將引起不斷的視窗重畫。cpaintdc也只能用在wm_paint訊息處理之中。 

此外: cpaintdc只能在wm_paint訊息中使用, 用於有重畫訊息發出時才使用的記憶體裝置環境, 而cclientdc和客戶區相關,有重畫訊息發出時才使用的記憶體裝置環境, 可在任何地方使用。具體的例子我還沒有應用過,所以自己感覺還理解的不清楚。

CPaintDC類與 CClientDC類的區別

cpaintdc 與 cclientdc cpaintdc 與 cclientdc都是從cdc類繼承而來。所以,這兩個類的外在行為高度的抽象一致。以致於初者會誤以為兩者的使用可以替換 或者說mfc初學者很容易將兩者的使用混淆 事實上,mfc將兩者都從cdc繼承,是為了讓使用者在不同的場景下更加方便,...

和 區別和聯絡, 和 區別和聯絡

和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...

rpx和樣式和class和flex

5 style 靜態的樣式統一寫到 class 中。style 接收動態的樣式,在執行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。例 6 class 用於指定樣式規則,其屬性值是樣式規則中類選擇器名 樣式類名 的集合,樣式類名不需要帶上.樣式類名之間用空格分隔。關於f...