擷取Windows訊息名稱(含VCL訊息)-3

來源:互聯網
上載者:User

//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)"); //如果訊息名稱仍未知,那就是一個可能未知的新訊息了
}

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.