获取Windows消息名称(含VCL消息)-3

//VCL消息列表,定义在VCL的controls单元
#define MAX_VCL_MESSAGE 81
static const char * const CMMessageNames[MAX_VCL_MESSAGE+1]={
    "CM_ACTIVATE",
    "CM_DEACTIVATE",
    "CM_GOTFOCUS",
    "CM_LOSTFOCUS",
    "CM_CANCELMODE",
    "CM_DIALOGKEY",
    "CM_DIALOGCHAR",
    "CM_FOCUSCHANGED",
    "CM_PARENTFONTCHANGED",
    "CM_PARENTCOLORCHANGED",
    "CM_HITTEST",
    "CM_VISIBLECHANGED",
    "CM_ENABLEDCHANGED",
    "CM_COLORCHANGED",
    "CM_FONTCHANGED",
    "CM_CURSORCHANGED",
    "CM_CTL3DCHANGED",
    "CM_PARENTCTL3DCHANGED",
    "CM_TEXTCHANGED",
    "CM_MOUSEENTER",
    "CM_MOUSELEAVE",
    "CM_MENUCHANGED",
    "CM_APPKEYDOWN",
    "CM_APPSYSCOMMAND",
    "CM_BUTTONPRESSED",
    "CM_SHOWINGCHANGED",
    "CM_ENTER",
    "CM_EXIT",
    "CM_DESIGNHITTEST",
    "CM_ICONCHANGED",
    "CM_WANTSPECIALKEY",
    "CM_INVOKEHELP",
    "CM_WINDOWHOOK",
    "CM_RELEASE",
    "CM_SHOWHINTCHANGED",
    "CM_PARENTSHOWHINTCHANGED",
    "CM_SYSCOLORCHANGE",
    "CM_WININICHANGE",
    "CM_FONTCHANGE",
    "CM_TIMECHANGE",
    "CM_TABSTOPCHANGED",
    "CM_UIACTIVATE",
    "CM_UIDEACTIVATE",
    "CM_DOCWINDOWACTIVATE",
    "CM_CONTROLLISTCHANGE",
    "CM_GETDATALINK",
    "CM_CHILDKEY",
    "CM_DRAG",
    "CM_HINTSHOW",
    "CM_DIALOGHANDLE",
    "CM_ISTOOLCONTROL",
    "CM_RECREATEWND",
    "CM_INVALIDATE",
    "CM_SYSFONTCHANGED",
    "CM_CONTROLCHANGE",
    "CM_CHANGED",
    "CM_DOCKCLIENT",
    "CM_UNDOCKCLIENT",
    "CM_FLOAT",
    "CM_BORDERCHANGED",
    "CM_BIDIMODECHANGED",
    "CM_PARENTBIDIMODECHANGED",
    "CM_ALLCHILDRENFLIPPED",
    "CM_ACTIONUPDATE",
    "CM_ACTIONEXECUTE",
    "CM_HINTSHOWPAUSE",
    "CM_DOCKNOTIFICATION",
    "CM_MOUSEWHEEL",
    "CM_ISSHORTCUT",
    "CM_UPDATEACTIONS",
    "CM_INVALIDATEDOCKHOST",
    "CM_SETACTIVECONTROL",
    "CM_POPUPHWNDDESTROY",
    "CM_CREATEPOPUP",
    "CM_DESTROYHANDLE",
    "CM_MOUSEACTIVATE",
    "CM_CONTROLLISTCHANGING",
    "CM_BUFFEREDPRINTCLIENT",
    "CM_UNTHEMECONTROL",
    "CM_DOUBLEBUFFEREDCHANGED",
    "CM_PARENTDOUBLEBUFFEREDCHANGED",
    "CM_THEMECHANGED"
    };

 

 

String __fastcall MessageName(UINT msg)
{
    String RetVal;
    if (msg <= WM_USER)
    {
        RetVal = MessageTypeNames[msg];
    }
    else
    {
        if (msg >= CM_BASE)
        {
            if (msg <= CM_BASE + MAX_VCL_MESSAGE)
            {
                RetVal = CMMessageNames[msg - CM_BASE];
            }
            else if (msg - CN_BASE < WM_USER)
            {
                RetVal = "CN" + String(MessageTypeNames[msg - CN_BASE]).SubString(3, 255);
            }
        }
    }
    if (RetVal.Length() == 0)
    {
        char AName[256];
        if (GetClipboardFormatName(msg, AName, 255))
        //获取通过RegisterWindowMessage定义的消息的名称
        {
            RetVal = AName;
        }
        else
        {
            if (msg >= WM_APP)
            {
                RetVal = "WM_APP+" + IntToStr(msg - WM_APP) + "(0x" + IntToHex((int)(msg - WM_APP), 4) + ")";
            }
            else
            {
                RetVal = "WM_USER+" + IntToStr(msg - WM_USER) + "(0x" + IntToHex((int)(msg - WM_USER), 4) + ")";
            }
        }
    }
    return RetVal.Length() ? RetVal : String("(Unknown)"); //如果消息名称仍未知,那就是一个可能未知的新消息了
}

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值