说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何拖动窗体??我知道各位老大都会

编辑:说三道四文库 发布时间:2017-09-26 06:44
HTML文档下载 WORD文档下载 PDF文档下载
做一个控件,模拟窗口标题栏。
其它的基本上都实现了,但现在遇到一个问题:如何使拖动该控件动作-->变成拖动窗口位置动作?

可用记录MouseDown位置及拖动位置的方法,当MouseMove时,动态改变Form的Left及Top,但这样每次MouseMove时窗口都将重画,系统效率低下,且不象真正的窗口标题栏拖动(仅画一个虚框)。

也可以在桌面上画一个虚框,(用::GetDC(0)来获得桌面句柄,之后::FrameRect(dc,&aRect,aBrush);),但之后怎么察除呢?

也可映射消息WM_NCHITTEST,但我是从TControl下继承而来的,不知怎的它不响应该消息,唉!


请高手指点一二,有思路也可!
The framework calls this member function for the CWnd object that contains the cursor (or the CWnd object that used the SetCapture member function to capture the mouse input) every time the mouse is moved.

afx_msg UINT OnNcHitTest(
   CPoint point 
);


HTCAPTION   In a title-bar area.
void __fastcall TfrmAbout::FormMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    if(Button==mbLeft)
    {
        ReleaseCapture();
        SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,NULL);
    }    
}

void __fastcall TForm1::FormMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    //无标题窗口的拖动
    if(Button==mbLeft)
    {
        ReleaseCapture();
        SendMessage(this->Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);
        SetWindowPos(this->Handle,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE);        
    }       
}
给你我的程序中的在桌面上的画框的函数,这是我用VC中sdk写的,调用部份没有给全,你自己写吧!
//这个函数画虚框
void DrawUIBorder( LPRECT lprc )
{
    HDC hDC;
    int sbx, sby;

    hDC = CreateDC( "DISPLAY", NULL, NULL, NULL );
    SelectObject( hDC, GetStockObject( GRAY_BRUSH ) );//这里可以自己定义是实线还是虚框
    sbx = GetSystemMetrics( SM_CXBORDER );
    sby = GetSystemMetrics( SM_CYBORDER );
    PatBlt( hDC, lprc->left, 
lprc->top, 
lprc->right - lprc->left-sbx, 
sby, PATINVERT );
    PatBlt( hDC, lprc->right - sbx, 
lprc->top, 
sbx, 
lprc->bottom - lprc->top-sby, PATINVERT );
    PatBlt( hDC, lprc->right, 
lprc->bottom-sby, 
-(lprc->right - lprc->left-sbx), 
sby, PATINVERT );
    PatBlt( hDC, lprc->left, 
lprc->bottom, 
sbx, 
-(lprc->bottom - lprc->top-sby), PATINVERT );
    DeleteDC( hDC );
}
static RECT rect;//记录画虚线框的矩形位置
在mousemove事件中:

  int w,h;
  RECT re;
                              POINT p;
                              DrawUIBorder(&rect);//清除上一次的虚线
                               GetCursorPos(&p);
                              ...根据p来设定你要画的新的虚线框的矩形位置rect
           DrawUIBorder(&rect);//画这一次的虚线框
在mouseup事件中:
                DrawUIBorder(&rect);//清除上一次的虚线
                movewindow(....);//移动窗体
             
void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
   //if the user is holding the left mouse button down -- move
   if( Shift.Contains( ssLeft ) )
   {
       ReleaseCapture();
       SendMessage(Handle,0xA1,2,0);
   }
   //if the user is holding the right mouse button down -- popup menu
   if( Shift.Contains( ssRight ) )
   {
       PopupMenu1->Popup(X+ Left,Y+ Top);
    }

}
学习
超华尔街预期:苹果第二财季营收为436亿美元 跨平台游戏引擎Spaceport已被Facebook收购 文科生开发GPU数据库 性能超传统数据库70倍 开发者赚了90亿:从苹果Q2财报,看iOS生态 备受开发者青睐的13款热门开源项目 Netflix赌赢《纸牌屋》背后的秘密武器:大数据分析 为什么:Google Glass只能运行Web应用? 对话Rackspace高级副总裁Jim Curry:我们没有"辜负"营销炒作 7个大数据流言——避免错误的Hadoop和云分析决策 Facebook vs. Google:撇开搜索,数据中心产业上的又一竞技 苹果将于6月10日召开WWDC 新版OS X和iOS或将面世 传Amazon今年秋季发布电视机顶盒设备 够快:不会3种以上语言的程序员不是好程序员 Cloud Foundry、Greenplum获通用电气1亿美元注资 微软推超强Android应用Switch to Windows Phone Unity CEO宣布:放弃支持Flash平台 为交房租做App:我第一年赚了7万美金 iOS越狱大神Comex加盟Google 曾错过苹果Offer 维基百科正式从MySQL迁移到MariaDB数据库 JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember 大数据推广引领精准推广浪潮 ThoughtWorks负责人曾学海:数字渠道细分带来的架构演进 你画我猜2 : Draw Something 2正式发布 云中游科技CEO张帆:畅谈“找你妹”的自营销 Oracle当心,MySQL原始团队已重整旗鼓! 优秀的Meteor学习资源 ThoughtWorks美女分析师:如何规划企业在线数字渠道战略? OpenStack将怎样影响软件行业? 知识产权日特稿:谁动了程序员的源代码版权? MIT技术评论评选2013十大突破性技术:深度学习居首 Chrome测试版添扩展程序 可直接浏览Office文档 如何改变EventLog中Source和自定义Log的对应关系? 紧急求助,在线等待。 为什么无法实现? 请问vc60.idb和vc60.pdb是干什么用的? dreamweaver Mx再繁體系統中的使用 乱码问题!请高手赐教!! 请问在jsp中如何连接access数据库? 你愿意赐教吗? w3svc记录的时间跟系统时间不一致? 谁能告诉我在哪儿可以下载到微软BHO的例子? 一个弄了很长时间的问题,高手过来看看。。 怎样在网页中显示数据类型为"OLE 对象"的图片 可以帮我看一下这段程序吗? 谢谢! 急救我 请问 tomcat 中服务 问题? 我的心渐渐寒了,IT公司怎么这么没信誉呀? 关于安装qq的问题. 我看到有的文章发布系统里,有在word里直接粘贴就可以显示的JS,但我不会调用,谁知道? 一个很菜的问题 需要一个弹珠台游戏的设计思路,(windows自带的那个pinball游戏) windows 2000 中有多少中方法访问硬盘上的文件?? 文档不能删除的问题!请高手赐教,定重谢 Set object1 = object2 有关拷贝文件的问题? !!!!!!!!!如何让Memo新添加的一行使用colorbox1.selected,其他行不变????????? vb.net中的控件有無像vfp中parent屬性可以訪問上級對象?現在類中沒能訪問啊 excel一张表中最多可以保存多少行数据? javascript向jsp传递变量的问题 我想知道用tab来移动光标时突发的是什么消息?还有光标选中的虚线是怎么划的 ? 想改变单文档背景色在那个函数里设置?怎样设置? 有没有女孩对你说:”你真象我以前的男朋友!” 求救????????????? 求救????????????? 麻烦大虾看一下这几个错误,急急急!!!!!!!!!! C#中如何读取文本方式的整数向C++中的fscanf语句一样 高手帮忙 如何将Outlook Express的邮件转移到foxmail中去 如何插入图片到sql server中? 关于rave打印问题?(打印页码范围) 请教:在asp.net开发环境里,我用C#编写网站,为什么老是连接不上数据库SQL Server 2000 啊? SQL Server启动的一个问题 关于linux下解压缩的问题 非常奇怪的问题:href=question.jsp?a=&b=&c=123,当接收这些参数时,C的值为什么不是123,而是null!!! IIS菜鸟问题两个。IIS菜鸟问题两个。IIS菜鸟问题两个。IIS菜鸟问题两个。IIS菜鸟问题两个。 使用vc.net操作环境时常遇到的两个烦人问题. 硬盘低格后如何处理? 如何在图层上生成一个网络拓扑图,请高手给指点一下,多少分都行!!1 lihonggen0(李洪根,用.NET,标准答案来了) 请进来,我知道你在线~~~ 遇到除零错误怎么解决 treeview中的节点显示checkboxs和不显示checkboxs时,节点的句柄(Handle)不同,请高手帮忙 请教关于CDib中的问题 埃及穆兄会二把手被捕 穆尔西等高层将美媒:美国难以在国际舞台既当演员又做菲人质事件在港谈判分歧收窄 同意继续泰部署5000警察应对民主党发起反特韩国海域沉船事故一失踪中国籍船员遗体记者手记:罗汉松——日本苗木之乡的摇中国帮助我们圆了“公路梦”格外交部:俄未被列入总统就职典礼受邀泰部署5000警察应对民主党发起反特韩国海域沉船事故一失踪中国籍船员遗体中国政府向柬埔寨提供洪灾捐款加纳抓捕43名涉嫌非法采金中国公民中方要求美方对其驻华使领馆设监听点报中国网媒业界人士呼吁“清朗网络空间”商务部:对欧盟太阳能级多晶硅双反调查温州电镀基地成立业委会 自治投票管住浙江男子纵容亲弟高速练车 赔了弟弟又斯诺登莫斯科生活照曝光 休闲打扮未戴欧元区10月份通胀率降至四年来最低尼日尔沙漠一移民车抛锚 现场发现92律师称斯诺登将从11月起在俄大型网站黄芪红糖粥36氪涉足股权众筹业务,野心是想做非蜜汁江米藕为你准备的这些公司可别错过 | 浙 胡萝卜豆浆科普冰种翡翠纽扣饼干好职位不断来!世界500强也来了,你圣诞霜糖饼干过个周末酱肘子有一种品味,叫不挑咸甜酱烧排骨关于海鲜,会做这些菜证明你是内行柠檬鲜姜酵素开问丨纯牛奶和酸奶的区别是什么,营养双炒素粒带上孩子和狗,周末野餐不打烊Facebook推出新应用Stick生命不息,折腾不止:魅族MX4 调教猛男养成记,不要虚胖要strong!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘