捕獲winform的最小化,最大化,關(guān)閉事件
因?yàn)轫?xiàng)目需要在winform關(guān)閉的時(shí)候,處理一些程序,在滿足條件后,則關(guān)閉對(duì)話框。winform好像沒有處理最大化,最小化相關(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)??//攔截最小化按鈕{
????????????//這里寫操作代碼
????????????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