首页 > 其他分享 >BCB-消息处理方式

BCB-消息处理方式

时间:2023-09-19 10:36:25浏览次数:30  
标签:WndProc 处理 WM WNDPROC BCB CHAR 消息 message ShowMessage


一、重新实现WndProc,注意名称要一致,查看继承链会发现WndProc是一个虚函数。

void __fastcall TForm1::WndProc(TMessage& message)
{
    TForm::WndProc(message);
    if(message.Msg==WM_CHAR)
    ShowMessage(message.WParam);
}



二、添加消息映射

protected:
        BEGIN_MESSAGE_MAP
                VCL_MESSAGE_HANDLER(WM_CHAR, TMessage, OnChar)
        END_MESSAGE_MAP(TForm)



void __fastcall TForm1::OnChar(TMessage & message)
{
        //TODO: Add your source code here
        ShowMessage(message.WParam);
}



三、子类化

WNDPROC OldProc;
LRESULT CALLBACK MyWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    if(message==WM_CHAR)
    ShowMessage(wParam);
    return OldProc(hwnd,message,wParam,lParam);
}



在窗体构造或创建事件中替换窗口过程

OldProc=(WNDPROC)GetWindowLongA(Handle,GWL_WNDPROC);
      SetWindowLongA(Handle,GWL_WNDPROC,(LONG)MyWndProc);





标签:WndProc,处理,WM,WNDPROC,BCB,CHAR,消息,message,ShowMessage
From: https://blog.51cto.com/u_15487030/7522091

相关文章

  • BCB 数据库主从表结构
    例:A表字段GroupNameGroupID B表字段GroupIDMemberNameMemberID如果我们想要得到如下列表:GroupNameGroupIDMemberNameMemberID  XX        1       XX           0如果想达到上述效果,可以在BCB中数据库控件设置......
  • bcb控件拖放
    控件分为两种:有Handle的和无Handle的。一、对于有Handle的控件,如Button,Edit类可以使用如下方法:在控件的MouseMove事件中写入:WORDSC_DragMove=oxF012;ReleaseCapture();((TWinControl*)Sender)->Perform(WM_SYSCOMMAND,SC_DragMove,0);二、对于没有Handle的控件,如Label,Imag......
  • php-fpm高占用cpu处理
    最近服务器经常发现php-fpm进程cpu总数时不时就100%,提高cpu核数也还是一样废话不多说,直接说解决方案:一、先说说php-fpm三种子进程的管理方式pm=static静态,始终保持一个固定数量的子进程,这个数由(pm.max_children)定义,这种方式很不灵活,也通常不是默认的。pm=dynamic动态,在更......
  • [FAQ] Git远程仓库想把目录大写改为小写,windows本地不识别的的处理
     通过四步操作:1.先把忽略大小写设为false,即区分大小写gitconfigcore.ignorecasefalse2.拷贝出来备份那几个大写的目录,随后分支上操作删除,提交到远程。3.备份出来的目录改为小写,拷贝到代码分支的目录里,提交到远程。4.恢复成原来的设置gitconfigcore.ignorecasetrue......
  • ipaddress:Python中网络地址的处理
    前言ipaddress库提供了处理IPv4与IPv6网络地址的类。这些类支持验证,查找网络上的地址和主机,以及其他常见的操作。本篇,将详细介绍Python中ipaddress库的使用规则。(内容涉及很多计算机网络知识,如果不懂,可以参考书籍《计算机网络》)地址一般来说,我们使用ipaddress库是通过ip_addre......
  • Vue-js循环方式、v-model的使用、事件处理、表单控制、购物车案例
    js循环方式在es6语法中:(以后尽量少用var有很多坑)-let:定义变量-const:定义常量1.方式一:for循环,基于索引的循环<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc=".......
  • 支持多级别日志消息
    1、项目介绍本项目主要实现一个日志系统,其主要支持以下功能:支持多级别日志消息将日志分为不同等级的日志,有调试级别的日志、提示级别的日志、警告级别的日志、错误级别的日志、致命级别的日志……不同级别的日志应对着不同的场景。可以通过日志级别来实现限制输出的级别:当调试......
  • 前端处理 File 的基础方法
    在前端开发过程中,处理File对象的场景还是蛮多的,熟练掌握对File对象的处理方法,可以极大提高前端工作的幸福度。JavaScript处理File对象的主要方式是通过HTML5的FileAPI。FileAPI提供了一组用于处理本地文件的API,包括创建、读取、写入和删除文件等操作。下面是一些常......
  • 关于`dial unix /var/run/docker.sock: connect: permission denied`的处理方法笔记
    之前遇到的一个问题,使用非root用户时操作docker提示无权限,在查阅了一些文章之后自己又摸索出了一些更方便的方法,顺手记录下来。一、问题发现根据报错信息dialunix/var/run/docker.sock:connect:permissiondenied,可以看出,是因为当前用户对docker使用的unixdomainsocket......
  • Python中捕获异常的方法及异常处理try-except-else-finally的区别
    在Python中,try、except、else和finally是我们常用的异常处理方式,有一个清晰的执行顺序很重要。在这篇攻略中,我们将详细探讨这些关键字的执行顺序,以便更有效地处理异常。先回顾一下这些关键字的含义和用途:try:执行可能会抛出异常的代码块;except:当try代码块中出现了异常,执行此代......