为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

在基于对话框的MFC中添加工具栏以及工具栏提示信息并改变图标支持256色.doc

2017-11-13 5页 doc 17KB 55阅读

用户头像

is_731942

暂无简介

举报
在基于对话框的MFC中添加工具栏以及工具栏提示信息并改变图标支持256色.doc在基于对话框的MFC中添加工具栏以及工具栏提示信息并改变图标支持256色.doc 在基于单文档和基于多文档的MFC中,工具栏是自动添加的,但是在基于对话框的MFC中 则需要编者用代码添加,而且工具栏的提示信息的添加也较SDI和MDI要复杂的多,下面就 是我总结的如何在基于对话框的MFC中添加工具栏,以及工具栏的提示信息,以及改变工 具栏的图标,使其支持256色。 1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_wndtool...
在基于对话框的MFC中添加工具栏以及工具栏提示信息并改变图标支持256色.doc
在基于对话框的MFC中添加工具栏以及工具栏提示信息并改变图标支持256色.doc 在基于单文档和基于多文档的MFC中,工具栏是自动添加的,但是在基于对话框的MFC中 则需要编者用代码添加,而且工具栏的提示信息的添加也较SDI和MDI要复杂的多,下面就 是我总结的如何在基于对话框的MFC中添加工具栏,以及工具栏的提示信息,以及改变工 具栏的图标,使其支持256色。 1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_wndtoolbar;//添加工具栏 CImageList m_ilToolBar;//使工具栏图标显示256色 3.在主程序的.h文件中加入函数: afx_msg BOOL OnToolTipText(UINT NID, NMHDR* pNMHDR, LRESULT* pResult);//使工具栏显示 提示信息 4.在主程序的.h文件中的BEGIN_MESSAGE_MAP(CDetectorDlg, CDialog)函数里加入: ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )//使工具栏显示提示信息 5.在主程序的.cpp文件中,在初始化的地方(OnCreate或者OnInitDialog)加入: //添加一个平面工具栏 if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS, CRect(4,4,0,0)) || !m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) ) { TRACE0("failed to create toolbar\n"); return FALSE; } m_wndtoolbar.ShowWindow(SW_SHOW); RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); //使工具栏图标显示256色 HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_TOOLBAR1), //加载IDB_TOOLBAR IMAGE_BITMAP, //按位图格式 0,0, // cx,cy LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS ); CBitmap bm; bm.Attach(hbm); m_ilToolBar.Create(24,24,ILC_COLOR8, 4, 4); m_ilToolBar.Add(&bm,(CBitmap*)NULL); m_wndtoolbar.GetToolBarCtrl().SetImageList(&m_ilToolBar); 6.在主程序的.cpp文件中编译函数OnToolTipText//使工具栏显示提示信息 BOOL CDetectorDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult) { ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW); // UNICODE消息 TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR; TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR; //TCHAR szFullText[512]; CString strTipText; UINT nID = pNMHDR->idFrom; if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) || pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND)) { // idFrom为工具条的HWND nID = ::GetDlgCtrlID((HWND)nID); } if (nID != 0) //不为分隔符 { strTipText.LoadString(nID); strTipText = strTipText.Mid(strTipText.Find('\n',0)+1); #ifndef _UNICODE if (pNMHDR->code == TTN_NEEDTEXTA) { lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText)); } else { _mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText)); } #else if (pNMHDR->code == TTN_NEEDTEXTA) { _wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText)); } else { lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText)); } #endif *pResult = 0; // 使工具条提示窗口在最上面 ::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE| SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); return TRUE; } return TRUE; } 7.在ResourceView的String资源里,将工具栏中每个按钮的ID都对应上希望显示的提示信息即可,例如: toolbar中有一按钮的ID是IDC_OPENFILE,希望显示的提示信息为“打开文件” 那么,你需要做的就是在string资源中加入一条ID同样是IDC_OPENFILE, 内容是: 打开文件 在运行的时候,将鼠标放在按钮上面就会提示 "打开文件"了 这样就完成了所有的步骤。
/
本文档为【在基于对话框的MFC中添加工具栏以及工具栏提示信息并改变图标支持256色.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索