下列的这段代码是我从网上找的,希望对你有帮助!
先找到自己想要的Ico图标,并将这些图标依次加到程序资源中,声明一个CToolBar m_wndToolBar工具栏变量和
CImageList img变量;
在程序中创建工具栏如下,其中各项参数可以参考MSDN:
if(m_wndToolBarCreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC )
||m_wndToolBarLoadToolBar(IDR_TOOLBAR1))
{
TRACE0(_T("创建工具条失败\n"));
}
m_wndToolBarGetToolBarCtrl()SetButtonWidth(43, 70);
在ImageList中加上自己想要的图标
ImgCreate(22, 22, ILC_COLOR8|ILC_MASK,2,2);
ImgSetBkColor(::GetSysColor(COLOR_BTNFACE));
imgAdd(AfxGetApp()->LoadIcon(IDI_ICON1));
imgAdd(AfxGetApp()->LoadIcon(IDI_ICON2));
imgAdd(AfxGetApp()->LoadIcon(IDI_ICON3));
imgAdd(AfxGetApp()->LoadIcon(IDI_ICON4));
m_wndToolBarGetToolBarCtrl()SetHotImageList(&img);
imgDetach();
得到按钮的大小,设置按钮的大小
CRect rectToolBar;
m_wndToolBarGetItemRect(0, &rectToolBar);
m_wndToolBarSetSizes(rectToolBarSize(), CSize(20,20));
一个可能是你的bitmap没有设置成成员变量
二个 是你的bitmap 太大了,只显示了左上角一部分,刚好你的位图不在那里(一般是1313)
在这里面 *** 作
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
获取位图大小,用完可以注释掉
CString str;
strFormat("x=%d,y=%d",GetSystemMetrics(SM_CXMENUCHECK),
GetSystemMetrics(SM_CYMENUCHECK));
MessageBox(str);
获得以后,你自己去调整位图大小
后面是
GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);
GetSubMenu(0)//0为第一个菜单
SetMenuItemBitmaps 第一个参数为第一个子菜单
///对话框类头文件里
HICON picon1;
HICON picon2;
HICON picon3;
int c;
CStatic m_image;///图像控件的。控制变量
//对话框初始化里。IDI_ICON1等是插入的三个小图标。
c=0;
m_imageSetIcon(m_hIcon);
c++;
picon1=AfxGetApp()->LoadIcon(IDI_ICON1);
picon2=AfxGetApp()->LoadIcon(IDI_ICON2);
picon3=AfxGetApp()->LoadIcon(IDI_ICON3);
///按扭响应函数
void CMyDlg::OnButton1()
{
// TODO: Add your control notification handler code here
switch(c)
{
case 0:
m_imageSetIcon(m_hIcon);
c++;
break;
case 1:
m_imageSetIcon(picon1);
c++;
break;
case 2:
m_imageSetIcon(picon2);
c++;
break;
case 3:
m_imageSetIcon(picon3);
c=0;
break;
default:
c=0;
break;
}
}
GetIconWndClass就是框架窗口创建之前的资源准备,这个函数并不仅仅是准备了icon,而是包括了框架和资源整合的大部分工作。这个函数只能被LoadFrame调用,不可以自己来调用。
如果是系统运行出现这个LoadIcon的问题,一般是资源被锁定或占用,具体原因没调试不好说。
如果是你自己要使用LoadIcon,在MFC下不需要这么用,app类有LoadIcon成员函数处理这些事物,或者用LoadImage加载图标,可以获得更灵活的形式。
m_TreeCtrl Control CTreeCtrl
同时利用“MESSAGES MAP”为各命令按钮增加控制功能函数。
然后在代码文件VCTREEDlgCPP中分别加入如下控制代码:
(1)在文件开始处增加图像列表定义
CImageList Cil1,Cil2;//大小图标像列表
(2)在初始化文件开始处增加代码
BOOL CVCTREEDlg::OnInitDialog()
{ CDialog::OnInitDialog();
//原来其它代码
// TODO: Add extra initialization here
// 此处开始增加代码
CVCTREEApp pApp=(CVCTREEApp )AfxGetApp();//创建图象列表
Cil1Create(16,16,ILC_COLOR,2,2);
Cil1Add(pApp->LoadIcon(IDI_PM));
Cil1Add(pApp->LoadIcon(IDI_CJ));
m_TreeCtrlSetImageList(&Cil1,TVSIL_NORMAL); //设置图象列表
DWORD dwStyles=GetWindowLong(m_TreeCtrlm_hWnd,GWL_STYLE);//获取树控制原风格
dwStyles|=TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;
SetWindowLong(m_TreeCtrlm_hWnd,GWL_STYLE,dwStyles);//设置风格
char CJ[4]={"玉溪卷烟厂","云南卷烟厂","沈阳卷烟厂","成都卷烟厂"};//根数据名称
char PM[4][5]={
{"红梅一","红梅二","红梅三","红梅四","红梅五"},//产品数据项
{"白梅一","白梅二","白梅三","白梅四","白梅五"},
{"绿梅一","绿梅二","绿梅三","绿梅四","绿梅五"},
{"青梅一","青梅二","青梅三","青梅四","青梅五"}};
int i,j;
HTREEITEM hRoot,hCur;//树控制项目句柄
TV_INSERTSTRUCT TCItem;//插入数据项数据结构
TCItemhParent=TVI_ROOT;//增加根项
TCItemhInsertAfter=TVI_LAST;//在最后项之后
TCItemitemmask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//设屏蔽
TCItemitempszText="数据选择";
TCItemitemlParam=0;//序号
TCItemitemiImage=0;//正常图标
TCItemitemiSelectedImage=1;//选中时图标
hRoot=m_TreeCtrlInsertItem(&TCItem);//返回根项句柄
for(i=0;i<4;i++){//增加各厂家
TCItemhParent=hRoot;
TCItemitempszText=CJ[i];
TCItemitemlParam=(i+1)10;//子项序号
hCur=m_TreeCtrlInsertItem(&TCItem);
for(j=0;j<5;j++){//增加各产品
TCItemhParent=hCur;
TCItemitempszText=PM[i][j];
TCItemitemlParam=(i+1)10+(j+1);//子项序号
m_TreeCtrlInsertItem(&TCItem);
}
m_TreeCtrlExpand(hCur,TVE_EXPAND);//展开树
}
m_TreeCtrlExpand(hRoot,TVE_EXPAND);//展开上一级树
return TRUE; // return TRUE unless you set the focus to a control
}
需要注意,在MFC向导自动生成的对话框类的源代码中,如果没有OnInitDialog()函数,需要手动向其中添加,具体方法如下:
1在ClassView向导中右键单击d出的对话框类名,选择Add
Virtual
Function;
2在d出的对话框左边列表中选择OnInitDialog函数,并单击Add
and
Edit按钮;
以上就是关于各位大侠,我想在MFC的工具栏上添加自己的图标(在网上下载的图片),具体应该怎样 *** 作呢谢谢!~全部的内容,包括:各位大侠,我想在MFC的工具栏上添加自己的图标(在网上下载的图片),具体应该怎样 *** 作呢谢谢!~、关于mfc菜单项图标问题的,大侠帮帮忙啊、mfc加载图标资源的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)