• 締切済み

指定したインアクティブウィンドウを常に手前に表示させたい

指定したインアクティブウィンドウを常に手前に表示させたいのですが,どのようにすればよいのでしょうか? 最後に示した参考サイトにあるように,このようなことは可能なようですが,設定方法が分かりません. OSはXPを使用しています. 何かwindowsの設定をすれば出来るのでしょうか?それともコードを書かないといけないのでしょうか? 手前に表示させたいインアクティブウィンドウの内容は,ネットワークカメラで,リアルタイムに撮影している映像です.アクティブにしたいウィンドウはコマンドプロンプトです.カメラの映像を全画面で見つつ,キーボード入力をしたいのです.コマンドプロンプトで,実行するプログラムはVC++で書かれたもので,キーボード入力を受け付け,それに応じて他のPCに,ソケット通信で命令を送るという内容です.ws2_32.libを使用しています. また,何か他に良い方法があれば教えていただければ幸いです. 初心者で知識が少なく,申し訳ありませんが,よろしくお願い致します. [参考サイト] http://e-words.jp/w/E382A4E383B3E382A2E382AFE38386E382A3E38396E382A6E382A3E383B3E38389E382A6.html インアクティブウィンドウはアクティブウィンドウの背景に隠れるが、設定により、インアクティブでも常に手前に表示させることもできる。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

>指定したウィンドウ ウィンドウはウィンドウハンドルで管理しています。 (1)ハンドルの値を知っている (2)ウィンドウのクラス名を知っている (3)ウィンドウのタイトルバーを知っている のいずれかが必要です。(2)、(3)ではFindWindowやEnumWindowsを 使用してウィンドウを見つけます。 ウィンドウハンドルを把握できたらSetWindowPosでZオーダを最前面に 設定すれば完了です。 目的のウィンドウハンドルを得る方法がまちまちなので、一般的な プログラムやWindowsの設定でどうにかなるものではありません。 つまり、コードを書かないといけません。

Kapppy
質問者

お礼

ご回答ありがとうございます. なるほど,やはりコードを書く必要があるんですね. 頑張ってみます.ありがとうございます.

すると、全ての回答が全文表示されます。
回答No.1

 こんばんは。  件のウィンドウはCreateWindowで作成している部分がソース上にあるのでしょうか。  でしたら、CreateWindowの拡張スタイルに  WS_EX_TOPMOST  を指定して下さい。  ソース上に見えていなくてもウィンドウハンドルが手元にあれば(何らかの手段で取って来れるなら)、  const long lExStyle = ::GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST;  ::SetWindowLong(hWnd, GWL_EXSTYLE, lExStyle);  で出来ると思います。  C++/CLIでしたら、デザインの「プロパティ」→「ウィンドウスタイル」→「TopMost項目」をTrueにして見て下さい。

Kapppy
質問者

お礼

詳しいご説明,ありがとうございます. しかし,プログラムはコンソールアプリケーションなので,CreateWindowなどは使っていません. 開発環境はVC++2008で,プロジェクトの種類はWin32,テンプレートでWin32コンソールアプリケーションを選択しました. 初めの質問で書いておくべきでした.申し訳ありません.

すると、全ての回答が全文表示されます。

関連するQ&A