设为首页 加入收藏

TOP

Visual C++入门常见问题小结(五)
2012-11-04 15:15:19 来源: 作者: 【 】 浏览:824
Tags:Visual 入门 常见问题 小结
  19.如何改变视窗的背景颜色

  Windows向窗口发送一个WM_ERASEBKGND消息通知该窗口擦除背景,可以使用ClassWizard重载该消息的缺省 处理程序来擦除背景(实际是画),并返回TRUE以防止Windows擦除窗口。

//Paint area that needs to be erased.

BOOL CSampleView : : OnEraseBkgnd (CDC* pDC)
{
 // Create a pruple brush.
 CBrush Brush (RGB (128 , 0 , 128) );
 // Select the brush into the device context .
 CBrush* pOldBrush = pDC—>SelcetObject (&brush);
 // Get the area that needs to be erased .
 CRect reClip ;
 pDC—>GetCilpBox (&rcClip);
 //Paint the area.
 pDC—> PatBlt (rcClip.left , rcClip.top ,
    rcClip.Width ( ) , rcClip.Height ( ) , PATCOPY );
 //Unselect brush out of device context .
 pDC—>SelectObject (pOldBrush );
 // Return nonzero to half fruther processing .
 return TRUE;
}

  20.如何改变窗口标题

  调用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 ") );

  如果需要经常修改窗口的标题(注:控件也是窗口),应该考虑使用半文档化的函数AfxS etWindowText。 该函数在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 );
   }
  }

  21.如何防止主框窗口在其说明中显示活动的文档名

  创建主框窗口和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来 设置标题。记住自己设置标题时要遵循接口风格指南。

  22.如何获取有关窗口正在处理的当前消息的信息

  调用CWnd: : GetCurrentMessage可以获取一个MSG指针。例如,可以使用ClassWizard将几个菜单项处理程序映射到一个函数中,然后调用GetCurrentMessage来确定所选中的菜单项。

viod CMainFrame : : OnCommmonMenuHandler ( )

{
  //Display selected menu item in debug window .
  TRACE ("Menu item %u was selected . \n" ,
               GetCruuentMessage ( ) —> wParam );
}





首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC++中所见即所得打印的简易实现 下一篇用VC++在单文档界面中创建多视图

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: