MSDN上的例子不完整啊,弄不出来啊
多谢各位啦!!!!!
多谢各位啦!!!!!
解决方案 »
- 用MFC读取一个word简历中的数据,简历的格式不确定,读取到以后以一个固定的格式的word保存起来,这个有可能做得出吗?
- GetDlgltem 未定义错误?
- [急]用指定环境变量块的方式创建子进程失败 [超级感谢]
- mdi切分多窗口如何实现不同视图不同菜单
- 在static text 画位图为什么不成功阿!各位帮我看看我的代码有什么问题阿!
- 如何实现MPEG2的多倍速播放?(已有MPEG2 DECODER)
- 如何在Project的External Dependencies中增加资源文件?
- 几个问题:(串口)
- 关于VC调用谷歌地图后,向谷歌地图传输变量的问题
- 还是要请蒋晟老师和赵4老师等高手帮我指点迷津,替换OCX的问题
- 如何在对话窗口变化后,控件的大小和相对位置也随之发生变化,请高手指点,急!!!!
- 请问如何合并/分解数据.dbf文件?
http://www.vckbase.com/document/viewdoc/?id=1583
{
MEASUREITEMSTRUCT* lpmis=(MEASUREITEMSTRUCT*)lParam;
if(lpmis!=NULL)
{
if(lpmis->CtlType==ODT_MENU)
{
CustMenuItemData* lpmid;
lpmid=(CustMenuItemData*)lpmis->itemData;
if(lpmid->bIsTop)
{
if(lpmid->nPos==2 || lpmid->nPos==4)
lpmis->itemWidth=40;
else
lpmis->itemWidth=60;
lpmis->itemHeight=22;
}
else
{ lpmis->itemWidth=160; if(lpmis->itemID==0)
lpmis->itemHeight=3;
else
lpmis->itemHeight=22;
}
return TRUE;
}
}
return FALSE;
}
int CMainFrame::OnDrawItem(WPARAM wParam,LPARAM lParam)
{
HBRUSH hbr=NULL,hbrLeft=NULL,hbrSel=NULL,hbrOrg=NULL;
HICON hIcon=NULL;
HFONT hfOrg=NULL; RECT rc;
DRAWITEMSTRUCT* lpdis=(DRAWITEMSTRUCT*)lParam;
if(lpdis!=NULL)
{
if(lpdis->CtlType==ODT_MENU)
{
//Menu item data
CustMenuItemData* lpmid;
lpmid=(CustMenuItemData*)lpdis->itemData;
//Fill entire menu item
if(lpmid->bIsTop==FALSE)
{
hbr=CreateSolidBrush(RGB(249,248,247));
FillRect(lpdis->hDC,&lpdis->rcItem,hbr);
DeleteObject(hbr);
}
else
{
FillRect(lpdis->hDC,&lpdis->rcItem,GetSysColorBrush(COLOR_BTNFACE));
}
//Fill child menu item left
if(lpmid->bIsTop==FALSE)
{
hbrLeft=CreateSolidBrush(RGB(219,216,209));
CopyRect(&rc,&lpdis->rcItem);
rc.right=rc.left+20;
FillRect(lpdis->hDC,&rc,hbrLeft); DeleteObject(hbrLeft);
} //Draw separator
if(lpdis->itemID==0 && lpmid->bIsTop==FALSE)
{
HPEN hpen,hpenOrg;
hpen=CreatePen(PS_SOLID,1,RGB(166,166,166));
hpenOrg=(HPEN)SelectObject(lpdis->hDC,hpen); MoveToEx(lpdis->hDC,24,lpdis->rcItem.top+1,NULL);
LineTo(lpdis->hDC,lpdis->rcItem.right,lpdis->rcItem.top+1); SelectObject(lpdis->hDC,hpenOrg);
DeleteObject(hpen);
return TRUE;
} SetBkMode(lpdis->hDC,TRANSPARENT);
CopyRect(&rc,&lpdis->rcItem); //Draw child menu left icon
if(lpmid->bIsTop==FALSE)
{
switch(lpdis->itemID)
{
case IDM_COMMON_REG:
{
if(lpdis->itemState & ODS_DISABLED)
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_DISABLED_REGISTER));
else
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_REGISTER)); }
break;
case IDM_COMMON_CHARGE:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_CHARGE));
}
break;
case IDM_COMMON_RETURN:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_RETURN));
}
break;
case IDM_COMMON_CHANGEDRUG:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_CHANGEDRUG));
}
break;
case IDM_QUERY_CHARRF:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_CHARRF));
}
break;
case IDM_QUERY_CHARSTAT:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_CHARSTAT)); }
break;
case IDM_QUERY_INVOICE:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_INVOICE));
}
break;
case IDM_QUERY_DOCWORK:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_DOCTORWORK));
}
break;
case IDM_WINDOW_CLOSEALL:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_CLOSEALL));
}
break;
case IDM_SYSCFG_IME:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_IME));
}
break;
case IDM_SYSCFG_CODE:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_QUERYCODE));
}
break;
case IDM_HELP_ABOUT:
{
hIcon=LoadIcon(app.m_hInstance,MAKEINTRESOURCE(IDI_FRAME));
}
} if(hIcon!=NULL)
DrawIconEx(lpdis->hDC,lpdis->rcItem.left+2,lpdis->rcItem.top+2,hIcon,16,16,0,NULL,DI_NORMAL); lpdis->rcItem.left=24;//Reserve for draw icon
} UINT nTextFlag;
if(lpmid->bIsTop)
{
nTextFlag=DT_CENTER | DT_VCENTER | DT_SINGLELINE;
}
else
{
nTextFlag=DT_LEFT | DT_VCENTER | DT_SINGLELINE;
}
hfOrg=(HFONT)SelectObject(lpdis->hDC,m_hfMenuItem); if(lpdis->itemState & ODS_DISABLED)
SetTextColor(lpdis->hDC,RGB(219,216,209)); DrawText(lpdis->hDC,lpmid->szText,-1,&lpdis->rcItem,nTextFlag);
SetTextColor(lpdis->hDC,RGB(0,0,0));
SelectObject(lpdis->hDC,hfOrg); if(lpdis->itemState & ODS_SELECTED && !(lpdis->itemState & ODS_DISABLED))
{
//Draw select item bar
int nROP;
nROP=SetROP2(lpdis->hDC,R2_MASKPEN); lpdis->rcItem.left=rc.left;
CopyRect(&rc,&lpdis->rcItem);
hbrSel=CreateSolidBrush(RGB(182,189,210));
hbrOrg=(HBRUSH)SelectObject(lpdis->hDC,hbrSel); Rectangle(lpdis->hDC,rc.left,rc.top,rc.right,rc.bottom); SelectObject(lpdis->hDC,hbrOrg);
DeleteObject(hbrSel);
SetROP2(lpdis->hDC,nROP); }
SetBkMode(lpdis->hDC,OPAQUE);
return TRUE;
}
}
return FALSE;
}
这是我写的一段代码,用的是SDK
我按照你的程序,模仿着写了一个,去掉了菜单项左边的位图操作,可是怎么运行出来会没什么反映呢,还是原来的样子。自画个菜单怎么就这么费尽呢,msdn里面自画的部分我都看了无数遍啦,哎哟,烦啊
我想麻烦你再跟我说一说自画菜单的具体步骤,我看msdn上说的基本上就是填写MENUITEMINFO 结构,SetMenuItemInfo。然后处理两个消息WM_MEASUREITEM,WM_DRAWITEM,一个设长宽,一个开始画
难啊!!!!!!!!!!
mii.cbSize = sizeof(MENUITEMINFO);
我看msdn上也没写嘛,所以就没写,看来不写还是不行啊
多谢各位回帖的同仁了!!!!!!!!