社区
Windows SDK/API
帖子详情
高分求教——消息处理问题
gqxs
2003-11-20 05:43:49
我想实现一个功能:
如果在一个窗体上有3个按钮ba,bb,bc;
我想当点击了三个按钮中的一个后,在每个按钮的触发事件之前获知是哪个按钮被点击了?求BCB的消息机制对该功能的实现。
...全文
25
15
打赏
收藏
高分求教——消息处理问题
我想实现一个功能: 如果在一个窗体上有3个按钮ba,bb,bc; 我想当点击了三个按钮中的一个后,在每个按钮的触发事件之前获知是哪个按钮被点击了?求BCB的消息机制对该功能的实现。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gqxs
2003-11-28
打赏
举报
回复
希望大家以后继续多多支持!
谢谢大家了,马上给分。
Lewolf
2003-11-27
打赏
举报
回复
晕那
“哪个按钮被点击了”是一个瞬间状态,不会持续的,当你点击消息处理完毕的时候,这个按钮已经弹回来了,“按钮被点击了”这个事实就不存在了,你在什么时候去判断“被点击”?
如果是要监视按钮动作,当然是实用钩子了,在一般的程序中,我觉得没有这个必要吧。
gqxs
2003-11-27
打赏
举报
回复
请问在下边的消息结构中,包含了该消息是向那个窗体或那个控件发送的消息吗?
TMessage represents a Windows message.
Unit
Messages
struct TMessage
{
Cardinal Msg;
union
{
struct
{
Word WParamLo;
Word WParamHi;
Word LParamLo;
Word LParamHi;
Word ResultLo;
Word ResultHi;
};
struct
{
int WParam;
int LParam;
int Result;
};
};
} ;
gqxs
2003-11-24
打赏
举报
回复
谢谢大家了。
不过我有个提议,能不能用到BCB自己的机制来完成这件事情?因为BCB是知道你点击了那个按钮,并且去执行相应按钮的点击事件,BCB自己是怎么做到的???
那位高手能回答,我加分相送!
nj_draker
2003-11-22
打赏
举报
回复
先用A窗口函数判断出,然后发送消息给B窗口!
nightfallrove
2003-11-22
打赏
举报
回复
被季老大说完了,
不过为什么不在点击事件里面写代码呢?
比如:
onClick()
{
SendMessage(Formb->Handle,........);
}
jishiping
2003-11-22
打赏
举报
回复
使用 WH_CALLWNDPROC 钩子就可以了。
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
static HHOOK hHook = NULL;
static LRESULT CALLBACK GetMsgProc(int code,
WPARAM wParam, LPARAM lParam)
{
CWPSTRUCT * pMsg = (CWPSTRUCT *)lParam;
if (code < 0)
CallNextHookEx(hHook, code, wParam,
lParam);
else if(code==HC_ACTION && pMsg->message
==WM_COMMAND) {
TButton* Btn = dynamic_cast<TButton*
>(FindControl((HWND)pMsg->lParam));
if (Btn != NULL) {
MessageBox(0, Btn->Caption.c_str(),
Btn->Name.c_str(), MB_OK);
}
}
return 0;
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
hHook = SetWindowsHookEx(WH_CALLWNDPROC,
(FARPROC)GetMsgProc, 0, GetCurrentThreadId());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
if (hHook!=NULL) UnhookWindowsHookEx(hHook);
}
猛禽
2003-11-21
打赏
举报
回复
在A的点击事件响应中向B发消息
珍惜生命远离CPP
2003-11-21
打赏
举报
回复
我记得按钮的消息实在command中有细划分出来的,你可以在消息处理函数之前截获command消息
这个消息带有按钮消息的id
gqxs
2003-11-21
打赏
举报
回复
不好意思,可能我没有说清楚。我对窗口A的哪个按钮被点击了的判断可能是在另一个窗口B中进行判断的,所以可能用不了sender。我希望能在一个多窗口程序中知道那个窗口的那个按钮正在被点击了,但是不能在该按钮中加入代码进行判断。个人觉得用消息机制应该能完成。
先谢谢楼上两位了!希望那位不承赐教。
constantine
2003-11-21
打赏
举报
回复
是可以,不过如果整个过程都要监视,那不是很浪费资源。
还是用消息吧!不同按键,你就发送不同的消息。
sfemil
2003-11-21
打赏
举报
回复
1 安装一个监视当前进程的钩子SetWIndowsHook 钩子类型为WH_CALLWNDPROC
2 在钩子处理函数中 过滤消息 只处理click消息.根据消息的HWND得到窗体(按钮) 再获得其
父窗体(窗口)
gqxs
2003-11-21
打赏
举报
回复
希望,求教不再触发按钮中加代码的方法。
freshman2003
2003-11-20
打赏
举报
回复
楼上的说得没错,判断sender然后根据sender来响应事件就可以了。可以用TActionList。
xu_xinyu
2003-11-20
打赏
举报
回复
个人认为用sender应该可以实现。
双屏不同缩放比例_[WIN10]如何解决鼠标在双屏分辨率不同的情况下移动的
问题
顺便说下 U2718Q 的体验...
问题
描述买的 27 寸的 4K 屏幕 U2718Q 到了。我之前用的是一个 LG 的 1980X1080 的 24 寸屏幕。我先把两个屏幕左右摆放使用。然后
问题
就来了。两个屏幕尺寸差不多,但是分辨率足足有 3 倍之差。我打开设置发现显示如上图。导致我在主屏的上半部部分鼠标不能移动到分辨率小的副屏。试了调节缩放大小也没用。副屏幕立起来的话好一点,但是实在是太高了。看得我脖子疼。———————————...
小蔺的米哈游数据分析师之路——MYSQL基础查询语句篇
HR:能接受出差吗?汉科软对应届生来说还是很友好的,大家都知道,刚出社会,工作经验不充足,在这工作氛围好,有项目经理带着做项目,还有志同道合的小伙伴,能积累经验,帮助大家适应职场。公司是联想,岗位是Java,学历是本科985,地点是成都,校招薪资是总包20,年终奖是年薪的10%,还要乘两个系数,一个是绩效一个部门,预计是3w,餐补是22/可以,但不推荐,相比其他
消息
队列欠缺机制List实现
消息
队列简答,但是确认机制需要我们自己实现,并且最重要的事没有广播机制,不过后来的版本加入了订阅功能,有ch。
SendMessage相关
问题
高分
求教
功能设想:1、记录需要点击鼠标的坐标;2、程序自动将鼠标移到需要点击鼠标的位置;3、点击鼠标,如果是输入框,还需要自动输入相应数据。难点:无法实现点击鼠标的动作。代码:Private Type POINTAPIX As LongY As LongEnd TypeConst WM_LBUTTONDOWN = &H201Const WM_LBUTTONUP = &H202Dim ButtonP
清华大学计算机张才荣,2013广东高考理科状元张才荣想报清华大学
信宜市教育城传出一个特大喜讯:信宜中学学生张才荣以高考裸分697分获茂名市总分状元(全省第四名),另获“广东省优秀学生”20分加分,以717分的
高分
荣获2013年广东省高考理科总分状元。在信宜中学,记者见到了张才荣同学。文静、理性、沉着——这是张才荣给人的第一印象。凡是任教过张才荣的领导、老师,对其都印象深刻:张才荣人长得瘦小,但充满了“正能量”,面对各次考试和分数,能够做到“不以物喜、不以已悲”...
求教
专业人士,视频的码率多少合适?是不是和分辨率、帧率有关?
如题,百度百科解释,码率实质正比于比特率,所以下面我的疑问不妨用比特率来提问。请高手看看我的想法对不对:假设我转换一个视频(各项参数都很高),转换参数假设:帧率20fps,分辨率640*480,,去掉声音。那么按照此参数,视频中一个像素点占据2个字节,一帧就占用:640*480*2=61440...
Windows SDK/API
1,221
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章