//加载工具条 //加载工具条 void CNJNCTimeSyncServerDlg::LoadAndDockToolBar() { if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINTB)) { TRACE0("未能创建工具栏/n"); return; // 未能创建 } /*******设置按钮文本******/ LPCTSTR lpText[3] = {_T("同步"), _T("修改"), _T("全选")}; int nButtonCount = m_wndToolBar.GetCount(); int nTextIndex = 0; for(int nIndex = 0; nIndex < nButtonCount; nIndex++) { if (m_wndToolBar.GetButtonStyle(nIndex) == TBBS_SEPARATOR) { continue; } m_wndToolBar.SetButtonText(nIndex, lpText[nTextIndex++]); } /******定位和显示工具条*****/ m_wndToolBar.ShowWindow(SW_SHOW); RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); } // 加载工具条的提示信息 //工具栏提示 BOOL CNJNCTimeSyncServerDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult) { ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW); // UNICODE消息 TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR; TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR; 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; } 窗口控件同步缩放: //重新设置窗体上控件的尺寸 void CNJNCTimeSyncServerDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); // TODO: Add your message handler code here CRect winRect; GetClientRect(&winRect); //获取窗口区域 //Set Main List if (!m_wndToolBar) //客户端首次启动,尚未初始化完毕 { return; } /*********重定位工具栏********/ CRect toolBarRect; m_wndToolBar.GetClientRect(&toolBarRect); m_wndToolBar.MoveWindow(toolBarRect.left, toolBarRect.top, winRect.right, 25); /********重定位主列表*******/ CRect listRect; m_MainList.GetClientRect(&listRect); m_MainList.MoveWindow(0, 24, winRect.right, winRect.bottom - listRect.top); } 拦截主界面Enter按下: //拦截主界面的Enter按下事件 BOOL CNJNCTimeSyncServerDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg->message == WM_KEYDOWN) { if (pMsg->wParam == VK_ESCAPE) //Esc键不退出程序 { return TRUE; } if (pMsg->wParam == VK_RETURN) { return FALSE;//对话框内部控件可以接收到回车消息,返回true则不可以 } } return CDialog::PreTranslateMessage(pMsg); }