當(dāng)前位置:首頁(yè) > IT技術(shù) > Windows編程 > 正文

捕獲winform的最小化,最大化,關(guān)閉事件
2021-10-18 17:51:10

捕獲winform的最小化,最大化,關(guān)閉事件

因?yàn)轫?xiàng)目需要在winform關(guān)閉的時(shí)候,處理一些程序,在滿足條件后,則關(guān)閉對(duì)話框。winform好像沒(méi)有處理最大化,最小化相關(guān)的事件,這里借用網(wǎng)上的一段代碼,對(duì)這些事件進(jìn)行捕獲

const?int?WM_SYSCOMMAND?=?0x112; ?

const?int?SC_CLOSE?=?0xF060;

const?int?SC_MINIMIZE?=?0xF020;

const?int?SC_MAXIMIZE?=?0xF030;

const?int?SC_RESTORE?=?61728;

//窗體按鈕的攔截函數(shù)

protected?override?void?WndProc(ref?Message?m){

????if?(m.Msg?==?WM_SYSCOMMAND){

????????if?(m.WParam.ToInt32()?==?SC_RESTORE){

? ? ? ? ? ? log.Info("窗口還原!");

????????}

????????if?(m.WParam.ToInt32()?==?SC_MINIMIZE)??//攔截最小化按鈕{

????????????//這里寫(xiě)操作代碼

????????????log.Info("點(diǎn)擊最小化按鈕!");

????????}

????????if?(m.WParam.ToInt32()?==?SC_MAXIMIZE?)???//攔截窗體最大化按鈕{

????????????log.Info("點(diǎn)擊最大化按鈕!");

?????????????//.....................

????????}

????????if?(m.WParam.ToInt32()?==?SC_CLOSE)???????//攔截窗體關(guān)閉按鈕?{

????????????log.Info("點(diǎn)擊窗口關(guān)閉按鈕!");

????????}

????}

????base.WndProc(ref?m);

}

?這里的前提需要確定事件對(duì)應(yīng)的m.WParam是多少,這里有個(gè)小方法,在該程序處打斷點(diǎn),調(diào)試應(yīng)用程序的時(shí)候,點(diǎn)擊最小化,最大化等按鈕,程序就到到斷點(diǎn)處,你查看該值是多少,就可了。

本文摘自 :https://blog.51cto.com/u

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >