正在阅读:VC实用小知识总结 (一)VC实用小知识总结 (一)

2005-01-05 15:34 出处:PConline 作者:SEUU 责任编辑:linjixiong

  (19) 如何改变窗口标题
  调用CWnd : : SetWindowText可以改变任何窗口(包括控件)的标题。

  //Set title for application's main frame window .
  AfxGetMainWnd ( ) —> SetWindowText (_T("Application title") )

  //Set title for View's MDI child frame window .
  GetParentFrame ( ) —> SetWindowText ("_T ("MDI Child Frame new title")
  )

  //Set title for dialog's push button control.
  GetDigitem (IDC_BUTTON) —> SetWindowText (_T ("Button new title ") )


  如果需要经常修改窗口的标题(注:控件也是窗口),应该考虑使用半文档化的函数AfxSetWindowText。该函数在AFXPRIV.H中说明,在WINUTIL.CPP中实现,在联机帮助中找不到它,它在AFXPRIV.H中半文档化, 在以后发行的MFC中将文档化。
  AfxSetWindowText的实现如下:


  voik AFXAPI AfxSetWindowText (HWND hWndCtrl , LPCTSTR IpszNew )
  {
  itn nNewLen= Istrlen (Ipaznew)
  TCHAR szOld [256]
  //fast check to see if text really changes (reduces
  flash in the
  controls )
  if (nNewLen >_contof (szOld)
  || : : GetWindowText (hWndCrtl, szOld , _countof (szOld) !=nNewLen
  || Istrcmp (szOld , IpszNew)! = 0
  {
  //change it
  : : SetWindowText(hWndCtrl , IpszNew )
  }
  }

  (20) 如何防止主框窗口在其说明中显示活动的文档名
  创建主框窗口和MDI子窗口进通常具有FWS_ADDTOTITLE风格位,如果不希望在说明中自动添加文档名, 必须禁止该风格位, 可以使用ClassWizard重置
  CWnd: : PreCreateWindow并关闭FWS_ADDTOTITLE风格。


  BOOL CMainFrame : : PreCreateWindow (CREATESTRUCT&cs)
  {
  //Turn off FWS_ADDTOTITLE in main frame .
  cs.styel & = ~FWS_ADDTOTITLE  
  return CMDIFrameWnd : : PreCreateWindow (cs )
  }


  关闭MDI子窗口的FWS _ADDTOTITLE风格将创建一个具有空标题的窗口,可以调用CWnd: : SetWindowText来设置标题。记住自己设置标题时要遵循接口风格指南。

  (21) 如何获取有关窗口正在处理的当前消息的信息
  调用CWnd: : GetCurrentMessage可以获取一个MSG指针。例如,可以使用ClassWizard将几个菜单项处理程序映射到一个函数中,然后调用GetCurrentMessage来确定所选中的菜单项。


  viod CMainFrame : : OnCommmonMenuHandler ( )
  {
  //Display selected menu item in debug window .
  TRACE ("Menu item %u was selected . \n" ,

  (22) 如何在代码中获取工具条和状态条的指针
  缺省时, 工作框创建状态条和工具条时将它们作为主框窗口的子窗口,状态条有一个AFX_IDW_STATUS_BAR标识符,工具条有一个AFX_IDW_TOOLBAR标识符,下例说明了如何通过一起调用CWnd: : GetDescendantWindow和AfxGetMainWnd来获取这些子窗口的指针:


  //Get pointer to status bar .
  CStatusBar * pStatusBar = (CStatusBar *) AfxGetMainWnd ( )
  —> GetDescendantWindow(AFX_IDW_STUTUS_BAR)

  //Get pointer to toolbar .
  CToolBar * pToolBar = (CToolBar * ) AfxGetMainWnd ( )
  —> GetDescendantWindow(AFX_IDW_TOOLBAR)

  (23) 如何使能和禁止工具条的工具提示
  如果设置了CBRS_TOOLTIPS风格位,工具条将显示工具提示,要使能或者禁止工具提示,需要设置或者清除该风格位。下例通过调用CControlBar : : GetBarStyle和CControlBar : : SetBarStyle建立一个完成此功能的成员函数:


  void CMainFrame : : EnableToolTips ( BOOL bDisplayTips )
  {
  ASSERT_VALID (m_wndToolBar)

  DWORD dwStyle = m _wndToolBar.GetBarStyle ( )

  if (bDisplayTips) dwStyle |=CBRS_TOOLTIPS

  else
  dwStyle & = ~CBRS_TOOLTIPS

  m_wndToolBar.SetBarStyle (dwStyle )
  }

热点推荐: 
教你如何成为一名Java初级程序员变态级JAVA程序员面试32问(附答案)
将Asp.Net页面输出到EXCEL里去读书笔记:程序员的个人性格
Java编程学习:自己DIY一个JSP日历Java 的破解和反破解之道
网页编程必看:XML文法分析设计模式的有趣解释-追MM

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品