Код для расширения NETCF MainMenu для поддержки свойства цвета фона - PullRequest
4 голосов
/ 03 октября 2008

Я искал решение для изменения цвета фона в элементе управления MainMenu Compact Framework, и единственный ответ, который я нашел, заключается в том, что вам нужно создать собственный элемент управления. У кого-нибудь есть пример кода для этого?

Ответы [ 3 ]

2 голосов
/ 27 ноября 2008

Я сделал что-то похожее, когда хотел обработать сообщение WM_EXITMENULOOP, которое не было доступно как событие в .NETCF.

Решением было «создать подкласс» главного меню, старого трюка MFC, где вы заменяете функцию WndProc своей собственной, обрабатываете любые сообщения Windows (в моем случае WM_EXITMENULOOP) и вызываете базовый класс WndProc для всего остального. *

Некоторые примеры кода доступны в блоге Алекса Яхнина о том, как подразделить элемент управления: Пример создания подкласса окна в .NETCF

В вашем случае вы бы на самом деле делили на подклассы Форму, в которой находится MainMenu, и я думаю, что WM_DRAWITEM будет сообщением Windows, которое вы захотите обработать самостоятельно. Я сам не пытался изменить цвет фона, поэтому не уверен, что это сработает, но подклассы - это то, с чего я бы начал.

0 голосов
/ 29 ноября 2008

Некоторое время назад я пытался сделать нечто подобное и обнаружил, что вам нужно написать свое собственное меню; по сути с нуля. Я сдался, потому что проект, над которым я работал, не мог позволить себе расходы. Я также обнаружил, что OpenNETCF имеет довольно крутой элемент управления меню. Я не знаю, включено ли оно в их бесплатное программное обеспечение, но, возможно, стоит посмотреть.

0 голосов
/ 29 октября 2008

Нет способа сделать это.
Ваше право в том, что вам, вероятно, понадобится создать свой собственный элемент управления.

Это было то, что я собирался сделать, чтобы приложение работало на Windows CE и Windows Mobile.
Проблема с добавлением меню, когда приложение должно работать с обоими, состоит в том, что меню переходит в верхнюю часть экрана в Windows CE и охватывает все элементы управления, которые могут там быть. В долгосрочной перспективе было бы меньше хлопот, просто сделайте новый контроль.

...