Я создал заставку (C #, .NET 4.0, если это имеет значение), но у меня есть пара проблем (хотя и на более косметическом уровне).Их, вероятно, легко решить, но я уже почти никогда не использовал Win32 API, поэтому я легко могу упустить очевидное, когда дело доходит до этого.
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
анализируется из второго аргумента команды.Проблема здесь в том, что окно предварительного просмотра крадет фокус на вкладке настроек заставки.В качестве наивной попытки я позвонил SetFocus(hwndParent)
, но это не дало никаких результатов.Как правильно удерживать фокус там, где он должен быть
Q2: Если я открою диалоговое окно конфигурации «обычным способом» создания формы, то есть
Application.Run(new ConfigurationForm());
, диалоговое окно будетне быть модальным для апплета панели управления.Как этого достичь?Я понял, что HWND предполагаемого родителя предоставляется с аргументом команды как "/ c: nnnnnnnn", но это все, что я получил.(Использование SetParent(hwndParent)
просто вело себя странно, так что это, очевидно, неправильная функция.)