Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ASP.NET Core
- Entity Framework
- WebApi
- AIKiritan
- MYSQL
- remote debugging
- neutrino
- 뉴트리노
- AI키리탄
- ASP.NET
- IIS
Archives
- Today
- Total
개발자의 코드 노트
WPF 투명창 애니메이션 복원 본문
WPF에서 투명한 창을 만들기 위해 AllowsTransparency="True"로 설정할경우,
Windows의 기본 최소화 / 최대화 애니메이션이 비활성된다는건 모두 아실겁니다.
최근에 커스텀 디자인의 창을 개발할 일이 있어서 조금 연구를 해본 결과,
특정한 스타일의 조합을 통해 투명창 상태에서도 애니메이션을 활성화하는게 가능합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | const int GWL_STYLE = -16; const uint WS_POPUP = 0x80000000; const uint WS_CAPTION = 0x00C00000; const uint WS_SYSMENU = 0x00080000; const uint WS_MINIMIZEBOX = 0x00020000; const uint WS_MAXIMIZEBOX = 0x00010000; const uint WS_THICKFRAME = 0x00040000; const uint WM_NCCALCSIZE = 0x83; [DllImport("user32")] private static extern int SetWindowLong(IntPtr hwnd, int index, uint newLong); private void MainWindow_Loaded(object sender, RoutedEventArgs e) { var hwnd = new WindowInteropHelper(this).Handle; SetWindowLong(hwnd, GWL_STYLE, WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION); } | cs |
여기서 핵심은 WS_CAPTION이며, WS_THICKFRAME 스타일은 선택적으로 제외할 수 있지만,
리사이즈가 불가능한 창으로 취급되서 그런지 에어로 스냅과 관련된 기능이 동작하지 않습니다.
참고로 최소화 / 최대화 효과만 복원되고 기본 그림자나 열기 / 닫기 애니메이션은 없습니다.
'프로그래밍 > NET Framework' 카테고리의 다른 글
ASP.NET Core 프로젝트를 IIS 서버에 게시 (0) | 2018.05.19 |
---|---|
ASP.NET Core Entity Framework MySQL 연동 (1) | 2018.05.19 |
ASP.NET Core WebAPI 시작 (0) | 2018.05.19 |
MVVM 디자인 패턴에 대해서 (1) | 2015.11.26 |
외부 어셈블리에 이벤트 핸들러 추가 (0) | 2015.11.17 |
Comments