::SetWindowPos(hWnd,…)
wndTopMost で,Z オーダーの最前面に.
{
CRect rect ;
GetWindowRect(&rect) ;
SetWindowPos(&wndTopMost,rect.left,rect.top,0,0,SWP_NOSIZE|SWP_NOACTIVATE) ;
}
幾つかの環境ではこれでうまく動作している.
今日作成したツールの CMSetNmTDlg::OnInitDialog() にこれを追加.
Win10 のホスト環境で最前面に移動しない.
仮想マシンで試すと意図した動作.
ホストの,以前に起動したツールは前面のまま保持された.
が,一度終わらせて再起動したら,最前面にならなくなった.
ちょっとよくわからないが,何かが邪魔しているのか?
PC を再起動すれば直るかもしれないが…
とりあえずメモ.
2021/10/25
explorer.exe の再起動でうまく動作する様になったみたい.
他 AP などからの操作の場合 SetForegroundWindow
2023/07/12
Windows API だと次の様に指定できる.
::SetWindowPos(this->GetSafeHwnd(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE) ;
2 つ目の引数は次のものが指定可能.
#define HWND_TOP ((HWND)0)
#define HWND_BOTTOM ((HWND)1)
#define HWND_TOPMOST ((HWND)-1)
#define HWND_NOTOPMOST ((HWND)-2)