Я создал экранную заставку (C#, .NET 4.0, если это имеет значение), но у меня есть пара проблем (на более косметическом уровне). Вероятно, их легко решить, но у меня есть prettu, который никогда не использовал API Win32, поэтому я могу легко пропустить очевидное, когда дело доходит до этого.. NET: владелец диалогового окна конфигурации экранной заставки и фокус предварительного просмотра
Q1: Я установил небольшое окно предварительного просмотра, как это:
SetParent(Handle, hwndParent); SetWindowLong(Handle, GWL_STYLE, new IntPtr(GetWindowLong(Handle, GWL_STYLE) | WS_CHILD)); Rectangle parentRect; GetClientRect(hwndParent, out ParentRect); Size = parentRect.Size;
где hwndParent
разбирается со 2-го аргумента команды. Проблема в том, что окно предварительного просмотра крадет фокус с вкладки настроек экранной заставки. Как наивная попытка, я позвонил SetFocus(hwndParent)
, но это не имело никакого эффекта. Что такое правильный способ держать фокус, где он должен быть
Q2: Если открыть диалог настройки в «обычном способе» создание формы, т.е.
Application.Run(new ConfigurationForm());
диалог не будет модальным апплет панели управления. Как это можно достичь? Я понял, что HWND предполагаемого родителя снабжается аргументом команды как «/ c: nnnnnnnn», но это пока что я получил. (Использование SetParent(hwndParent)
просто вел себя странно, поэтому, по-видимому, это не правильная функция.)