Код для расширения NETCF MainMenu для поддержки свойства цвета фона
-
03-07-2019 - |
Вопрос
Я искал решение для изменения цвета фона в элементе управления MainMenu Compact Framework, и единственный ответ, который я нашел, заключается в том, что вам нужно создать пользовательский элемент управления. У кого-нибудь есть пример кода для этого?
Решение
Нет способа сделать это.
Ваше право в том, что вам, вероятно, потребуется создать свой собственный элемент управления.
В любом случае я собирался сделать это, чтобы приложение работало на Windows CE и Windows Mobile.
Проблема с добавлением меню, когда приложение должно работать с обоими, состоит в том, что меню переходит в верхнюю часть экрана в Windows CE и охватывает все элементы управления, которые могут быть там.
В долгосрочной перспективе было бы меньше хлопот, просто создайте новый элемент управления.
Другие советы
Я сделал нечто похожее, когда хотел обработать сообщение WM_EXITMENULOOP, которое не было доступно как событие в .NETCF. Р>
Решением было "подкласс" Главное меню, старый трюк MFC, где вы заменяете функцию WndProc своей собственной, обрабатывает любые сообщения Windows (в моем случае WM_EXITMENULOOP) и вызывает базовый класс WndProc для всего остального.
В блоге Алекса Яхнина есть пример кода о том, как создать подкласс для элемента управления: Пример создания подкласса окна в .NETCF
В вашем случае вы на самом деле делите на подклассы форму, в которой находится MainMenu, и я думаю, что WM_DRAWITEM будет сообщением Windows, которое вы захотите обработать самостоятельно. Я сам не пытался изменить цвет фона, поэтому не совсем уверен, что это сработает, но я бы начал с создания подклассов.
Некоторое время назад я пытался сделать нечто подобное и обнаружил, что вам нужно написать свое собственное меню; по сути с нуля. Я сдался, потому что проект, над которым я работал, не мог позволить себе расходы. Я также обнаружил, что OpenNETCF имеет довольно крутой элемент управления меню. Я не знаю, включено ли это в их бесплатное программное обеспечение, но, возможно, стоит посмотреть.