2

Windowsフォームアプリケーションにax windows media playerがあります。ユーザーがそれをダブルクリックすると、フルスクリーンになります。

問題: ユーザーが「エスケープ キー」を押したときに、通常の画面に戻れるようにしたい。ax メディア プレーヤーにキーダウン イベントを設定しました。このキー ダウン イベントは通常モードでは機能しますが、メディア プレーヤーが全画面表示になると失敗します。

 WMPLarge.KeyDownEvent += new AxWMPLib._WMPOCXEvents_KeyDownEventHandler(Form1_KeyDown);

 private void Form1_KeyDown(object sender, AxWMPLib._WMPOCXEvents_KeyDownEvent e)
    {
        if (e.nKeyCode == 27)
        {
            MessageBox.Show("");
            WMPLarge.fullScreen = false;
            WMPSmall.fullScreen = false;
        }
    }

どうすればこれを達成できますか?

4

1 に答える 1

3

これが私が使用した 1 つのコード スニペットです。

public partial class Form16 : Form,IMessageFilter
{
    public Form16()
    {
        InitializeComponent();
    }

    private void Form16_Load(object sender, EventArgs e)
    {
        this.axWindowsMediaPlayer1.URL = @"D:\MyVideo\myfile.wmv";
        Application.AddMessageFilter(this);
    }

    private void Form16_FormClosing(object sender, FormClosingEventArgs e)
    {
        Application.RemoveMessageFilter(this);
    }

    #region IMessageFilter Members
    private const UInt32 WM_KEYDOWN = 0x0100;
    public bool PreFilterMessage(ref Message m)
    {
        if (m.Msg == WM_KEYDOWN)
        {
            Keys keyCode = (Keys)(int)m.WParam & Keys.KeyCode;
            if (keyCode == Keys.Escape)
            {
                this.axWindowsMediaPlayer1.fullScreen = false;
            }
            return true;
        }
        return false;
    }
    #endregion
}
于 2013-11-08T21:29:45.607 に答える