web-dev-qa-db-ja.com

ウィンドウを一番上に設定する

私は自分のウィンドウを他のすべてのウィンドウの上に配置しようとしています。 C++ Win32プログラミングは初めてです。これは、WinMainでのウィンドウの初期化です。

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

以前はダイアログを使用していたので、一番上のプロパティは本当に使いやすかったです。しかし、ここでは、ウィンドウでそれを設定する方法がわかりません。また、それをトリガーできるようにしたいです。誰かが私を助けてくれますか?

15
Victor

(拡張)ウィンドウスタイルでCreateWindowExを使用するWS_EX_TOPMOST

免責事項:私がそれに触れたので、それは約15年かそこらです。

19
SetWindowPos(hwnd01, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

注:SWP_NOMOVE | SWP_NOSIZEは、SetWindowPos関数の3番目、4番目、5番目、6番目のパラメーターを無視するためのものです。

2番目のパラメーターは次のとおりです。

  • HWND_BOTTOM

  • HWND_NOTOPMOST(ウィンドウを通常のウィンドウに設定)

  • HWND_TOP

  • HWND_TOPMOST(ウィンドウが常に一番上になるように設定)

24
Amir

SetWindowPoshWndInsertAfterパラメータを参照してください。 HWND_TOPMOSTを渡すと、必要な処理を実行できます。

さらに、位置とサイズを変更しないでおく場合は、SWP_NOMOVE | SWP_NOSIZEuFlagsパラメータに渡すことができます。

9

2直接コメントできないのでNoitidart

SWP_NOMOVE現在の位置を保持します(XパラメータとYパラメータは無視されます)。 SWP_NOSIZE現在のサイズを保持します(cxおよびcyパラメーターを無視します)。これらのフラグを設定しない場合は、0、0、0、0を渡す代わりに位置とサイズを指定する必要があります

3
vik_78