處理WM SETTEXT訊息的尷尬

2022-03-25 00:57:40 字數 915 閱讀 5341

處理wm_settext訊息的尷尬 [已結帖,結帖人:kbkman]   .

[華 軟 網]

程式設計論壇  樓主 這個問題已經我已經發過帖,而且網上找了很久,都沒有找到答案,我重新整理一下,把問題說明白

前因:我想在自己的軟體中實現一套自己做的**

問題:在處理wm_settext訊息時,如果把該訊息交給defwindowproc,那麼caption區會被windows重新繪製。如果不把他交給defwindowproc,那麼工作列上的視窗按鈕的標題不被更成新的標題

暫時的解決方法:先交給defwindowproc處理,等windows繪製完caption區後,然後再自己再繪製覆蓋caption區。這個方法雖然可以解決上面的問題,但又帶來乙個嚴重的缺點,就是這樣會引發caption區閃爍,如果在接受頻繁wm_settext訊息時,閃爍會相當嚴重,顯然任何做**的軟體商都不會希望這樣。

這個問題我已經困擾好久,也沒有看到任何人提過類似的問題,相當鬱悶,希望大家幫幫忙,分數絕不會少     .

[華 軟 網]

程式設計論壇 1 個網友回答: 用wm_ncpaint訊息,在這裡重繪你的標題欄,但當移動視窗,點選標題欄、調整視窗大小等情況都有可能使原來的標題欄出現,所以在defwindowproc裡新增如下**:

if(message==wm_nclbuttondblclk  ||  message==wm_nclbuttondown)   

return  true;    .

[華 軟 網]

程式設計論壇 2 個網友回答: 樓上的,這些訊息我都處理了,我現在說的是wm_settext,這條訊息。    .

[華 軟 網]

程式設計論壇 3 個網友回答: 也可以考慮在呼叫defwindowproc前先把ws_caption風格去掉,呼叫完後再加上。 

這個是有效的,至少初步試驗是有效的。

Delphi的訊息處理

delphi中的訊息 訊息是windows發出的乙個通知,它告訴應用程式某個事件發生了。在delphi中,大多數情況下windows的訊息被封裝在vcl的事件中,我們只需處理相應的vcl事件就可以了,但如果我們需要編寫自己的控制項 截獲或過濾訊息就必須深入研究win32的訊息處理機制。在delphi...

訊息的處理流程

mfc控制項訊息,已經是封裝好的東西了,訊息型別分為多種,有wm開頭的windows訊息,還有自己通過新增的on command訊息等等 新增訊息,如果是wm訊息,就實現相應的虛函式,若是on command訊息就建立相應的訊息對映 選單訊息,工具欄訊息都是命令訊息,mfc中命令訊息的處理流程如下 ...

RabbitMQ訊息的處理

訊息的確認,是指生產者投遞訊息後,如果broker收到訊息,則會給我們生產這乙個應答。生產者進行接收應答,用來確定這條訊息是否正常的傳送到broker,這種方式也是訊息的可靠性投遞的核心保障。確認機制流程圖 如何實現confirm確認訊息?第一步 在channel上開啟確認模式 channel.co...