Windows訊息驅動

2021-04-15 23:39:22 字數 1226 閱讀 4367

windows是乙個訊息驅動系統。它通過把訊息投入應用程式訊息佇列中或者把訊息傳送給合適的視窗訊息處理程式,將發生的各種事件通知給應用程式。

要在視窗的顯示區域繪圖,可以使用windows的圖形裝置介面(gdi)函式。(如:textout (hdc, x, y, pstext, ilength) ;)

重繪(包括新的繪製)的原理:

1。有效區域和無效區域

需要重繪的區域稱為「無效區域」,不需要的稱為「有效區域」,無效區域的資訊儲存在乙個「繪圖資訊結構」(paintstruct)中

2。裝置內容

是gdi內部儲存的資料結構,與特定的顯示裝置(如視訊顯示器或印表機)相關。對於視訊顯示器,裝置內容總是與顯示器上的特定視窗相關。

裝置內容中的有些值是圖形「屬性」,這些屬性定義了gdi繪圖函式工作的細節。(例如,對於textout,裝置內容的屬性確定了文字的顏色、文字的背景色、x座標和y座標映像到視窗的顯示區域的方式,以及顯示文字時windows使用的字型。)

3。重繪的過程:

①windows傳送wm_pait訊息

在乙個訊息佇列中只有乙個wm_paint,如果在在完成繪製之前又有需要繪製的區域,不會再次傳送,只是改變paintstruct的內容

②取得裝置內容控制代碼(hdc)

取得了該控制代碼後,windows用內定的屬性值填入內部裝置內容結構。

可以通過呼叫不同的gdi函式改變這些預設值。

利用其它的gdi函式可以取得這些屬性的目前值。

還有其它的gdi函式能夠在視窗的顯示區域真正地繪圖。

③繪圖再得到的hdc上繪圖

如:drawtext (hdc, text ("hello, windows 98!"), -1, &rect,

dt_singleline | dt_center | dt_vcenter) ;

注意:可以用函式手動得到要繪製的區域,可以用函式將想要繪製的區域變為無效區域

④釋放裝置內容控制代碼

必須成對出現:

hdc = beginpaint (hwnd, &ps) ;//取得

使用gdi函式                  //處理

endpaint (hwnd, &ps) ;           //釋放

hdc = getdc (hwnd) ;                //取得

使用gdi函式                 //處理

releasedc (hwnd, hdc) ;         //釋放

訊息驅動bean

訊息驅動bean是處理通過jms傳遞的訊息的非同步訊息消費者。雖然mdb負責處理訊息,但是由執行mdb的ejb容器負責處理服務 事務,安全,資源,併發,訊息確認等 使bean開發者把精力集中在處理訊息的業務邏輯上。mdb在本質上是無狀態的,也就是說ejb容器可以執行大量的mdb例項,併發地處理各個應...

SpringCloud 訊息驅動

spring cloud stream由乙個中介軟體中立的核組成。應用通過spring cloud stream插入的input 相當於 消費者consumer,它是從佇列中接收訊息的 和output 相當於生產者producer,它是從佇列中傳送消 息的。通道與外界交流。通道通過指定中介軟體的bi...

Windows控制代碼,訊息

常用控制代碼型別及說明 控制代碼型別 說明 hwnd 標識視窗控制代碼 hinstance 標識當前例項控制代碼 hcursor 標識游標控制代碼 hfont 標識字型控制代碼 hpen 標識畫筆控制代碼 hbrush 畫刷 hdc 裝置環境 hbitmap 位圖 hicon 圖示 hmenu 選單...