为什么菜单条目的文字都跑到弹出的子菜单的第一个item里去了啊,其他item显示的时候无文字,奇怪了!!!
代码如下:
//draw menu
case WM_INITMENU:{
HMENU hMenu=(HMENU)wParam;
int iCntMenu=GetMenuItemCount(hMenu);
UINT uMenuID; HMENU hSubMenu;
int iSubMenuCnt; for(int i=0;i<iCntMenu;i++){
hSubMenu=GetSubMenu(hMenu,i);
iSubMenuCnt=GetMenuItemCount(hSubMenu);
for(int j=0;j<iSubMenuCnt;j++){
UINT uSubMenuID=GetMenuItemID(hSubMenu,j);
ModifyMenu(hSubMenu,j,MF_BYPOSITION|MF_OWNERDRAW,uSubMenuID,NULL);
}
}
}
return 0; case WM_MEASUREITEM:{
LPMEASUREITEMSTRUCT pMIS=(LPMEASUREITEMSTRUCT)lParam;
if(pMIS->CtlType==ODT_MENU){ //menu

if(pMIS->itemID==0){ //separator
pMIS->itemHeight=1;
pMIS->itemWidth=40;
}else{
pMIS->itemHeight=20;
pMIS->itemWidth=40;
}
}
}
return TRUE;

case WM_DRAWITEM:{
LPDRAWITEMSTRUCT pDIS=(LPDRAWITEMSTRUCT)lParam;
if(pDIS->CtlType==ODT_MENU){ //menu
HDC hDC=pDIS->hDC;
int iOldBkMode=SetBkMode(hDC,TRANSPARENT); HMENU hMenu=(HMENU)pDIS->hwndItem; RECT rtItemAll=pDIS->rcItem; if(pDIS->itemID!=0){
TCHAR szMenuStr[32];
int iStrCnt=GetMenuString(hMenu,pDIS->itemID,szMenuStr,32,MF_BYCOMMAND);

if(pDIS->itemAction & ODA_SELECT){
if(pDIS->itemState & ODS_SELECTED){
HBRUSH hBrSel=CreateSolidBrush(RGB(148,170,214));
FillRect(hDC,&rtItemAll,hBrSel);
DeleteObject(hBrSel);
}else{
HBRUSH hBrNorm=CreateSolidBrush(RGB(255,255,255));
FillRect(hDC,&rtItemAll,hBrNorm);
DeleteObject(hBrNorm);
}
}
TextOut(hDC,rtItemAll.top+2,rtItemAll.left+2,szMenuStr,iStrCnt);
SetBkMode(hDC,iOldBkMode);
}
}
}
return TRUE;  背景画的没问题,请高手相援!