当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 如何按非客户区移动窗体

VC++
关于小型CA系统的若干说明和DLL源码
Microsoft CryptoAPI加密技术(二)
Microsoft CryptoAPI加密技术(一)
小型CA系统
在WTL中使用MD5加密法
在VC++实现数据加密
实现文件加密功能
由汇编内核的MD5算法编写谈代码优化
DES算法及其在VC++6.0下的实现(下)
DES算法及其在VC++6.0下的实现(上)
如何用非对称密码算法制作共享软件的注册码
IBM的MARS加密算法实现(上)
IBM的MARS加密算法实现(下)
后缀表达式求值及校验
管理TM群
Linux系统共享库编程
C语言高效编程的几招
二进制格雷码与自然二进制码的互换
如何简单实现可执行文件的自我删除
简单手写体数字识别系统

VC++ 中的 如何按非客户区移动窗体


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 70 ::
收藏到网摘: n/a

如何按非客户区移动窗体


作者 浙江大学 王向伟


下载源代码


我曾在VCKBSAE上看到一介绍如何按非客户区移动窗体,既重载WM_NCHITTEST,返回HTCAPTION。但我认为有一点不妥就是没有了鼠标右键功能。这里我介绍一种方法,即可已在客户区移动窗体又可以实现鼠标右键功能。
1、新建一工程DLG。采用默认设置。
2、添加消息处理函数:
void CDlgDlg::OnLButtonDown(UINT nFlags, CPoint point) { PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,pointy)); CDialog::OnLButtonDown(nFlags, point);} 
3、添加右键功能。已实现鼠标右键功能
void CDlgDlg::OnRButtonDown(UINT nFlags, CPoint point) { CMenu menu,*sub; menu.LoadMenu(IDR_MENU1); sub=menu.GetSubMenu(0); ClientToScreen(&point); sub->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this); CDialog::OnRButtonDown(nFlags, point);} 
其它实现细节请参见源代码。