一个菜单项改为弹出菜单后,能改变这个菜单项的高度吗? your must modify all it's menu items's MeasureItem. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题我碰到过,发现在MeasureItem里MFC的内部对弹出式菜单返回为NULL,后来不得以重写此函数,不知是否不对或有其他方法 // Measure item implementation relies on unique control/menu IDsvoid CWnd::OnMeasureItem(int /*nIDCtl*/, LPMEASUREITEMSTRUCT lpMeasureItemStruct){ if (lpMeasureItemStruct->CtlType == ODT_MENU) { ASSERT(lpMeasureItemStruct->CtlID == 0); CMenu* pMenu; _AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData(); if (pThreadState->m_hTrackingWindow == m_hWnd) { // start from popup pMenu = CMenu::FromHandle(pThreadState->m_hTrackingMenu); } else { // start from menubar pMenu = GetMenu(); } pMenu = _AfxFindPopupMenuFromID(pMenu, lpMeasureItemStruct->itemID); if (pMenu != NULL) pMenu->MeasureItem(lpMeasureItemStruct); else TRACE1("Warning: unknown WM_MEASUREITEM for menu item 0x%04X.\n", lpMeasureItemStruct->itemID); } else { CWnd* pChild = GetDescendantWindow(lpMeasureItemStruct->CtlID, TRUE); if (pChild != NULL && pChild->SendChildNotifyLastMsg()) return; // eaten by child } // not handled - do default Default();} 关于 回调函数的定义使用方法问题 windows mobile 开发的前景怎么样啊? 怎么使ActiveMovie控件只显示上面部分 此程序为什么不能访问成员变量(我最痛苦的就是编译正常,调试不出来什么东西,却运行不正常) 控件的消息分类 我搞晕了 急求!!!! SetLayeredWindowAttributes + WS_CHILD ? 请问如何去测试我的调用的外部程序是否已运行完毕. 如何在对话框的某个位置创建位图?请进 关于多播的一个弱问题!!! 关于window2000外壳服务的程序(高手请进!!!) 删除文件到回收站 请问怎样才能算是真正的面向对象编程思想?
void CWnd::OnMeasureItem(int /*nIDCtl*/, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
if (lpMeasureItemStruct->CtlType == ODT_MENU)
{
ASSERT(lpMeasureItemStruct->CtlID == 0);
CMenu* pMenu; _AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
if (pThreadState->m_hTrackingWindow == m_hWnd)
{
// start from popup
pMenu = CMenu::FromHandle(pThreadState->m_hTrackingMenu);
}
else
{
// start from menubar
pMenu = GetMenu();
} pMenu = _AfxFindPopupMenuFromID(pMenu, lpMeasureItemStruct->itemID);
if (pMenu != NULL)
pMenu->MeasureItem(lpMeasureItemStruct);
else
TRACE1("Warning: unknown WM_MEASUREITEM for menu item 0x%04X.\n",
lpMeasureItemStruct->itemID);
}
else
{
CWnd* pChild = GetDescendantWindow(lpMeasureItemStruct->CtlID, TRUE);
if (pChild != NULL && pChild->SendChildNotifyLastMsg())
return; // eaten by child
}
// not handled - do default
Default();
}