DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WMPのサイズ変更について

環境/言語:[XP,C#,VisualStudio.NET2003]
分類:[.NET]

初めまして。C#で、WindowsMediaPlayerを扱いたいのですが、思うように
動かずに困っています。よろしくお願いします。

作りたいアプリケーションは、メインとなるフォームの中に子フォーム
を作成し、その子フォームにWMPを貼り付けて操作できるものです。
WMPが常に子フォームいっぱいに表示されるようにしたいので、Anchorで
全方向に固定しています。現在、子フォームのサイズを変更するとWMPも
それに合わせてサイズが変更します。

問題点は、WMPの再生ボタンや停止ボタンを押したときに、WMPのサイズが
再生している動画のサイズに合わせて変更されてしまうことです。

WMPの操作をしても、常にWMPをフォームいっぱいに表示する方法が知りたい
のです。ご教授よろしくお願いします。
> 問題点は、WMPの再生ボタンや停止ボタンを押したときに、WMPのサイズが
> 再生している動画のサイズに合わせて変更されてしまうことです。

フォームにMedia Player Control 9を貼り付けて試してみましたが、そうはなりませんでした。どうすれば再現できるのでしょうか?
こんにちは、壱です。
管理人さん、わざわざ試して頂いて本当にありがとうございます。

投稿後色々と試してみたのですが未だ解決できておりません。
とりあえず分かっていることは、子フォームに貼り付けると動作が変わってし
まうことです。実際に子フォームの部分のプログラムをコピーして、フォーム
を1つしか持たないプログラムを作ってみたところ、問題なく動作しました。

MDIを利用するのは初めてで仕組みはよく分かっていないのですが、子フォー
ムにすると動作が変わってしまうものなのでしょうか。
MDIの子フォームにすると、確かにそのようになりました。申し訳ありませんが、理由も解決法も私にはさっぱり分かりません。困ったものですね...。
一瞬大きさが変わるのが見えてしまいますが、次のような方法でかろうじて何とかなりました。

private bool resizing = false;

private void axWindowsMediaPlayer1_Resize(object sender, System.EventArgs e)
{
if (!resizing)
{
Application.Idle += new EventHandler(Application_Idle);
resizing = true;
}

}

private void Application_Idle(object sender, EventArgs e)
{
if (resizing)
{
axWindowsMediaPlayer1.Bounds = this.ClientRectangle;
Application.Idle -= new EventHandler(Application_Idle);
resizing = false;

}
}
壱です。
管理人さんの方法で解決することができました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板