>백엔드 개발 >C++ >P/Invoke를 사용하여 WPF 창에서 닫기 버튼을 숨기려면 어떻게 해야 합니까?

P/Invoke를 사용하여 WPF 창에서 닫기 버튼을 숨기려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-03 02:37:38448검색

How Can I Hide the Close Button in a WPF Window Using P/Invoke?

WPF Windows에서 닫기 버튼을 숨기는 방법: P/Invoke 솔루션

WPF에서는 닫기 버튼을 숨기는 것이 바람직할 수 있습니다. 제목 표시줄을 유지하면서 모달 대화 상자에서. 기본 제공 WPF 속성은 이 기능을 제공하지 않지만 P/Invoke를 활용하면 해결 방법이 제공됩니다.

1단계: 관련 상수 및 DllImport 함수 선언

시작 다음 상수 및 DllImport 선언을 창에 추가합니다. class:

private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

2단계: Loaded 이벤트에서 닫기 버튼 숨기기

다음으로 Window의 Loaded 이벤트에 다음 코드를 포함합니다.

var hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);

예상 결과:

이 단계를 실행하면 제목 표시줄에서 닫기 버튼이 사라지고 제목 표시줄 자체는 계속 표시됩니다.

중요 참고:

닫기 버튼이 숨겨져 있어도 사용자는 키보드 단축키나 작업 표시줄을 사용하여 창을 닫을 수 있습니다. 이를 방지하려면 다른 답변에서 제안한 대로 OnClosing 이벤트를 재정의하고 취소를 true로 설정하는 것이 좋습니다.

위 내용은 P/Invoke를 사용하여 WPF 창에서 닫기 버튼을 숨기려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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