CButton可以利用CBitmapButton测试。
CMenu 如果重绘效果更好
CMenu *pSubMenu=m_Menu.GetSubMenu(0);//获得子菜单(如果有)0表示索引,对应“文件”菜单
for(int i=0;i<3;i++)
{
CBitmap bmp;
bmp.LoadBitmap(IDB_TITLE_CLOSE);
pSubMenu->SetMenuItemBitmaps(i,MF_BYPOSITION,NULL,NULL);
bmp.Detach();
}
CBitmap bmp;
CBrush m_BKBrush;
bmp.LoadBitmap(IDB_DLG_BACKBIT);
m_BKBrush.CreatePatternBrush(&bmp);//创建位图画刷
MENUINFO mnInfo;
memset(&mnInfo,0,sizeof(MENUINFO));
mnInfo.cbSize=sizeof(MENUINFO);
mnInfo.fMask=MIM_BACKGROUND;
mnInfo.hbrBack=m_BKBrush;
::SetMenuInfo(pSubMenu->m_hMenu,&mnInfo);
m_BKBrush.Detach();
但是菜单标题栏还是没有美化,最顶层的Pop样式,我们可以用TrackPopMenu来代替,前面的设置。子菜单标题用按钮来做。
贴图加上 重绘菜单,效果比较好,
只是重绘,菜单边框去不掉。
利用资源创建的窗体控件OnCreate函数不执行。 ?不知道为什么
CMenu是继承CObject的,不是CWnd子类,没有句柄变量不能通过SetWindowLong 只能利用利用 WH_CBT 等挂钩,勾住OnCreate查看CreateStruct里面参数,查看是不是菜单类是类名为“#32768”的窗口