在对话框添加真彩色的工具条

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 ncucf 的 blog

在对话框添加一个工具条,远没有在文档视图里面加工具条方便。如果套用文档视图里面ctoolbar类,又不能像在文档里面一样添加浮动提示。以下是我在实际应用中做的一个具有提示文字的真彩色的工具条。

 

在类里面添加成员变量:

ctoolbarctrl toolbar;

在初始化对话框的时候:

rect rect;
rect.top=0;
rect.left=0;
rect.right=20;rect.bottom=20;
cbitmap bitmap;
cimagelist imagelist;
bitmap.loadbitmap(idb_bitmap4);
imagelist.create(16,16,ilc_colorddb|ilc_mask,13,1);
imagelist.add(&bitmap,rgb(255,0,255));
toolbar.create(ws_child|ws_visible|ccs_top|tbstyle_tooltips|ccs_adjustable,rect,this,0);
toolbar.sendmessage(tb_setimagelist,0,(lparam)imagelist.m_himagelist);
imagelist.detach();
bitmap.detach();
buttonbitmap=toolbar.addbitmap(13,idr_toolbar1);
toolbar.addstring(ids_string1);
int ncount=0;
for(ncount=0;ncount<13;ncount++)
{
m_button[ncount].ibitmap=buttonbitmap+ncount;
m_button[ncount].idcommand=tool1+ncount;
m_button[ncount].fsstate=tbstate_enabled;
m_button[ncount].fsstyle=tbstyle_button;
m_button[ncount].dwdata=0;
m_button[ncount].istring=ids_string1+ncount;
}


toolbar.addbuttons(ncount,m_button);

这样就为工具条添加了13个按钮。

其中的toolbar.sendmessage(tb_setimagelist,0,(lparam)imagelist.m_himagelist);

是把原来的工具条——既编译器自己添加的256色的工具条(对应的,如果你需要13个按钮,在编译器帮你生成的工具条中,你也需要手动添加13个按钮。)改成真彩色的工具条的方法。在此之前,你要把那真彩色的图片导入到对话框的工程中来。

 

其次就是添加文字提示:

bool ctoolbardlg::onnotify(wparam wparam, lparam lparam, lresult* presult)
{

 
tooltiptext *tt = (tooltiptext *)lparam;

 


cstring tip;

switch(tt->hdr.code)

{

case ttn_needtext:

 

if(tt->hdr.idfrom)
tip.loadstring(tt->hdr.idfrom+1000);

strcpy(tt->sztext,(lpcstr)tip);

 

break;

}

 

 

 return cdialog::onnotify(wparam, lparam, presult);
}

在提示文字之前,你需要增加13个string资源,为了方便,我把string的id号都比对应的工具条按钮的id大1000。这样就可以建立一一对应的关系!

 

        差不多到这地步,就完成了一个基于对话框的真彩色工具条。不过还有一点瑕疵的是:工具条上的按钮,不能像基于文档的工具条按钮那样可以设成自由的大小,这里的按钮不能大于20 x 24大小,不然就会有一部分显示不出来。如果有人有更好的方法,请告诉我!

 

本文关键:在对话框添加真彩色的工具条
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top