WEB开发网
开发学院软件开发VC Visual C++入门常见问题小结 阅读

Visual C++入门常见问题小结

 2009-04-24 20:03:19 来源:WEB开发网   
核心提示: 18.如何单击除了窗口标题栏以外的区域使窗口移动 当窗口需要确定鼠标位置时Windows向窗口发送WM_NCHITTEST信息,可以处理该信息使Windows认为鼠标在窗 口标题上,Visual C++入门常见问题小结(6),对于对话框和基于对话的应用程序,可以使用ClassWizard

18.如何单击除了窗口标题栏以外的区域使窗口移动

当窗口需要确定鼠标位置时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 .

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Visual 入门 常见问题

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接