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

VC常见入门问题总结(三)(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
上述技术有两点不利之处, 其一是在窗口的客户区域双击时, 窗口将极大;其二,它不适合包含几个视窗 的主框窗口。还有一种方法,当用户按下鼠标左

  上述技术有两点不利之处, 其一是在窗口的客户区域双击时, 窗口将极大;其二,它不适合包含几个视窗 的主框窗口。还有一种方法,当用户按下鼠标左键使主框窗口认为鼠标在其窗口标题上,使用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) )

  }

10.如何改变视窗的背景颜色

  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;

}

精彩图集

赞助商链接