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

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在对话框添加一个工具条,远没有在文档视图里面加工具条方便。如果套用文档视图里面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大小,不然就会有一部分显示不出来。如果有人有更好的方法,请告诉我!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航