建立磁性窗体
for(int i=0;iFormCount;i++) { TForm *Form=Screen->Forms[i]; if(Form!=My) { // 调整被吸附的窗口位置 UnionOtherForm(My,Form,dx,dy); } } } // 处理WM_MOVE事件 void Do_WM_MOVE(TForm *My,TMessage &Msg) { // 处理粘贴成功后的位置调整 CFormAttachStyle *MyStyle=(CFormAttachStyle *)My->Tag; if(MyStyle && MyStyle->Enabled) { if(MyStyle->Enabled && MyStyle->AttachTo) { // 粘贴成功 My->Left=MyStyle->xPos; My->Top=MyStyle->yPos; } } Msg.Result=0; // 通知系统,消息已经处理 } 在这里有一个C++ Builder编程的技巧,即使用Screen全局对象。如果在初使化需要使用粘贴功能的窗体时,把一个CFormAttachStyle实例的指针赋值给该窗体的Tag窗体,那么除了处理它的WM_MOVING和WM_MOVE事件外,其它的操作都可以省略了。关键的代码如下:
到此,实现磁性窗体的步骤基本上都介绍完了 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |