1.あるプロセスからEXE形式のWindowsFormを実行しました。
2.起動したFormは起動されるが、その後アクティブでない状態になり、Winodwsのタスクバーに表示されているFormのタスクが光る状態になります。
3.2の問題を解決するために、起動対象のプロジェクトに入って、「アプリケーションフレームワークを有効にする」のチェックを外しました。
4.3の解決案にすると、フォームをスタイルが変わってしまいます。
フォームのスタイルはそのままにして、プロセス起動ご、タスクバーでピカピカ光らないようするためにはどうすればいいでしょうか?
開発環境はVS2008、VISTAです〜
編集 削除Application.EnableVisualStyles()を使えば、
、「アプリケーションフレームワークを有効にする」のチェックを外しても
フォームのスタイルはそのままになるとおもいます。
Application.EnableVisualStyles()を使うまではわかっていましたが、
どこに書くのが一番妥当でしょうか?
1.フォームロード時に
2.Form.Activatedイベントに
1と2を検討しましたが、ボタンが無効になったときのスタイルがXPVisualスタイルが適用されてない状態です。
Form のイベントでは遅いかと。Application.EnableVisualStyles() は、
フォーム等を作成する前に呼び出しておく必要があるため、たとえば
Main メソッドの先頭(Application.Run の実行前)に記述してみてください。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.enablevisualstyles.aspx
http://www.atmarkit.co.jp/fdotnet/dotnettips/234winxpstyle/winxpstyle.html
スタートアップにフォームを指定して、「アプリケーションフレームワークを無効にした」場合、Mainメソッドが見つからないです。
この場合、アプリのエントリポインタ(入り口)はどこでしょうか?
Application.Run が書かれている場所ともいえますね。
Main メソッドは、自分で記述する必要があります。
編集 削除追記:
Sub Mainを作成し、
Application.EnableVisualStyles
Application.Run
を実装しましたが、
アプリケーションフレームワークプロパティでXpViusualスタイルを有効にした場合とソースでApplication.EnableVisualStylesを実行した場合、
ボタンが無効になったときのスタイルが違うのはなぜでしょうか?
後者のほうが、凹んでるようなスタイルになります。
FlashWindowEx関数を利用して、強制的に点滅を回避しました。
あさん、魔界の仮面弁士さん、ありがとうございました。
感謝いたします。
一旦解決〜
編集 削除> ボタンが無効になったときのスタイルが違うのはなぜでしょうか?
「FlashWindowEx で解決した」という件とは別の話でしょうか?
> 後者のほうが、凹んでるようなスタイルになります。
可能であれば、実際の違いを PNG 画像等にして、どこかに
提示してもらえると有り難いです。
実際の画面イメージを見たわけではないため、どのような違いなのか
読み取れていないのですが、見た目が微妙に異なるという事であれば、
下記の点について調べてみては如何でしょう。
・SetCompatibleTextRenderingDefault メソッド
・UseCompatibleTextRendering プロパティ
それ以外で見た目に影響を与える箇所と言うと、
・UseVisualStyleBackColor プロパティ
・FlatStyle プロパティ
あたりとか。
「FlashWindowEx で解決」というのは、現行のまま、タスクバーで点滅しているとこを強制的に点滅しないよう提案しているということです。
SetCompatibleTextRenderingDefault を使用してみたら、ビルドは通りますが、プログラムを実行すると落ちます。