数分前、私はTopMostで奇妙な問題に遭遇しました。私は一番上のフォームを作成しました(WinForms)いくつかのタブ移動し、すべてがうまくいた。タブ移動時にTopMostが機能しない
私はコンピュータゲーム(フルスクリーンウィンドウ)を開こうとしました。これはゲームがフルスクリーンですが、ウィンドウモードではフォームとオーバーレイできることを意味します。私のブラウザを開くまで、すべてのことがうまくいった(他のプログラム(エディタ)でもかまいません)。私は2台のモニターを持っています。
- 私は、私は戻って試合タブブラウザ(URL)
- のどこかにクリックしたゲーム内のどこかでクリックしたブラウザ
- に(私のフォームはTopMostのある場合)コンピュータゲームの外にタブ付き(私のフォームはまだTopMostです)
- 私は再びステップ1-3を行い、突然私のフォーム(一番上)が消えました。
これは私がこれを行うたびに発生し、この問題は少なくとも2台の他の マシンで再現できます。
EDITは:
は私が提案された解決策
public partial class Form1 : Form
{
const UInt32 SWP_NOSIZE = 0x0001;
const UInt32 SWP_NOMOVE = 0x0002;
const UInt32 SWP_NOACTIVATE = 0x0010;
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
public void setTOP()
{
SetWindowPos(this.Handle, new IntPtr(-1), 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.setTOP();
}
}
を実装しようとした。しかし、これは動作しませんでした。
もう一度最上部を呼び出す方法を知りますか?フォームがフォーカスされていないか、バックグラウンドに行くときに私が知らないものが消えてしまう/消える... SetWindowPosを使ってみると、何も変わらない。 –
こんにちは。ここに私の場合はそれが動作します。 DirectXやグラフィックアクセラレータを使用したゲームなどがあれば教えてください。おそらく、ビデオのアクセラレーションが問題なのでしょうか?同じ問題がここ(ドイツ語)であり、以下のコードを使用して解決されました:http://www.activevb.de/tipps/vb6tipps/tipp0007.html – Nasenbaer
私がテストしたゲームは、StarCraft 2です。それは正しくありましたが、このシナリオを除いて最上位だったので、私は間違いをしなかったと思います。 –