Мое приложение в C # 3.5, Winforms, но для этого, скорее всего, все равно потребуется P / Invoke, так что оно не так строго привязано к .NET.
Я создал нарисованные владельцем пункты меню через ContextMenu
и MenuItem
классы.Все работает хорошо, но для некоторых элементов я бы хотел создать небольшую анимацию (показывающую, что запущен процесс, связанный с элементом).К сожалению, вышеупомянутые два класса не предоставляют метод Invalidate()
или что-либо подобное.
На данный момент моя лучшая идея - P / Invoke WindowFromDC()
на первом OnDraw, сохранить полученный дескриптор, а затем периодическизвоните InvalidateRect()
на ручку, пока меню не закроется.
Это кажется довольно хакерским, я еще не пробовал, и задаюсь вопросом, есть ли более элегантный способ.