我在对话框上面放了一个菜单,可不可以给菜单这一栏设定一个颜色啊

hdyd 2002-03-05 03:49:11
我在对话框上面放了一个菜单,可不可以给菜单这一栏设定一个颜色啊
...全文
64 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingcom 2002-08-12
  • 打赏
  • 举报
回复
用工具条自己做菜单把:)
----------以上是引用------------------------

老大,简介一下呗,,,好想知道,,windows的资源管理器就是工具条做的,IE也是,开始菜单更牛X,也是用工具条做的....
XiangDong 2002-08-12
  • 打赏
  • 举报
回复
用工具条自己做菜单把:)
kingcom 2002-08-12
  • 打赏
  • 举报
回复
自画菜单都会.问题是菜单栏能不能自画呀....
hdyd 2002-05-20
  • 打赏
  • 举报
回复
怎么画啊?发个例子给我好吗?linxiao001@x263.net
Q_O 2002-05-20
  • 打赏
  • 举报
回复
自画一下。very easy!
hdyd 2002-03-26
  • 打赏
  • 举报
回复
谁能再说的详细点?
ahao 2002-03-26
  • 打赏
  • 举报
回复
楼上的?他问的是菜单这一行,不是菜单项.是吧?
sufeng 2002-03-26
  • 打赏
  • 举报
回复
自画菜单

#include "stdafx.h"
#include "ctrltest.h"
CColorMenu::CColorMenu()
{
VERIFY(CreateMenu());
}

CColorMenu::~CColorMenu()
{
Detach();
ASSERT(m_hMenu == NULL); // defaul CMenu::~CMenu will destroy
}

void CColorMenu::AppendColorMenuItem(UINT nID, COLORREF color)
{
VERIFY(AppendMenu(MF_ENABLED | MF_OWNERDRAW, nID, (LPCTSTR)color));
}

/////////////////////////////////////////////////////////////////////////////

#define COLOR_BOX_WIDTH 20
#define COLOR_BOX_HEIGHT 20


void CColorMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
{
// all items are of fixed size
lpMIS->itemWidth = COLOR_BOX_WIDTH;
lpMIS->itemHeight = COLOR_BOX_HEIGHT;
}

void CColorMenu::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
CDC* pDC = CDC::FromHandle(lpDIS->hDC);
COLORREF cr = (COLORREF)lpDIS->itemData; // RGB in item data

if (lpDIS->itemAction & ODA_DRAWENTIRE)
{
// Paint the color item in the color requested
CBrush br(cr);
pDC->FillRect(&lpDIS->rcItem, &br);
}

if ((lpDIS->itemState & ODS_SELECTED) &&
(lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
{
// item has been selected - hilite frame
COLORREF crHilite = RGB(255-GetRValue(cr),
255-GetGValue(cr), 255-GetBValue(cr));
CBrush br(crHilite);
pDC->FrameRect(&lpDIS->rcItem, &br);
}
/*
if (!(lpDIS->itemState & ODS_SELECTED) &&
(lpDIS->itemAction & ODA_SELECT))
{
// Item has been de-selected -- remove frame
CBrush br(cr);
pDC->FrameRect(&lpDIS->rcItem, &br);
}*/
}

/////////////////////////////////////////////////////////////////////////////
// custom menu test - menu ids: index of color.

static COLORREF colors[] = {
0x00000000, // black
0x00FF0000, // blue
0x0000FF00, // green
0x00FFFF00, // cyan
0x000000FF, // red
0x00FF00FF, // magenta
0x0000FFFF, // yellow
0x00FFFFFF // white
};
const int nColors = sizeof(colors)/sizeof(colors[0]);


/////////////////////////////////////////////////////////////////////////////

// Call AttachCustomMenu once
// it will replace the menu item with the ID 'IDM_TEST_CUSTOM_MENU'
// with a color menu popup
// Replace the specified menu item with a color popup
void CTestWindow::AttachCustomMenu()
{
// now add a few new menu items

for (int iColor = 0; iColor < nColors; iColor++)
m_colorMenu.AppendColorMenuItem(IDS_COLOR_NAME_FIRST + iColor, colors[iColor]);

// Replace the specified menu item with a color popup
// (note: will only work once)
CMenu* pMenuBar = GetMenu();
ASSERT(pMenuBar != NULL);
TCHAR szString[256]; // don't change the string

pMenuBar->GetMenuString(IDM_TEST_CUSTOM_MENU, szString, sizeof(szString),
MF_BYCOMMAND);
VERIFY(GetMenu()->ModifyMenu(IDM_TEST_CUSTOM_MENU, MF_BYCOMMAND | MF_POPUP,
(UINT)m_colorMenu.m_hMenu, szString));
}

/////////////////////////////////////////////////////////////////////////////


BOOL CTestWindow::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (wParam < IDS_COLOR_NAME_FIRST || wParam >= IDS_COLOR_NAME_FIRST + nColors)
return CFrameWnd::OnCommand(wParam, lParam); // default

// special color selected
CString strYouPicked;
strYouPicked.LoadString(IDS_YOU_PICKED_COLOR);

CString strColor;
strColor.LoadString(wParam);

CString strMsg;
strMsg.Format(strYouPicked, (LPCTSTR)strColor);

CString strMenuTest;
strMenuTest.LoadString(IDS_MENU_TEST);

MessageBox(strMsg, strMenuTest);

return TRUE;
}
qingbo 2002-03-26
  • 打赏
  • 举报
回复
在菜单上放置位图
hdyd 2002-03-26
  • 打赏
  • 举报
回复
就这样了?
macrogu 2002-03-19
  • 打赏
  • 举报
回复
采用自画菜单
hdyd 2002-03-19
  • 打赏
  • 举报
回复
up
宝_爸 2002-03-08
  • 打赏
  • 举报
回复
在CODEGURU上有例子。。。
apocn 2002-03-06
  • 打赏
  • 举报
回复
可以在菜单上贴图,即改变了菜单的背景图案。
hdyd 2002-03-06
  • 打赏
  • 举报
回复
Flysnow(飞雪) :
你现在会了吗?我还是不会
Fnoopy 2002-03-06
  • 打赏
  • 举报
回复
哈哈哈,双赢双赢
Flysnow 2002-03-05
  • 打赏
  • 举报
回复
关注,我做界面时,其他的颜色我都变了,就是菜单的背景色我改不了

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧