很久沒寫隨筆,今天在寫乙個托盤程式的時候,要捕獲視窗最小化的訊息,在wndproc裡面沒有捕獲到,後面在twincontrol找到實現wm_syscommand的過程。重寫就可以了,其實wndproc裡面也是可以的,剛開始寫錯了。
wndproc
procedure tfrmmain.wndproc(var amsg: tmessage);begin
if amsg.msg = wm_command then
begin
memo1.lines.add('
wm_command
');inherited;
endelse
if amsg.msg = wm_syscommand then
begin
memo1.lines.add('
wm_syscommand
');inherited;
endelse
inherited;
end;
wmcommand wmsyscommand
procedure wmcommand(var message: twmcommand); message wm_command;wmsyscommand用來響應最大最小化以及關閉的訊息,點選主選單的時候也會響應,點選選單項的時候響應的是wmcommand,訊息裡面包括有選單的id,大概是這樣沒深入研究。procedure wmsyscommand(var amsg: twmsyscommand); message wm_syscommand;
procedure tfrmmain.wmcommand(var message: twmcommand);
begin
memo1.lines.add(format('
id:%d
',[message.itemid ]));
inherited;
end;
procedure tfrmmain.wmsyscommand(var amsg: twmsyscommand);
begin
if amsg.cmdtype and $fff0 = sc_minimize then
begin
self.hide;
shell_notifyicon(nim_add, @ftrayicondata)
endelse
inherited;
end;
C 窗體最小化事件隱藏捕獲
最小化的時候隱藏,是很常見的功能,但是因為c 沒有最小化的事件的處理,所以不能直接使用,在網上找了找,別人都是resize和其他幾個事件處理,感覺這樣不好,所以自己找了找資料,實現 如下。窗體的deactivate事件,判斷窗體狀態是否為最小化,其他事件判斷會出現問題 private void ma...
窗體程式最小化到任務區
寫此部落格為了記錄一些足跡,方便下次檢視方便!1 如果不想讓程式在工作列中顯示,請把窗體的屬性showintaskbar設定為false 2 如果想讓程式啟動時就最小化,請設定窗體的屬性windowstate設定為minimized。minimized 最小化,normal正常啟動,maximize...
窗體 最大化 最小化 關閉按鈕
qt 設定透明按鈕 沒試驗 qpushbutton bt new qpushbutton this bt settext ok bt move 200,100 bt setflat true 就是這句能夠實現透明,視窗置頂 this setwindowflags qt windowstaysonto...