랄라_나라
1
안녕하세요.
WPF 초보 개발자입니다
먼저 국내 닷넷 커뮤니티 사이트의 부재로 소통할 곳이 부족한데…
이런 소중한 곳 마련해주신 분들께 감사드립니다 ^^.
답변 해주시는 모든 분께 미리 감사의 인사를 드리면서… 질문을 드려보면…
Winform 개발시에… Form Resize로 인해… UI 트래픽이 증가하는 경우
WM_ENTERSIZEMOVE 이벤트에 SuspendLayout
WM_EXITSIZEMOVE 이벤트에 ResumeLayout
이벤트를 할당하여, 리사이즈 크기가 확정 되기 전까지… UI 작업을 중단 시켰었는데요…
WPF에는 저런 Layout 관리 할 수 있는 기능이 없는 것 같습니다…
이런 식으로 시도를 해봤는데… Enter 이벤트 진입 후 Window 리사이즈가 아주 쾌적해지면서… 잘 작동하는데…
DispacherProcessingDisabled 오브젝트를 파괴시켜도… 중단 된 UI가 복귀 되지 않더군요…
크롬 브라우져나… 요즘 다른 앱들처럼… Resize를 쾌적하게 할 수 있는 방법이 없을까요 ^^
좋은 조언 부탁드립니다. 감사합니다.
2개의 좋아요
dimohy
2
DispacherProcessingDisabled()
이후 메시지 처리가 되지 않아야 하므로 아마 HookProc
에서는 사용이 불가능 한 것으로 알고 있습니다.
여러가지 솔루션이 있겠지만 그 중에서 쉽게 접근할 수 있는 방법으로
윈도우 사이즈에 따라 사이즈가 변경되는 Content
가 content
라 가정 하면 다음 처럼 구현할 수 있을 것 같습니다.
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
const int WM_ENTERSIZEMOVE = 0x0231;
const int WM_EXITSIZEMOVE = 0x0232;
if (msg is WM_ENTERSIZEMOVE)
{
content.Width = content.ActualWidth;
content.Height = content.ActualHeight;
Debug.WriteLine("ENTER!");
}
else if (msg is WM_EXITSIZEMOVE)
{
content.Width = double.NaN;
content.Height = double.NaN;
Debug.WriteLine("EXIT!");
}
return IntPtr.Zero;
}
| 사이즈 조정 시
| 사이즈 조정 완료 시
4개의 좋아요