1.工具條
? ? ?假設(shè)已經(jīng)新建好了一個資源文件菜單欄(IDR_MENU1),現(xiàn)在需要將該菜單欄加載到我們的對話框中去,在OnInitDialog()函數(shù)內(nèi)添加,具體代碼如下:
// TODO: 在此添加額外的初始化代碼 //ADD //加載菜單 m_menu.LoadMenu( IDR_MENU1 ); SetMenu( &m_menu ); m_menu.Detach();//因為這里是類成員變量,可以不使用這句,但是局部變量的話必須要有這個
這樣的話就可以在運行界面中看到我們的菜單欄了。這里的m_menu我是聲明為CMenu的成員變量,這里可以不加最后一行代碼。
這樣做完后,可以看到菜單并操作,但是不能進行消息響應(yīng)。對菜單進行消息響應(yīng)的時候,據(jù)說可以使用響應(yīng)UPDATE_COMMAND_UI來實現(xiàn),但是我嘗試了下,發(fā)現(xiàn)沒有反應(yīng),最后我是使用了響應(yīng)消息WM_COMMAND來實現(xiàn)菜單響應(yīng)的。具體代碼如下:
BOOL CImportTableDlg::OnCommand(WPARAM wParam, LPARAM lParam) { // TODO: 在此添加專用代碼和/或調(diào)用基類 int menuID = LOWORD(wParam); CAboutDlg dlgAbout; CFileDialog fdlg( TRUE, NULL, NULL, 6UL, _T("可執(zhí)行文件(*.exe)||動態(tài)鏈接庫(*.dll)||"), (CWnd *)this ); TCHAR szFileName[MAX_PATH]; switch(menuID) { case ID_ABOUT: dlgAbout.DoModal(); break; case ID_OPEN: fdlg.DoModal(); lstrcpy( szFileName, fdlg.GetPathName() ); m_pro.ResetContent(); m_pro.AddString( szFileName ); ListImportTable( GetProHandle(szFileName, FALSE) ); break; case ID_EXIT: this->EndDialog( IDOK ); break; default: break; } return CDialogEx::OnCommand(wParam, lParam); }附上圖片:
2.狀態(tài)欄
? ? 這個糾結(jié)了很久,開始使用CStatusBar的時候搞了好久也沒顯示,最后只好轉(zhuǎn)向CStatusBarCtr了。
? ? 這個用法比較簡單,先貼代碼:
?初始化代碼:
//設(shè)置狀態(tài)欄 this->m_statebar.Create( WS_CHILD|WS_VISIBLE|SBS_SIZEGRIP, CRect(0, 0, 0, 0), this, ID_BAR ); CRect rt; this->GetClientRect( &rt ); int pnWidth[2] = { rt.Width()/2, -1}; this->m_statebar.SetParts( 2, pnWidth ); SYSTEMTIME t; GetLocalTime(&t); CString str; CClientDC dc(this); str.Format( _T("當前時間為:%d年%d月%d日%d時%d分%d秒"), t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond ); CSize sz; sz = dc.GetTextExtent( str ); this->m_statebar.SetText( str, 200, 0 ); this->m_statebar.SetText( _T("準備中..."), 0, 0 ); SetTimer( ID_BAR, 10, NULL );//ID_BAR是自定義的一個整數(shù)值,用來識別狀態(tài)欄
狀態(tài)欄更新代碼:
void CImportTableDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息處理程序代碼和/或調(diào)用默認值 SYSTEMTIME t; GetLocalTime(&t); CString str ; CClientDC dc(this); CSize sz; switch( nIDEvent ) { case ID_BAR: str.Format( _T("當前時間為:%d年%d月%d日%d時%d分%d秒"), t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond ); sz = dc.GetTextExtent( str ); this->m_statebar.SetText( str, 1, 0 ); break; default: break; } CDialogEx::OnTimer(nIDEvent); }
效果的話,1中的圖片已經(jīng)有了。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
