#if MEMMONITOR
using System.Windows.Forms;
namespace TIASshot {
public partial class Form1 {
private MemoryMonitorForm _memoryMonitorForm;
// F9 で ON/OFF をトグルする副モニタ計測用の一時抑制フラグ。
// true の間は ShowImage が副モニタへのフレーム給餌(コピー生成・UpdateImage 呼び出し)を止める。
private bool _subMonitorSuppressed = false;
/// <summary>
/// メモリ観測ウィンドウを非モーダルで開く(MEMMONITOR 限定)。
/// 既に開いている場合は前面化する。
/// Shown イベントから呼び出すことでメインフォームの最終位置を確定させてから配置する。
/// </summary>
private void ShowMemoryMonitor() {
if (_memoryMonitorForm != null && !_memoryMonitorForm.IsDisposed) {
_memoryMonitorForm.BringToFront();
return;
}
_memoryMonitorForm = new MemoryMonitorForm();
// メインフォームの右隣に配置
_memoryMonitorForm.StartPosition = FormStartPosition.Manual;
_memoryMonitorForm.Location = new System.Drawing.Point(
this.Right + 8,
this.Top);
_memoryMonitorForm.Show(this);
}
/// <summary>
/// 副モニタへのプレビュー給餌を ON/OFF トグルする(MEMMONITOR 限定・計測用)。
/// F9 キーで Form1・MemoryMonitorForm のどちらからでも呼び出せる。
/// 副ディスプレイが存在しない環境(_previewMonitor.IsShown が false)では何もしない。
/// </summary>
public void ToggleSubMonitorProfiling() {
if (_previewMonitor == null || !_previewMonitor.IsShown) return; // 副ディスプレイが無い環境では何もしない
_subMonitorSuppressed = !_subMonitorSuppressed;
if (_subMonitorSuppressed) {
_previewMonitor.Hide();
PreviewProfiler.MarkEvent("SUB_OFF");
} else {
_previewMonitor.Show();
PreviewProfiler.MarkEvent("SUB_ON");
}
}
/// <summary>
/// F9 キーで副モニタ給餌をトグルする(MEMMONITOR 限定)。
/// Form1_Load で KeyPreview = true を設定した上で KeyDown に接続する。
/// </summary>
private void Form1_MemMonitor_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.F9) {
ToggleSubMonitorProfiling();
e.Handled = true;
}
}
}
}
#endif