2016-04-05 11 views
1

Ben otomasyon için (UI test amaçlı) bir MFC uygulaması TestStack.White kullanmaya çalışıyorum nullCMFCMenuBar ve TestStack.White win.MenuBar

CMFCMenuBar (ile yazılmış bir MFC Uygulaması ile TestStack.White kullanarak Daha sonra Yerleştirme çerçevesi MFC) aşağıdaki gibi bir kod nedeniyle window.MenuBar Ben şu

TestStack.White.UIItems.MenuItems.Menu windowMenu = win.Get<TestStack.White.UIItems.MenuItems.Menu(SearchCriteria.ByText("Window")); 
windowMenu.Click(); 
ile aşabilirler biliyorum

var menu = window.MenuBar.MenuItem("Window"); 
menu.Click(); 

boş olmasının başarısız fark 10

Ama gerçekten yapmak istediğim, WindowMenus'u almak, böylece pencere menüsünde açılan pencerelerin listesini kontrol edebilirim, ancak windowMenu.ChildMenus boş

Bunun gerçekten menünün gerçekten olduğundan eminim bir araç çubuğu/araç şeridini (dock)

kimse Pencere menüsü menü öğeleri (Çini, Cascale, Window1 ....) nasıl biliyor mu

başkasının bu sorunu görmüş ya da etrafında bir iş bulmuş Has ? peşin

Teşekkür

Paul

cevap

0

Evet, MFC özellik paketi menüsü gerçekten düğmeleri olan bir araç çubuğu olduğunu. Ve eski stil menüsüne göre farklı bir işlem kullanılarak yerine getirilmiştir. senin CFrameWndEx türetilmiş sınıfta

, menü çubuğunu almak için yapabileceğiniz:

CMFCMenuBar *pMenuBar= m_Impl.GetMenuBar(); 

Sonra onunla ne yapacağını bağlıdır. Eğer menü çubuğunu oluşturan CMenu nesneyi almak istiyorsanız Örneğin, yapabilirsiniz:

CMenu* pMenu= pMenuBar->GetMenu(); 

menüler bazılarını kaldırmak isterseniz, (ters sırasını edin) yapabilirsiniz:

pMenuBar->RemoveButton(4); 
pMenuBar->RemoveButton(3); 

ana çerçevesini başlatırken çağrı yığını de görebileceğiniz gibi bu yeni MFC Feature Pack sınıfları kasıtlı SetMenu(NULL) yapmak çünkü YourCFrameWndExDerivedClass::GetMenu() tarafından menü tipik bir yol alamayan:

enter image description here

kesinlikle emin değilim, ama aynı zamanda eski tarz menülerde geldiğince kılma YourCFrameWndExDerivedClass::OnInitMenu() yapmak mümkün olmayacaktır düşünüyorum. Ancak yine de YourCFrameWndExDerivedClass::OnInitMenuPopup() geçersiz saygısını kullanabilirsiniz.