移动窗口的问题

鸵鸟 2002-05-17 11:43:35
实现BorderStyle = bsNone 的form 用鼠标拖动过程

mousePoint_x,mousePoint_y 是全局变量

void __fastcall TfrmView::FormMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
mousePoint_x = X;
mousePoint_y = Y;
}
//---------------------------------------------------------------------------

void __fastcall TfrmView::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (GetAsyncKeyState(VK_LBUTTON)<0){
Left+=X-mousePoint_x ;
Top+=Y-mousePoint_y;
}
}
//---------------------------------------------------------------------------

在send WM_LBUTTONDOWN 消息时,有时窗口会莫名其妙的跳动

用spy++ 察看的结果
.......................................
P WM_MOUSEMOVE fwkeys:0000 xPos:68 yPos:217
P WM_LBUTTONDOWN fwkeys:MK_LBUTTON xPos:241 yPos:173
.......................................

其中xPos yPos 均为client 的坐标

请问我该怎样修正程序??
...全文
37 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2002-05-17
  • 打赏
  • 举报
回复
已经Mail过去了,看看吧。
鸵鸟 2002-05-17
  • 打赏
  • 举报
回复
email: limarine@sina.com

谢谢诸位!
鸵鸟 2002-05-17
  • 打赏
  • 举报
回复
email: limarine@sina.com

谢谢诸位!
bright2k 2002-05-17
  • 打赏
  • 举报
回复
或者用
GetCursorPos
不要用X, Y
僵哥 2002-05-17
  • 打赏
  • 举报
回复
Email呢,我给你一个用拦截消息的程序,是从网上下载的
bright2k 2002-05-17
  • 打赏
  • 举报
回复
void __fastcall TfrmView::FormMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Button==mbLeft){
ReleaseCapture();
Perform(WM_NCLBUTTONDOWN, HTCAPTION, 0);
}
鸵鸟 2002-05-17
  • 打赏
  • 举报
回复
thinks a lot

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧