我有driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='DeDuplication & Survivorship_iFrame']")));
//then access the webelements like drop down box or text box in the page
Select dropdown = new Select(driver.findElement(By.id("ruleId")));
dropdown.selectByVisibleText("titlecheck");//etc
//After accessing all the elements in that iframe switchout of the iframe
driver.switchTo().defaultContent();
CDialog
。当我打开它时,一切正常:
当我点击其他地方关闭菜单时会出现问题。菜单似乎不可关闭,除非用户选择它的选项。如果我按下键盘上的Escape,对话框会自动关闭,这太激烈了;我真的希望它只关闭菜单。
我知道我可以通过设置其属性" OS菜单"来解决这个问题。在资源文件中为True(或等效地,分配其属性CFMCMenuButton
)。我会得到:
正如您在图片中看到的,后果是:
m_bOSMenu= TRUE
完成的(非常重要的)(旁注:第二个菜单栏也由OnInitMenuPopup
完成,它应该是显示的)。如果用户点击这些选项,他们将会工作,他们不应该。我该如何解决这个问题?
答案 0 :(得分:1)
答案来自MFC来源。
afxmenubutton.cpp
函数中的文件CMFCMenuButton::OnShowMenu
建议使用CDialogEx
代替CDialog
:
#ifdef _DEBUG
if ((pParent->IsKindOf(RUNTIME_CLASS(CDialog))) && (!pParent->IsKindOf(RUNTIME_CLASS(CDialogEx))))
{
TRACE(_T("CMFCMenuButton parent is CDialog, should be CDialogEx for popup menu handling to work correctly.\n"));
}
#endif
然后我将对话框类改为派生自CDialogEx
,现在一切正常!将OS Menu属性设置为False,将显示图标,并且禁用的选项实际上已禁用并显示为灰色!