在VC++6.0中移动无标题栏的窗口

本文介绍在VC++6.0中实现无标题栏窗口的移动方法,通过三种方式让无标题栏的窗口能够被拖动:1) 在OnLButtonDown事件中发送WM_SYSCOMMAND消息;2) PostMessage发送消息;3) OnNcHitTest事件返回HTCAPTION。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/***********************************************************
*说明: 在VC++6.0中移动无标题栏的窗口
*备注:测试代码的对话框程序的工程名为:MoveNoTitle
*原理:在OnLButtonDown事件中发送WM_SYSCOMMAND消息
       或者在OnNcHitTest事件中返回HTCAPTION
*作者:袁培荣 yuanpeirong@vip.qq.com
*修改时间:2011年09月26日
***********************************************************/


//第一和第二种方法:
void CMoveNoTitleDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//::SendMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_MOVE + HTCAPTION,0);//方法一
	//PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));//方法二

    CDialog::OnLButtonDown(nFlags, point);
}

//第三种方法:
UINT CMoveNoTitleDlg::OnNcHitTest(CPoint point) 
{
	//截获鼠标事件
   	UINT nHitTest = CDialog::OnNcHitTest(point); 
   	// 判断是否在拖动客户区,如果是则发送拖动标题栏的消息
	return (nHitTest == HTCLIENT)? HTCAPTION : nHitTest;
}


转载于:https://my.oschina.net/u/186539/blog/42375

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值