我在对话框上面放了一个菜单,可不可以给菜单这一栏设定一个颜色啊 我在对话框上面放了一个菜单,可不可以给菜单这一栏设定一个颜色啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Flysnow(飞雪) :你现在会了吗?我还是不会 自画菜单#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 20void 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 popupvoid 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;} 怎么画啊?发个例子给我好吗?[email protected] 用工具条自己做菜单把:)----------以上是引用------------------------老大,简介一下呗,,,好想知道,,windows的资源管理器就是工具条做的,IE也是,开始菜单更牛X,也是用工具条做的.... 关于boost::function和bind的疑问 FEB存在于在系统地址空间还是进程地址空间? 当另外一个程序弹出一个窗口时,如何让弹出的窗口没有焦点 请问如何屏蔽掉 Edit 框的鼠标事件? 请给于指点,谢谢!!急用!!!! 在ActiveX控件中使用多线程后Fire事件的问题 如何给BHO加上对XP theme的支持 100分超弱的问一个IP首部校验和问题 问一个关于dll的小问题哈 请进! VS2010 SP1 win7 64 bit 安装失败 见过小榕的溯雪没有 怎么做出那么漂亮的起始屏 哪里有最新版的vs.net下载?
你现在会了吗?我还是不会
#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;
}
----------以上是引用------------------------老大,简介一下呗,,,好想知道,,windows的资源管理器就是工具条做的,IE也是,开始菜单更牛X,也是用工具条做的....