Изменение [X] на OK в форме в Windows CE .NET 4.2 в приложении .NET - PullRequest
1 голос
/ 08 января 2010

У меня есть приложение .NET, которое предназначено для работы в Windows Mobile 5 и Windows CE .NET 4.2, и есть некоторые незначительные различия между отображением форм, которые я пытаюсь объединить.

На устройстве WM форма будет отображаться с кнопкой «ОК» в правом верхнем углу, в то время как на CE такая же форма будет отображать «X». Есть ли на CE, чтобы он отображал «OK»? Я видел, как "ОК" появляется в окнах сообщений, поэтому кажется, что я должен быть в состоянии ...

1 Ответ

1 голос
/ 08 января 2010

Самый простой способ - установить стиль окна форм ControlBox = False и MinimizeBox = False, а затем вызвать SHDoneButton в обработчике события Paint формы, а также при его активации или отображении. Вы действительно должны сделать это только перед тем, как форма станет окном переднего плана, но я обнаружил, что вы также должны вызывать его в обработчике событий Paint. Так что SHDoneButton(this.handle, SHDB_SHOW) где SHDB_SHOW = 0x0001 вам понадобится:

[DllImport("aygshell.dll")]
public static extern bool SHDoneButton(IntPtr hWnd, UInt32 dwState);

где-то тоже.

Согласно связанной документации:

Обычно кнопкой Готово управляет оболочка, и отображение или скрытие кнопки ОК происходит автоматически. Окно верхнего уровня, для которого должна появиться кнопка Готово, должно использовать стиль окна WS_EX_CAPTIONOKBTN.

Чтобы появилась кнопка ОК, убедитесь, что в вашем окне нет стилей WS_CAPTION или WS_CHILD.

Всякий раз, когда изменяется окно переднего плана, оболочка проверяет биты стиля окна, чтобы определить, должна ли кнопка ОК отображаться на панели задач. Кнопка OK имеет приоритет над строкой меню, добавленной на панель задач.

...