设为首页 加入收藏

TOP

Visual C++入门常见问题小结(四)
2012-11-04 15:15:19 来源: 作者: 【 】 浏览:822
Tags:Visual 入门 常见问题 小结
  14. 如何使程序保持极小状态

  在恢复程序窗体大小时,Windows会发送WM_QUERY-OPEN消息用 ClassWizard设置成员函数 OnQueryOpen() ,add following code:

      Bool CMainFrame:: OnQueryOpen( )
       {
         Return false;
       }

  15. 如何限制窗口的 大小

  也就是 FixedDialog形式。 Windows 发送 WM_GETMAXMININFO消息来跟踪,响应它,在 OnGetMAXMININFO中写代码:

  16. 如何使窗口不可见?

  用SW_HIDE 隐藏窗口,可以结合 FindWindow,ShowWindow 控制。

  17. 如何使窗口始终在最前方

  两种途径.

  BringWindowToTop(Handle);

  SetWindowPos函数,指定窗口的最顶风格,用WS_EX_TOPMOST扩展窗口的风格  

  Example:

     void ToggleTopMost( CWnd *pWnd)

     {

       ASSERT_VALID(pWnd);

       pWnd ->SetWindowPos(pWnd-> GetStyle( ) &WS_EX_TOPMOST)

       &wndNoTopMOST: &wndTopMost,0,0,0,0,SSP_NOSIZE|WSP_NOMOVE);

     }

  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 。

   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) )
  }

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

评论

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