>백엔드 개발 >C++ >WinForm 앱이 예기치 않게 표시되지 않고 시스템 트레이에 최소화되어 시작되도록 하는 방법은 무엇입니까?

WinForm 앱이 예기치 않게 표시되지 않고 시스템 트레이에 최소화되어 시작되도록 하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-06 02:03:41920검색

How to Ensure a WinForm App Starts Minimized to the System Tray Without Showing Unexpectedly?

시작 시 WinForm 애플리케이션을 트레이로 최소화

문제

WinForm 애플리케이션 생성 트레이로 최소화할 수 있는 방법은 간단합니다. 그러나 최소화된 상태에서 애플리케이션을 시작하려고 하면 제목 표시줄이 가끔 보이는 Alt-탭 대화 상자에 애플리케이션이 나타납니다.

해결책

응용 프로그램이 시작 시 표시되지 않도록 하려면 SetVisibleCore() 메서드를 재정의할 수 있습니다. 여기에는 다음이 포함됩니다.

protected override void SetVisibleCore(bool value) {
  if (!allowVisible) {
    value = false;
    if (!this.IsHandleCreated) CreateHandle();
  }
  base.SetVisibleCore(value);
}

여기에서 AllowVisible은 애플리케이션이 표시되어야 하는 시기(예: 사용자가 NotifyIcon 컨텍스트 메뉴에서 "표시"를 클릭하는 경우)를 나타내기 위해 설정된 플래그입니다. AllowVisible이 false인 경우 양식이 표시되지 않도록 value 매개변수가 false로 설정됩니다. 단, 폼의 핸들이 생성되지 않은 경우 값을 false로 설정하기 전에 생성해야 합니다.

또한 사용자가 작업 표시줄 아이콘을 두 번 클릭할 때 애플리케이션이 닫히는 것을 방지하기 위해 OnFormClosing 메서드를 사용할 수 있습니다. 재정의됨:

protected override void OnFormClosing(FormClosingEventArgs e) {
  if (!allowClose) {
    this.Hide();
    e.Cancel = true;
  }
  base.OnFormClosing(e);
}

여기에서 AllowClose는 애플리케이션을 닫아야 하는 시기(예: 사용자가 클릭할 때)를 나타내기 위해 설정된 플래그입니다. NotifyIcon 컨텍스트 메뉴에서 "종료"). AllowClose가 false인 경우 양식이 숨겨지고 e.Cancel 속성이 true로 설정되어 애플리케이션이 닫히는 것을 방지합니다.

추가 참고 사항

Load 이벤트 기본 양식은 양식이 처음 표시될 때까지 실행되지 않습니다. 따라서 모든 초기화는 Load 이벤트 핸들러가 아닌 양식의 생성자에서 수행되어야 합니다.

위 내용은 WinForm 앱이 예기치 않게 표시되지 않고 시스템 트레이에 최소화되어 시작되도록 하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.