首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 熱鍵簡易封裝 (3):WinAPI 宣告與 WndProc 攔截實作

     編輯:關於C語言

P/Invoke 宣告

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);

覆寫 WndProc 處理熱鍵訊息

protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);
    if (m.Msg == HotkeyHelper.WM_HOTKEY)
    {
        // 尋找最上層 MainForm (視專案結構調整層級)
        MainForm mainform = this.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent as MainForm;
        if (mainform != null)
        {
            if (mainform.WindowState == FormWindowState.Minimized)
                mainform.WindowState = FormWindowState.Normal;
            mainform.Activate();
        }
    }
}

備註

代碼直接從專案複製,變數命名自說明。良好的重構比過多註解更有價值——代碼本身即文檔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved