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

メインメニュー処理中の押下について

環境/言語:[.NET Framework 1.1]
分類:[.NET]

VC++ .NET 2003
フォームアプリケーション(.NET)

宜しくお願いします。

フォーム上にメインメニュー(menuItemをa、bとする)、ボタン1、ラベル1を用意します。そしてボタン1のイベントに次のソースを書き込みます。

//******************************************************
this->mainMenu1->MenuItems->Item[0]->Enabled = false;
this->mainMenu1->MenuItems->Item[1]->Enabled = false;
int i = 0;
while( i++ < 999999 ) {
Application::DoEvents();
label1->Text = i.ToString();
}
this->mainMenu1->MenuItems->Item[0]->Enabled = true;
this->mainMenu1->MenuItems->Item[1]->Enabled = true;
//******************************************************
これを実行中、メニューのaをクリックするとEnabled = false;
であるにもかかわらずフォーカスが移り処理が中断してしまいます。

メニュー全体を処理中でも押せないようにしたいのですがなにか
方法はないでしょうか。
こんにちは中です。

> これを実行中、メニューのaをクリックするとEnabled = false;
> であるにもかかわらずフォーカスが移り処理が中断してしまいます。
> メニュー全体を処理中でも押せないようにしたいのですがなにか
> 方法はないでしょうか。

確認はしてません。

DoEventsの副作用であることは間違いないのですが、フォーム自身を無効に出来ませんか?メニュー自身を無効に出来ませんか?別画面、別スレッドに出来ませんか?無理なら処理中フラグを持って処理を実行しないようにするのが良いでしょう。


------------------------------------------------------
中博俊 MSMVP Visual Studio C# Since 2004/04-2005/03, MCP
<a href="http://naka.wankuma.com/">http://naka.wankuma.com/</a>
<a href="http://naka.wankuma.com/blog/">http://naka.wankuma.com/blog/</a>
naka@wankuma.com
返事が遅くなりすみません。

どうやらDoEventsとは関係なく、メニューを不活性にしていても、マウスやAltで選択するとフォーカスがあたっている状態になってしまいます。なにか方法はないでしょうか。
VBの説明でフォーカスの移動させないようにするイベント?らきし物見つけたので
同じ内容の物かどうかわ分からないけどアドレス貼ってきます。
C++でなくて申し訳ないですが、何か参考になれば良いかと・・・

http://dobon.net/vb/bbs/log2/1024.html
お返事どうもありがとうございます。


教えて頂いたページでは、Validateというものを使用してるようなのですが、メインメニューにValidateに関するプロパティが見つかりませんでした。他になにかあれば是非教えて下さい。
1.モードレス・メニュー・スタイルに変更する方法です
2.メニューバーを一時的に削除し、処理後復活させる
3.マウスが移動しないようにロックしてしまう

VB6.0 の事例ですが
http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=1768&page=120
■No10005に返信(まるさんの記事)
> 1.モードレス・メニュー・スタイルに変更する方法です
> 2.メニューバーを一時的に削除し、処理後復活させる
> 3.マウスが移動しないようにロックしてしまう
>
> VB6.0 の事例ですが
> http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=1768&page=120

返事がおそくなり申し訳ありません。
今回は、勉強不足、時間がないということで、処理中にプログレスバーを
表示し、フォームを不活性にするという方法で対処することにしました。

どうもありがとうございました。
解決済み!

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