OnLButtonDown與裝置描述表

2021-09-02 08:18:18 字數 1484 閱讀 4641

nflags 表示控制鍵狀態(包括 ctrl,shift,滑鼠左、中、右 共5個鍵的狀態)

point表示滑鼠座標。(相對於當前視窗而言的座標)

1裝置描述表概述

當windows要在顯示器或其他裝置上繪製圖形或文字時,其不像dos系統把影象和文字直接輸出到硬體,而是使用乙個裝置描述表來替代硬體裝置的邏輯表示。

裝置描述表(device context, 縮寫為dc)也稱裝置上下文或裝置環境。簡單來說,就是一種包含各種繪圖屬性(字型,顏色)和方法(繪圖函式)的資料結構。裝置描述表定義了裝置,繪圖工具和畫圖資訊,其不僅可以繪製各種圖形,還可以確定在應用視窗中繪製圖形的方式和圖形的樣式。

說明:windows所有的繪製操作及圖形輸出都必須通過裝置描述表這個虛擬使用者工作區來進行。使用者在繪製之前,必須獲取繪製視窗區域的乙個裝置環境dc,接著才能進行gdi函式的呼叫,執行適合與裝置環境的命令。

2獲取裝置描述表

在視窗繪圖之前必須首先獲取視窗的裝置描述表。若沒有裝置描述表。任何繪圖函式都無法工作。windows不允許直接訪問顯示裝置,兒必須通過windows返回的裝置描述表控制代碼與顯示裝置通訊。

一般來說有三種方式獲取對應的dc:

2.1使用getdc()函式

如果windows應用程式的繪圖操作不是有wm_paint訊息驅動,就需要呼叫getdc()函式來進行獲取。其常用顯示是cwnd類的成員函式,格式如下:

cdc * getdc();

該函式用於獲取視窗工作區的顯示器裝置描述表,其不帶任何引數。如果函式條用成功,則返回標識cwnd客戶區的裝置環境,否則返回null。

說明:在完成繪圖之後,用getdc函式獲取的裝置描述表必須通過releasedc函式來釋放。

demo:

結果:2.2使用beginpaint()函式

windows應用程式響應wm_paint訊息進行圖形重新整理時,會通過呼叫beginpaint()函式來獲取dc。其常用的形式是cwnd類的成員函式,格式如下:

cdc * beginpaiint(lppaintstruct lppaint);

該函式只有乙個引數,就是指向結構paintstruct變數的指標。系統無論呼叫哪種形式的beginpaint函式,都需要填寫paintstruct結構以標識需要重新整理的無效矩形。只有在響應wm_paint訊息時才呼叫beginpaint函式,但是在返回處理訊息的結果之前,必須呼叫endpaint函式來釋放資源。

demo:

結果:2.3直接構造cdc物件

該方法用宣告乙個cdc類或其派生類物件的方式來獲取,也就是使用比較簡單的一種方法。構造方法如下:

cclientdc dc(cwnd *);

此時構造的是乙個物件。這種方法實際上是間接使用了getdc()成員函式。因為當乙個c++類宣告乙個物件時,系統會自動呼叫該類的建構函式,而在cclient類的建構函式中就呼叫getdc()函式。當這個物件被釋放時,又會自動呼叫該類的析構函式,在析構函式中,則呼叫releasedc()函式來釋放裝置描述表。

demo:

結果:

Apache mina 與Spring整合設計

其實很簡單,看了網上很多例子,但是發現還是apache自己寫的比較好,於是就抄下來了。先說配置檔案,color red 注意這裡不能使用延遲載入和 byname 的方式找bean color 再然後我們只需要實現myprotocolhandler就可以了,只在接收資料加了處理,資料傳輸用的是byte...

pycharm與anaconda的相關設定問題

pycharm軟體可在網上找到,按照分享的可較為容易的實現安裝。上述過程執行後開啟pycharm建立乙個新專案,需要注意直譯器應選 exists interpre 再選上annacond下的python.exe路徑,進入主頁面可在file選項卡下選中settings檢視環境配置和該直譯器下已安裝的包...

QTreeWidget 用法整理 訊號與槽設定

1.新增根節點以及子節點void frmmain fucinitgbxtreebar 2.設定訊號與槽connect ui treewidget,signal itemdoubleclicked qtreewidgetitem int this slot fucslottest1 qtreewidg...