otóż dla elementów TMenuItem menu głównego, mamy w Turbo C++ (nie wiem jak w nowszych) mało zdarzeń do oprogramowania (w przeciwieństwie do VS 2008), tj. nie mamy np. OnMouseEnter. Tak, więc trzeba się zabrać za obsługę komunikatów. Korzystając z polimorfizmu, przysłaniamy metodę WndProc w klasie naszej formatki. Spr. czy Msg to WM_MENUSELECT - komunikat wysyłany po kliknięcu, podświetleniu elementu lub kliknięciu poza menu:
- Kod: Zaznacz cały
protected:
virtual void __fastcall WndProc(TMessage& MSG){
if(MSG.Msg == WM_MENUSELECT){
//??
}
TForm::WndProc(MSG); // resztą komunikatów nie zawracamy sobie głowy
}
Tu własnie jest pytanie: Jakie pola struktury TMessage porównać z jakimi właściwościami klasy TMenuItem, aby dostać informację, który element menu jest aktualnie podświetlany?
...
później...
TMenuItem ma właściwość Command (ushort), ale Turbo jakoś dziwnie nadaje id elementom menu, kiedy element nie rozwija się w nowe menu to jest ok, ale jak istnieje podmenu to pole Command ma wartość już przypisaną do innego elementu menu (z podmenu lub nie), co uniemożliwia jego jednoznaczną identyfikację... . Nie wiem co pozostaje do zrobienia, chyba tworzyć menu czystym WinApi?




