你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / C专栏
建立磁性窗体(6)
 
在这里有一个C++ Builder编程的技巧,即使用Screen全局对象。如果在初使化需要使用粘贴功能的窗体时,把一个CFormAttachStyle实例的指针赋值给该窗体的Tag窗体,那么除了处理它的WM_MOVING和WM_MOVE事件外,其它的操作都可以省略了。关键的代码如下:

  // 注:应把这个函数的声明加到TForm1的类声明中
   void __fastcall TForm1::WndProc(TMessage &Msg)
   {
    TForm::WndProc(Msg);
    switch(Msg.Msg)
    {
      case WM_MOVING: // 处理移动事件
      {
       Do_WM_MOVING(this,Msg);
       break;
      }
      case WM_MOVE: // 处理移动事件
      {
       Do_WM_MOVE(this,Msg);
       break;
      }
    }
   }
   void __fastcall TForm1::FormCreate(TObject *Sender)
   {
    // 建立磁性窗体特性类
    CFormAttachStyle *AttachStyle=new CFormAttachStyle;
    Tag=(int)AttachStyle;
   }
   void __fastcall TForm1::FormDestroy(TObject *Sender)
   { // 删除CformAttachStyle实例
    CFormAttachStyle *AttachStyle=(CFormAttachStyle *)Tag;
    delete AttachStyle;
   }
   以下是主窗体处理WM_MOVING消息的代码:
   void __fastcall TfmMain::WndProc(TMessage &Msg)
   {
    TForm::WndProc(Msg);
    switch(Msg.Msg)
    {
      case WM_MOVING: // 处理移动事件
      {
       AdjuctFormPos(this,(RECT *)(Msg.LParam));
       break;
      }
    }
   }

  到此,实现磁性窗体的步骤基本上都介绍完了

(编辑:aniston)

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089