如何在CB中使用Inspector中没有的消息?

binbin 2000-09-09 11:39:00
我想响应WM_MOVE消息,即用户移动窗口后进行处理,但CB里没有直接对这个消息的事件。
我记得好象要在头文件中用一个宏把消息与自己的函数对应起来,但记不清消息的参数的具体设置了。谁能结合WM_MOVE来讲一讲?我试了N次,每次一运行系统就死锁了。
...全文
99 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt985 2001-06-01
  • 打赏
  • 举报
回复
29590关注!
adams 2000-09-22
  • 打赏
  • 举报
回复
WM_MOVE消息包括X,Y的位置,如下
xPos = (int) LOWORD(lParam); // horizontal position
yPos = (int) HIWORD(lParam); // vertical position
一般的消息映射,可右击class explorer中的Form1,在弹出菜单中选择new Method,选中Message Handle,在旁边填入消息WM_MOVE(或自定义消息),参数一般为TMessage &Msg
消息处理函数内容为
//Form1->Caption = AnsiString("X pos: ") + AnsiString(Msg.LParamLo) +
// AnsiString(" Y pos: ") + AnsiString(Msg.LParamHi );
Form1->Caption = Format("X pos: %d Y pos: %d",ARRAYOFCONST ((Msg.LParamLo,Msg.LParamHi)));
hhzh426 2000-09-10
  • 打赏
  • 举报
回复
你是不是在消息响应中又移动了窗体?
Wingsun 2000-09-10
  • 打赏
  • 举报
回复
对啊,你要截获消息才可以啊
###.h
//--------------------------
....
private: // User declarations
void __fastcall OnMyMessage(Messages::TMessage & Message);
protected:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MOVE,TMessage,OnMyMessage);
END_MESSAGE_MAP(TForm);
}

###.cpp
//--------------------------

void __fastcall TFrmMain::OnMyMessage(Messages::TMessage & Message)
{
.....
}

13,822

社区成员

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

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