欢迎来到天天文库
浏览记录
ID:62033330
大小:19.50 KB
页数:5页
时间:2021-04-15
《dialog添加菜单状态栏.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1,添加菜单有多种方法(1:在resourceView中选中对话框属性的 menu属性(2:CMenu m_Menu; m_Menu.LoadMenu(IDR_MAIN_MENU); SetMenu(&m_Menu); 取消菜单SetMenu(NULL);2,添加状态栏在头文件添加/**状态栏*/ ﻫCStatusBarm_wndStatusBar; .CPP文件中添加/** 状态栏*/if(!m_wndStatusBar.Create(this)|| !m_wndStatusBar。SetIndicators(in
2、dicators,sizeof(indicators)/sizeof(UINT)) )ﻫ{ﻫ TRACE0("Failedtocreatestatusbar");ﻫ return-1; // failto createﻫ}3.WM_MENUSELECT消息 这样手动添加的状态栏,无法接收WM_MENUSELECT消息,所以我们要自己添加ON_WM_MENUSELECT()响应的消息函数/**ﻫ*菜单栏选择ﻫ*/void CFilePlayerDlg::OnMenuSelect(UINTnItemID,UINT nFlags, HME
3、NUhSystemMenu){CString sFileName;if(nItemID==AFX_IDS_IDLEMESSAGE){ﻫ sFileName =L”就绪”;ﻫ SendMessage(WM_SETMESSAGESTRING,(WPARAM)0,(LPARAM)(LPCTSTR)sFileName);ﻫ return ;ﻫ}ﻫif(nFlags & MF_SEPARATOR)ﻫ return;if(nFlags&(MF_SYSMENU |MF_POPUP)) return;CString strStatusText; ﻫstrStat
4、usText.LoadString(nItemID); m_wndStatusBar。SetPaneText(0,strStatusText);////SendMessage(WM_SETMESSAGESTRING, (WPARAM)0,(LPARAM)(LPCTSTR)strStatusText);return;ﻫ}这样就获得了菜单的提示内容,m_wndStatusBar.SetPaneText(0,strStatusText);//将菜单提示显示在状态栏第一个窗格.当然自己可以指定其它窗格,如果用SendMessage(WM_SETMESSAGESTRING,
5、(WPARAM)0,(LPARAM)(LPCTSTR)strStatusText);发送WM_SETMESSAGESTRING消息也可实现,需要自己添加该消息的响应函数如下:ON_MESSAGE(WM_SETMESSAGESTRING,OnSetMessageString)// 消息宏消息处理函数LRESULTCFilePlayerDlg::OnSetMessageString(WPARAMwParam,LPARAM lParam)ﻫ{ﻫLPCTSTRlpsz=NULL;CStringstrMessage;if(lParam!=0){ ASSERT(wParam=
6、= 0); //can'thavebothanIDandastring lpsz=(LPCTSTR)lParam;//setanexplicitstring}ﻫelseif(wParam!= 0)ﻫ{ {ﻫ LPTSTRlpsz =strMessage。GetBuffer(255);ﻫ if(AfxLoadString(wParam,lpsz)!=0) { lpsz= _tcschr(lpsz,_T('n’));ﻫ if(lpsz!= NULL) *lpsz=' ’; }ﻫ else {ﻫ TRACE1
7、(”Warning:nomessagelineprompt forID0x%04X.",wParam); }ﻫ strMessage.ReleaseBuffer(); }ﻫ lpsz =strMessage;}ﻫm_wndStatusBar.SetWindowText(lpsz); //显示菜单提示ﻫreturn0L;ﻫ}4。这样手动给对话框添加菜单,不能响应菜单更新命令,没有OnInitMenuPopup()函数,所以需要自己实现 手动添加 ON_WM_INITMENUPOPUP()//响应菜单命令更新
此文档下载收益归作者所有