龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC实用小知识总结 (一)(4)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
(16) 重置窗口的大小 调用CWnd: : SetWindowPos并指定SWP_NOMOVE标志, 也可调用CWnd : : MoveWindow 但必须指定窗口的位置。 // Get the size of the window . Crect reWindow G

  (16) 重置窗口的大小

  调用CWnd: : SetWindowPos并指定SWP_NOMOVE标志, 也可调用CWnd : : MoveWindow 但必须指定窗口的位置。

   // Get the size of the window .
  Crect reWindow
  GetWindowRect (reWindow )

  //Make the window twice as wide and twice as tall .
  SetWindowPos (NULL , 0 , 0 , reWindow . Width ( ) *2,

  reWindow . Height () * 2,
  SWP_NOMOVE |SWP_NOZORDER )

  (17) 如何单击除了窗口标题栏以外的区域使窗口移动

  当窗口需要确定鼠标位置时Windows向窗口发送WM_NCHITTEST信息,可以处理该信息使Windows认为鼠标在窗口标题上。对于对话框和基于对话的应用程序,可以使用ClassWizard处理该信息并调用基类函数, 如果函数返回HTCLIENT 则表明鼠标在客房区域,返回HTCAPTION表明鼠标在Windows的标题栏中。

   UINT CSampleDialog : : OnNcHitTest (Cpoint point )
  {
  UINT nHitTest =Cdialog: : OnNcHitTest (point )
  return (nHitTest = =HTCLIENT)? HTCAPTION : nHitTest
  }

  上述技术有两点不利之处,其一是在窗口的客户区域双击时,窗口将极大;其二, 它不适合包含几个视窗的主框窗口。还有一种方法,当用户按下鼠标左键使主框窗口认为鼠标在其窗口标题上,使用ClassWizard在视窗中处理WM_LBUTTODOWN信息并向主框窗口发送一个WM_NCLBUTTONDOWN信息和一个单击测试HTCAPTION。

   void CSampleView : : OnLButtonDown (UINT nFlags , Cpoint point
  )
  {
  CView : : OnLButtonDow (nFlags , pont )

  //Fool frame window into thinking somene clicked
  on
  its caption bar .
  GetParentFrame ( ) ―> PostMessage (
  WM_NCLBUTTONDOWN ,
  HTCAPTION , MAKELPARAM (poitn .x , point .y) )

  } 

  该技术也适用于对话框和基于对的应用程序,只是不必调用

   CWnd: :GetParentFrame 。
  void CSampleDialog : : OnLbuttonDown (UINT nFlags, Cpoint point )
  {
  Cdialog : : OnLButtonDow (nFlags, goint )
  //Fool dialog into thinking simeone clicked on its
  caption bar .
  PostMessage (WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARM (point.x
  , point. y
  ) )
  } 

精彩图集

赞助商链接