CMenu美化 和CButton

来源:互联网 发布:qq安全中心钓鱼源码 编辑:程序博客网 时间:2024/05/16 05:14

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”的窗口

原创粉丝点击