実行時にFormStyleのStayOnTopを切り替える
ウィンドウを最前面に表示する/しないを切り替える方法を紹介しています。
サンプルコード
void __fastcall TMainForm::SetStayOnTop(bool IsTop)
{
if(IsTop){
::SetWindowPos(
Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOREDRAW);
}else{
::SetWindowPos(
Handle, HWND_NOTOPMOST, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOREDRAW);
}
}
概要
FormStyle
を実行時に変更すると変な動きをします。これを回避するためにAPIを呼び出してあげます。
やり方は簡単で
SetWindowPos
の第2引数に
HWND_TOPMOST
を指定するか
HWND_NOTOPMOST
の違いだけでウインドウを最前面にするかしないかを指定することができます。
その他の引数の詳しいことはリファレンスを参照してください。最前面表示のOn/Offを切り替えるだけならこのままでかまわないはずです。