Click here to Skip to main content
15,886,199 members
Articles / Programming Languages / C++

Scroll LED-Matrix Class

Rate me:
Please Sign up or sign in to vote.
4.95/5 (16 votes)
4 Feb 2014CPOL3 min read 30.7K   3.2K   38  
C++ classes that implement scrolling simulated-LED displays
  • led.scroll.src.zip
  • fntcol17.zip
    • &arabic.f14
    • &europe.f14
    • &farsi.f14
    • &gaelic.f14
    • &greek.f14
    • &hebrew.f14
    • &polish.f14
    • &russian.f14
    • &turkish.f14
    • &urdu.f14
    • &yugosla.f14
    • 00-files.lst
    • 2_hebrew.f14
    • 2_hebrew.f16
    • antique.f14
    • apeaus.f08
    • apeaus.f14
    • apeaus.f16
    • apls.f08
    • arabdrft.f14
    • arabkufi.f14
    • arabnaf.f14
    • arbnaskh.f14
    • armenian.f08
    • armenian.f14
    • armenian.f16
    • art.f16
    • ascii.f14
    • backward.f14
    • bdeclo.f14
    • bhexall.f14
    • bhexbox.f14
    • bhexhi.f14
    • bhexlo.f14
    • bigserif.f14
    • bigserif.f16
    • bigsf.f14
    • binaryed.f14
    • blcksnsf.f10
    • block.f14
    • bold.f14
    • boxround.f14
    • boxround.f16
    • broadway.f14
    • broadway.f19
    • broadway.f8
    • broadway.f9
    • bthin.f14
    • bway2.f14
    • cafe.f10
    • cafe.f12
    • cntdown.f14
    • cntdown.f16
    • computer.f14
    • copyleft.txt
    • courier.f14
    • courier.f19
    • courier.f8
    • courier.f9
    • cp111.f08
    • cp111.f14
    • cp111.f16
    • cp111.f19
    • cp112.f08
    • cp112.f14
    • cp112.f16
    • cp112.f19
    • cp113.f08
    • cp113.f14
    • cp113.f16
    • cp113.f19
    • cp437.f08
    • cp437.f14
    • cp437.f16
    • cp437.f19
    • cp437alt.f08
    • cp437bgr.f08
    • cp850.f08
    • cp850.f14
    • cp850.f16
    • cp850.f19
    • cp851.f08
    • cp851.f14
    • cp851.f16
    • cp851.f19
    • cp852.f08
    • cp852.f14
    • cp852.f16
    • cp852.f19
    • cp853.f08
    • cp853.f14
    • cp853.f16
    • cp853.f19
    • cp860.f08
    • cp860.f14
    • cp860.f16
    • cp860.f19
    • cp861.f08
    • cp861.f14
    • cp861.f16
    • cp861.f19
    • cp862.f08
    • cp862.f14
    • cp862.f16
    • cp863.f08
    • cp863.f14
    • cp863.f16
    • cp863.f19
    • cp864.f08
    • cp864.f14
    • cp864.f16
    • cp865.f08
    • cp865.f14
    • cp865.f16
    • cp865.f19
    • cp866.f08
    • cp866.f14
    • cp866.f16
    • cp880.f08
    • cp880.f14
    • cp880.f16
    • cp881.f08
    • cp881.f14
    • cp881.f16
    • cp882.f08
    • cp882.f14
    • cp882.f16
    • cp883.f08
    • cp883.f14
    • cp883.f16
    • cp884.f08
    • cp884.f14
    • cp884.f16
    • cp885.f08
    • cp885.f14
    • cp885.f16
    • cyril_b.f08
    • cyril2.f14
    • cyrill1.f08
    • cyrill1.f14
    • cyrill1.f16
    • cyrill2.f08
    • cyrill2.f14
    • cyrill2.f16
    • cyrill3.f08
    • cyrill3.f14
    • cyrill3.f16
    • cyrillic.f14
    • data.f14
    • data.f19
    • data.f8
    • data.f9
    • decorate.f16
    • draw.f14
    • drawhi.f14
    • evga-alt.f08
    • evga-alt.f09
    • evga-alt.f10
    • evga-alt.f11
    • evga-alt.f12
    • evga-alt.f13
    • finnish.f14
    • fontorig.txt
    • fractur.f14
    • future.f14
    • gaelic.f14
    • georgian.f14
    • grckssrf.f08
    • grckssrf.f14
    • grckssrf.f16
    • greek.f06
    • greek.f07
    • greek.f08
    • greek.f14
    • greek.f16
    • greek2.f14
    • hack4th.f16
    • handugly.f16
    • handwrit.f14
    • handwrit.f16
    • heb-7bit.f16
    • heb-big.f14
    • heb-bold.f16
    • hebboldk.f16
    • hebclrgf.f14
    • hebclrgf.f16
    • heb-ktab.f14
    • hebktav1.f16
    • hebktav2.f16
    • heblarge.f14
    • heblarge.f16
    • heb-med.f14
    • heb-snsf.f14
    • hebugly.f16
    • hebyogi.f16
    • hercital.f08
    • hercules.f08
    • hercules.f10
    • hercules.f14
    • history.txt
    • hollow.f14
    • hrkgreek.f14
    • hylas.f14
    • icons.f14
    • inverted.f14
    • iso.f14
    • iso2.f14
    • iso3.f14
    • iso4.f14
    • italics.f14
    • kana.f14
    • kana.f16
    • lb_large.f16
    • lb_misc.f14
    • lb_ocr.f14
    • lb_ocr.f16
    • lbarabic.f14
    • lbitalic.f14
    • lbitalic.f16
    • lbscript.f14
    • lcd.f14
    • looking4.txt
    • mac.f08
    • macntosh.f14
    • macntosh.f16
    • madrid.f10
    • medieval.f14
    • modern.f16
    • newfont1.f14
    • newfont1.f19
    • newfont1.f8
    • newfont1.f9
    • newfont2.f14
    • newfont2.f19
    • newfont2.f8
    • newfont2.f9
    • newfont3.f14
    • newfont3.f19
    • norway.f14
    • norway2.f14
    • oldeng.f14
    • oldeng-f.f16
    • oldengl.f14
    • old-engl.f14
    • old-engl.f16
    • oldengl.f19
    • pc.f14
    • pc.f19
    • pc.f24
    • pc.f8
    • pc.f9
    • pc_6.f14
    • pc_7.f14
    • pc-sc.f14
    • pc-sc.f19
    • pc-sc.f8
    • pc-sc.f9
    • persian.f14
    • persian.f16
    • police.f16
    • polish.f14
    • pp_roman.f16
    • pp_sser.f16
    • readabl7.f16
    • readabl8.f16
    • readable.f08
    • readable.f10
    • reverse.f14
    • rimrock.f10
    • rmrkbold.f14
    • rom8pix.f08
    • roman.f14
    • roman.f16
    • roman1.f14
    • roman1.f19
    • roman1.f8
    • roman1.f9
    • roman2.f14
    • roman2.f19
    • roman2.f8
    • roman2.f9
    • runic.f14
    • runic.f16
    • russian.f08
    • russian.f14
    • russian.f16
    • sans1.f14
    • sans1.f19
    • sans1.f8
    • sans1.f9
    • sans1-sc.f14
    • sans1-sc.f19
    • sans1-sc.f8
    • sans1-sc.f9
    • sans2.f14
    • sans2.f19
    • sans2.f8
    • sans2.f9
    • sans2-sc.f14
    • sans2-sc.f19
    • sans2-sc.f8
    • sans2-sc.f9
    • sans3.f14
    • sans3.f19
    • sans3-sc.f14
    • sans3-sc.f19
    • sans4.f14
    • sans4.f19
    • sans4-sc.f14
    • sans4-sc.f19
    • sanserif.f14
    • sanserif.f16
    • script.f14
    • script1.f14
    • script1.f19
    • script1.f8
    • script1.f9
    • script2.f14
    • script2.f19
    • script2.f8
    • script2.f9
    • scrwl---.f16
    • scrwl~~~.f16
    • security.f14
    • side.f10
    • slant.f14
    • smalcaps.f14
    • smcapnum.f14
    • spranto.f14
    • spranto1.f16
    • spranto2.f16
    • square.f12
    • standard.f14
    • standard.f16
    • stretch.f14
    • subsup.f16
    • super.f16
    • swiss.f16
    • swiss-av.f16
    • swissav2.f16
    • swissbox.f16
    • swissbx2.f16
    • tex-math.f14
    • tex-math.f16
    • thai.f14
    • thin.f08
    • thin.f10
    • thin_ss.f08
    • thin_ss.f14
    • thin_ss.f16
    • thinasci.f07
    • thincaps.f14
    • thindemo.f14
    • thinscrp.f14
    • uv.cnf
    • vga-rom.f08
    • vga-rom.f14
    • vga-rom.f16
    • voynich.f16
    • wiggly.f16
    • windows.f14
    • windows.f19
    • windows.f8
    • windows.f9
    • yogiprog.inf
  • led.scroll.zip
  • led.scroll-noexe.zip
  • led.scroll-noexe-noexe.zip
//**************************************************************************
//  Copyright (c) 2011-2013  Daniel D Miller
//  This code was removed from common_funcs.cpp because it added 15KB
//  to the output file size, and was rarely needed.
//
//  This module, which has been entirely compiled from public-domain sources, 
//  is itself declared in the public domain.
//**************************************************************************
#include <windows.h>

//**************************************************************************
typedef struct win_msgs_s {
   unsigned msg_num ;
   char msg_name[41] ;
} win_msgs_t ;

#define  WM_NOT_FOUND   100000

static win_msgs_t win_msgs[] = {
{ 0, "WM_NULL" },
{ 1, "WM_CREATE" },
{ 2, "WM_DESTROY" },
{ 3, "WM_MOVE" },
{ 5, "WM_SIZE" },
{ 6, "WM_ACTIVATE" },
{ 7, "WM_SETFOCUS" },
{ 8, "WM_KILLFOCUS" },
{ 10, "WM_ENABLE" },
{ 11, "WM_SETREDRAW" },
{ 12, "WM_SETTEXT" },
{ 13, "WM_GETTEXT" },
{ 14, "WM_GETTEXTLENGTH" },
{ 15, "WM_PAINT" },
{ 16, "WM_CLOSE" },
{ 17, "WM_QUERYENDSESSION" },
{ 18, "WM_QUIT" },
{ 19, "WM_QUERYOPEN" },
{ 20, "WM_ERASEBKGND" },
{ 21, "WM_SYSCOLORCHANGE" },
{ 22, "WM_ENDSESSION" },
{ 24, "WM_SHOWWINDOW" },
{ 26, "WM_SETTINGCHANGE" },
{ 26, "WM_WININICHANGE" },
{ 27, "WM_DEVMODECHANGE" },
{ 28, "WM_ACTIVATEAPP" },
{ 29, "WM_FONTCHANGE" },
{ 30, "WM_TIMECHANGE" },
{ 31, "WM_CANCELMODE" },
{ 32, "WM_SETCURSOR" },
{ 33, "WM_MOUSEACTIVATE" },
{ 34, "WM_CHILDACTIVATE" },
{ 35, "WM_QUEUESYNC" },
{ 36, "WM_GETMINMAXINFO" },
{ 38, "WM_PAINTICON" },
{ 39, "WM_ICONERASEBKGND" },
{ 40, "WM_NEXTDLGCTL" },
{ 42, "WM_SPOOLERSTATUS" },
{ 43, "WM_DRAWITEM" },
{ 44, "WM_MEASUREITEM" },
{ 45, "WM_DELETEITEM" },
{ 46, "WM_VKEYTOITEM" },
{ 47, "WM_CHARTOITEM" },
{ 48, "WM_SETFONT" },
{ 49, "WM_GETFONT" },
{ 50, "WM_SETHOTKEY" },
{ 51, "WM_GETHOTKEY" },
{ 55, "WM_QUERYDRAGICON" },
{ 57, "WM_COMPAREITEM" },
{ 61, "WM_GETOBJECT" },
{ 65, "WM_COMPACTING" },
{ 68, "WM_COMMNOTIFY" },
{ 70, "WM_WINDOWPOSCHANGING" },
{ 71, "WM_WINDOWPOSCHANGED" },
{ 72, "WM_POWER" },
{ 74, "WM_COPYDATA" },
{ 75, "WM_CANCELJOURNAL" },
{ 78, "WM_NOTIFY" },
{ 80, "WM_INPUTLANGCHANGEREQUEST" },
{ 81, "WM_INPUTLANGCHANGE" },
{ 82, "WM_TCARD" },
{ 83, "WM_HELP" },
{ 84, "WM_USERCHANGED" },
{ 85, "WM_NOTIFYFORMAT" },
{ 123, "WM_CONTEXTMENU" },
{ 124, "WM_STYLECHANGING" },
{ 125, "WM_STYLECHANGED" },
{ 126, "WM_DISPLAYCHANGE" },
{ 127, "WM_GETICON" },
{ 128, "WM_SETICON" },
{ 129, "WM_NCCREATE" },
{ 130, "WM_NCDESTROY" },
{ 131, "WM_NCCALCSIZE" },
{ 132, "WM_NCHITTEST" },
{ 133, "WM_NCPAINT" },
{ 134, "WM_NCACTIVATE" },
{ 135, "WM_GETDLGCODE" },
{ 136, "WM_SYNCPAINT " },     // 0x88
//  from http://blog.airesoft.co.uk/2009/11/wm_messages/
// #define WM_SYNCTASK 0x0089
// // <undefined> 0x008a
// #define WM_KLUDGEMINRECT 0x008b
// #define WM_LPKDRAWSWITCHWND 0x008c
// // <undefined> 0x008d
// // <undefined> 0x008e
// // <undefined> 0x008f
// #define WM_UAHDESTROYWINDOW 0x0090
// #define WM_UAHDRAWMENU 0x0091
// #define WM_UAHDRAWMENUITEM 0x0092
// #define WM_UAHINITMENU 0x0093
// #define WM_UAHMEASUREMENUITEM 0x0094
// #define WM_UAHNCPAINTMENUPOPUP 0x0095
{ 137, "WM_SYNCTASK" },               // 0x0089
{ 139, "WM_KLUDGEMINRECT" },          // 0x008b
{ 140, "WM_LPKDRAWSWITCHWND" },       // 0x008c
{ 144, "WM_UAHDESTROYWINDOW" },       // 0x0090
{ 145, "WM_UAHDRAWMENU" },            // 0x0091
{ 146, "WM_UAHDRAWMENUITEM" },        // 0x0092
{ 147, "WM_UAHINITMENU" },            // 0x0093
{ 148, "WM_UAHMEASUREMENUITEM" },     // 0x0094
{ 149, "WM_UAHNCPAINTMENUPOPUP" },    // 0x0095
{ 160, "WM_NCMOUSEMOVE" },    // 0xA0
{ 161, "WM_NCLBUTTONDOWN" },
{ 162, "WM_NCLBUTTONUP" },
{ 163, "WM_NCLBUTTONDBLCLK" },
{ 164, "WM_NCRBUTTONDOWN" },
{ 165, "WM_NCRBUTTONUP" },
{ 166, "WM_NCRBUTTONDBLCLK" },
{ 167, "WM_NCMBUTTONDOWN" },
{ 168, "WM_NCMBUTTONUP" },
{ 169, "WM_NCMBUTTONDBLCLK" },
{ 171, "WM_NCXBUTTONDOWN" },
{ 172, "WM_NCXBUTTONUP" },
{ 173, "WM_NCXBUTTONDBLCLK" },
// http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/49e84457-42fe-42d3-ac93-4749b67ab9a2
// Wednesday, November 17, 2010 1:43 AM
// Tom Shelton, 8,570 Points
// Apparently, 0x00AE and 0x00AF are undocumented windows messages related to themes:
// WM_NCUAHDRAWCAPTION = 0x00AE
// WM_NCUAHDRAWFRAME = 0x00AF
{ 174, "WM_NCUAHDRAWCAPTION" },  // WM_NCUAHDRAWCAPTION = 0x00AE
{ 175, "WM_NCUAHDRAWFRAME" },    // WM_NCUAHDRAWFRAME = 0x00AF
{ 177, "EM_SETSEL" },
{ 255, "WM_INPUT" },
{ 256, "WM_KEYDOWN" },
{ 256, "WM_KEYFIRST" },
{ 257, "WM_KEYUP" },
{ 258, "WM_CHAR" },
{ 259, "WM_DEADCHAR" },
{ 260, "WM_SYSKEYDOWN" },
{ 261, "WM_SYSKEYUP" },
{ 262, "WM_SYSCHAR" },
{ 263, "WM_SYSDEADCHAR" },
{ 264, "WM_KEYLAST" },
{ 265, "WM_UNICHAR" },
{ 269, "WM_IME_STARTCOMPOSITION" },
{ 270, "WM_IME_ENDCOMPOSITION" },
{ 271, "WM_IME_KEYLAST" },
{ 272, "WM_INITDIALOG" },
{ 273, "WM_COMMAND" },
{ 274, "WM_SYSCOMMAND" },
{ 275, "WM_TIMER" },
{ 276, "WM_HSCROLL" },
{ 277, "WM_VSCROLL" },
{ 278, "WM_INITMENU" },
{ 279, "WM_INITMENUPOPUP" },
// #if(WINVER >= 0x0601)
{ 281, "WM_GESTURE" }, //                     0x0119
{ 282, "WM_GESTURENOTIFY" }, //                0x011A

{ 287, "WM_MENUSELECT" },
{ 288, "WM_MENUCHAR" },
{ 289, "WM_ENTERIDLE" },
{ 290, "WM_MENURBUTTONUP" },
{ 291, "WM_MENUDRAG" },
{ 292, "WM_MENUGETOBJECT" },
{ 293, "WM_UNINITMENUPOPUP" },
{ 294, "WM_MENUCOMMAND" },
{ 295, "WM_CHANGEUISTATE" },
{ 296, "WM_UPDATEUISTATE" },
{ 297, "WM_QUERYUISTATE" },
{ 306, "WM_CTLCOLORMSGBOX" },
{ 307, "WM_CTLCOLOREDIT" },
{ 308, "WM_CTLCOLORLISTBOX" },
{ 309, "WM_CTLCOLORBTN" },
{ 310, "WM_CTLCOLORDLG" },
{ 311, "WM_CTLCOLORSCROLLBAR" },
{ 312, "WM_CTLCOLORSTATIC" },

/*
 * Combo Box messages
 */
{ 320, "CB_GETEDITSEL" },  //               0x0140
{ 321, "CB_LIMITTEXT" },  //                0x0141
{ 322, "CB_SETEDITSEL" },  //               0x0142
{ 323, "CB_ADDSTRING" },  //                0x0143
{ 324, "CB_DELETESTRING" },  //             0x0144
{ 325, "CB_DIR" },  //                      0x0145
{ 326, "CB_GETCOUNT" },  //                 0x0146
{ 327, "CB_GETCURSEL" },  //                0x0147
{ 328, "CB_GETLBTEXT" },  //                0x0148
{ 329, "CB_GETLBTEXTLEN" },  //             0x0149
{ 330, "CB_INSERTSTRING" },  //             0x014A
{ 331, "CB_RESETCONTENT" },  //             0x014B
{ 332, "CB_FINDSTRING" },  //               0x014C
{ 333, "CB_SELECTSTRING" },  //             0x014D
{ 334, "CB_SETCURSEL" },  //                0x014E
{ 335, "CB_SHOWDROPDOWN" },  //             0x014F
{ 336, "CB_GETITEMDATA" },  //              0x0150
{ 337, "CB_SETITEMDATA" },  //              0x0151
{ 338, "CB_GETDROPPEDCONTROLRECT" },  //    0x0152
{ 339, "CB_SETITEMHEIGHT" },  //            0x0153
{ 340, "CB_GETITEMHEIGHT" },  //            0x0154
{ 341, "CB_SETEXTENDEDUI" },  //            0x0155
{ 342, "CB_GETEXTENDEDUI" },  //            0x0156
{ 343, "CB_GETDROPPEDSTATE" },  //          0x0157
{ 344, "CB_FINDSTRINGEXACT" },  //          0x0158
{ 345, "CB_SETLOCALE" },  //                0x0159
{ 346, "CB_GETLOCALE" },  //                0x015A
{ 347, "CB_GETTOPINDEX" },  //              0x015b
{ 348, "CB_SETTOPINDEX" },  //              0x015c
{ 349, "CB_GETHORIZONTALEXTENT" },  //      0x015d
{ 350, "CB_SETHORIZONTALEXTENT" },  //      0x015e
{ 351, "CB_GETDROPPEDWIDTH" },  //          0x015f
{ 352, "CB_SETDROPPEDWIDTH" },  //          0x0160
{ 353, "CB_INITSTORAGE" },  //              0x0161
{ 354, "CB_MULTIPLEADDSTRING" },  //        0x0163
{ 355, "CB_GETCOMBOBOXINFO" },  //          0x0164

// { 512, "WM_MOUSEFIRST" },
{ 512, "WM_MOUSEMOVE" },
{ 513, "WM_LBUTTONDOWN" },
{ 514, "WM_LBUTTONUP" },
{ 515, "WM_LBUTTONDBLCLK" },
{ 516, "WM_RBUTTONDOWN" },
{ 517, "WM_RBUTTONUP" },
{ 518, "WM_RBUTTONDBLCLK" },
{ 519, "WM_MBUTTONDOWN" },
{ 520, "WM_MBUTTONUP" },
{ 521, "WM_MBUTTONDBLCLK" },
{ 522, "WM_MOUSEWHEEL" },
{ 523, "WM_XBUTTONDOWN" },
{ 524, "WM_XBUTTONUP" },
{ 525, "WM_MOUSELAST" },
{ 528, "WM_PARENTNOTIFY" },
{ 529, "WM_ENTERMENULOOP" },
{ 530, "WM_EXITMENULOOP" },
{ 531, "WM_NEXTMENU" },
{ 532, "WM_SIZING" },
{ 533, "WM_CAPTURECHANGED" },
{ 534, "WM_MOVING" },
{ 536, "WM_POWERBROADCAST" },
{ 537, "WM_DEVICECHANGE" },
{ 544, "WM_MDICREATE" },
{ 545, "WM_MDIDESTROY" },
{ 546, "WM_MDIACTIVATE" },
{ 547, "WM_MDIRESTORE" },
{ 548, "WM_MDINEXT" },
{ 549, "WM_MDIMAXIMIZE" },
{ 550, "WM_MDITILE" },
{ 551, "WM_MDICASCADE" },
{ 552, "WM_MDIICONARRANGE" },
{ 553, "WM_MDIGETACTIVE" },
{ 560, "WM_MDISETMENU" },
{ 561, "WM_ENTERSIZEMOVE" },
{ 562, "WM_EXITSIZEMOVE" },
{ 563, "WM_DROPFILES" },
{ 564, "WM_MDIREFRESHMENU" },
// http://msdn.microsoft.com/en-us/library/windows/desktop/hh454922(v=vs.85).aspx
{ 568, "WM_POINTERDEVICECHANGE" },  //       0X238
{ 569, "WM_POINTERDEVICEINRANGE" },  //     0X239

// #if (_WIN32_WINNT >= 0x0601)
{ 576, "WM_TOUCHMOVE" },
{ 577, "WM_TOUCHDOWN" },
{ 578, "WM_TOUCHUP" },
{ 588, "WM_POINTERCAPTURECHANGED" },  //           0x024C

{ 641, "WM_IME_SETCONTEXT" },
{ 642, "WM_IME_NOTIFY" },
{ 643, "WM_IME_CONTROL" },
{ 644, "WM_IME_COMPOSITIONFULL" },
{ 645, "WM_IME_SELECT" },
{ 646, "WM_IME_CHAR" },
{ 648, "WM_IME_REQUEST" },
{ 656, "WM_IME_KEYDOWN" },
{ 657, "WM_IME_KEYUP" },
{ 672, "WM_NCMOUSEHOVER" },
{ 673, "WM_MOUSEHOVER" },
{ 674, "WM_NCMOUSELEAVE" },
{ 675, "WM_MOUSELEAVE" },
{ 689, "WM_WTSSESSION_CHANGE" },
{ 704, "WM_TABLET_FIRST" },
{ 735, "WM_TABLET_LAST" },
{ 768, "WM_CUT" },
{ 769, "WM_COPY" },
{ 770, "WM_PASTE" },
{ 771, "WM_CLEAR" },
{ 772, "WM_UNDO" },
{ 773, "WM_RENDERFORMAT" },
{ 774, "WM_RENDERALLFORMATS" },
{ 775, "WM_DESTROYCLIPBOARD" },
{ 776, "WM_DRAWCLIPBOARD" },
{ 777, "WM_PAINTCLIPBOARD" },
{ 778, "WM_VSCROLLCLIPBOARD" },
{ 779, "WM_SIZECLIPBOARD" },
{ 780, "WM_ASKCBFORMATNAME" },
{ 781, "WM_CHANGECBCHAIN" },
{ 782, "WM_HSCROLLCLIPBOARD" },
{ 783, "WM_QUERYNEWPALETTE" },
{ 784, "WM_PALETTEISCHANGING" },
{ 785, "WM_PALETTECHANGED" },
{ 786, "WM_HOTKEY" },
{ 791, "WM_PRINT" },
{ 792, "WM_PRINTCLIENT" },
{ 793, "WM_APPCOMMAND" },
{ 794, "WM_THEMECHANGED" },
// http://sda-framework.googlecode.com/svn-history/r37/trunk/sdaUnits/sdaMessages.pas
// WM_DWMCOMPOSITIONCHANGED          = $031E;
// WM_DWMNCRENDERINGCHANGED          = $031F;
// WM_DWMCOLORIZATIONCOLORCHANGED    = $0320;
// WM_DWMWINDOWMAXIMIZEDCHANGE       = $0321;
// WM_DWMSENDICONICTHUMBNAIL         = $0323;
// WM_DWMSENDICONICLIVEPREVIEWBITMAP = $0326;
// WM_GETTITLEBARINFOEX              = $033F;
{ 798, "WM_DWMCOMPOSITIONCHANGED" },         // 0x031E;
{ 799, "WM_DWMNCRENDERINGCHANGED" },         // 0x031F;
{ 800, "WM_DWMCOLORIZATIONCOLORCHANGED" },   // 0x0320;
{ 801, "WM_DWMWINDOWMAXIMIZEDCHANGE" },      // 0x0321;
{ 803, "WM_DWMSENDICONICTHUMBNAIL" },        // 0x0323;
{ 806, "WM_DWMSENDICONICLIVEPREVIEWBITMAP" },// 0x0326;
{ 831, "WM_DWMSENDICONICLIVEPREVIEWBITMAP" },// 0x033F;

{ 856, "WM_HANDHELDFIRST" },
{ 863, "WM_HANDHELDLAST" },
{ 864, "WM_AFXFIRST" },
{ 895, "WM_AFXLAST" },
{ 896, "WM_PENWINFIRST" },
{ 911, "WM_PENWINLAST" },

// http://sda-framework.googlecode.com/svn-history/r37/trunk/sdaUnits/sdaMessages.pas
// { 831, "WM_DDE_FIRST    " },   // $03E0;
{ 992, "WM_DDE_INITIATE " },   // WM_DDE_FIRST + 0;
{ 993, "WM_DDE_TERMINATE" },   // WM_DDE_FIRST + 1;
{ 994, "WM_DDE_ADVISE   " },   // WM_DDE_FIRST + 2;
{ 995, "WM_DDE_UNADVISE " },   // WM_DDE_FIRST + 3;
{ 996, "WM_DDE_ACK      " },   // WM_DDE_FIRST + 4;
{ 997, "WM_DDE_DATA     " },   // WM_DDE_FIRST + 5;
{ 998, "WM_DDE_REQUEST  " },   // WM_DDE_FIRST + 6;
{ 999, "WM_DDE_POKE     " },   // WM_DDE_FIRST + 7;
{ 1000, "WM_DDE_EXECUTE  " },  // WM_DDE_FIRST + 8;

{ 1024, "DM_GETDEFID" },
{ 1025, "DM_SETDEFID" },
{ 1026, "DM_REPOSITION" },

//  PSM mesages
{ 1125, "PSM_SETCURSEL" },
{ 1126, "PSM_REMOVEPAGE" },
{ 1127, "PSM_ADDPAGE" },  // { 1127, "WM_DO_COMM_TASK" },
{ 1128, "PSM_CHANGED" },  // { 1128, "WM_COMM_TASK_DONE" },
{ 1129, "PSM_RESTARTWINDOWS" },   
{ 1130, "PSM_REBOOTSYSTEM" },     
{ 1131, "PSM_CANCELTOCLOSE" },    
{ 1132, "PSM_QUERYSIBLINGS" },    
{ 1133, "PSM_UNCHANGED" },        
{ 1134, "PSM_APPLY" },            
{ 1135, "PSM_SETTITLEA" },        
{ 1136, "PSM_SETWIZBUTTONS" },    
{ 1137, "PSM_PRESSBUTTON" },         //  WM_USER + 113
{ 1138, "PSM_SETCURSELID" },         
{ 1139, "PSM_SETFINISHTEXTA" },      
{ 1140, "PSM_GETTABCONTROL" },       
{ 1141, "PSM_ISDIALOGMESSAGE" },     
{ 1142, "PSM_GETCURRENTPAGEHWND" },  
{ 1144, "PSM_SETTITLEW" },
{ 1145, "PSM_SETFINISHTEXTW" },      

{ 4096, "LVM_GETBKCOLOR" },
{ 4097, "LVM_SETBKCOLOR" },
{ 4098, "LVM_GETIMAGELIST" },
{ 4099, "LVM_SETIMAGELIST" },
{ 4100, "LVM_GETITEMCOUNT" },
{ 4101, "LVM_GETITEMA" },
{ 4102, "LVM_SETITEMA" },
{ 4103, "LVM_INSERTITEMA" },
{ 4104, "LVM_DELETEITEM" },
{ 4105, "LVM_DELETEALLITEMS" },
{ 4106, "LVM_GETCALLBACKMASK" },
{ 4107, "LVM_SETCALLBACKMASK" },
{ 4108, "LVM_GETNEXTITEM" },
{ 4109, "LVM_FINDITEMA" },
{ 4110, "LVM_GETITEMRECT" },
{ 4111, "LVM_SETITEMPOSITION" },
{ 4112, "LVM_GETITEMPOSITION" },
{ 4113, "LVM_GETSTRINGWIDTHA" },
{ 4114, "LVM_HITTEST" },
{ 4115, "LVM_ENSUREVISIBLE" },
{ 4116, "LVM_SCROLL" },
{ 4117, "LVM_REDRAWITEMS" },
{ 4118, "LVM_ARRANGE" },
{ 4119, "LVM_EDITLABELA" },
{ 4120, "LVM_GETEDITCONTROL" },
{ 4121, "LVM_GETCOLUMNA" },
{ 4122, "LVM_SETCOLUMNA" },
{ 4123, "LVM_INSERTCOLUMNA" },
{ 4124, "LVM_DELETECOLUMN" },
{ 4125, "LVM_GETCOLUMNWIDTH" },
{ 4126, "LVM_SETCOLUMNWIDTH" },
{ 4127, "LVM_GETHEADER" },
{ 4129, "LVM_CREATEDRAGIMAGE" },
{ 4130, "LVM_GETVIEWRECT" },
{ 4131, "LVM_GETTEXTCOLOR" },
{ 4132, "LVM_SETTEXTCOLOR" },
{ 4133, "LVM_GETTEXTBKCOLOR" },
{ 4134, "LVM_SETTEXTBKCOLOR" },
{ 4135, "LVM_GETTOPINDEX" },
{ 4136, "LVM_GETCOUNTPERPAGE" },
{ 4137, "LVM_GETORIGIN" },
{ 4137, "LVM_GETORIGIN" },
{ 4138, "LVM_UPDATE" },
{ 4139, "LVM_SETITEMSTATE" },
{ 4140, "LVM_GETITEMSTATE" },
{ 4141, "LVM_GETITEMTEXTA" },
{ 4142, "LVM_SETITEMTEXTA" },
{ 4143, "LVM_SETITEMCOUNT" },
{ 4144, "LVM_SORTITEMS" },
{ 4145, "LVM_SETITEMPOSITION32" },
{ 4146, "LVM_GETSELECTEDCOUNT" },
{ 4147, "LVM_GETITEMSPACING" },
{ 4148, "LVM_GETISEARCHSTRINGA" },
{ 4149, "LVM_SETICONSPACING" },
{ 4150, "LVM_SETEXTENDEDLISTVIEWSTYLE" },
{ 4151, "LVM_GETEXTENDEDLISTVIEWSTYLE" },
{ 4152, "LVM_GETSUBITEMRECT" },
{ 4153, "LVM_SUBITEMHITTEST" },
{ 4154, "LVM_SETCOLUMNORDERARRAY" },
{ 4155, "LVM_GETCOLUMNORDERARRAY" },
{ 4156, "LVM_SETHOTITEM" },
{ 4157, "LVM_GETHOTITEM" },
{ 4158, "LVM_SETHOTCURSOR" },
{ 4159, "LVM_GETHOTCURSOR" },
{ 4160, "LVM_APPROXIMATEVIEWRECT" },
{ 4161, "LVM_SETWORKAREAS" },
{ 4162, "LVM_GETSELECTIONMARK" },
{ 4163, "LVM_SETSELECTIONMARK" },
{ 4164, "LVM_SETBKIMAGEA" },
{ 4165, "LVM_GETBKIMAGEA" },
{ 4166, "LVM_GETWORKAREAS" },
{ 4167, "LVM_SETHOVERTIME" },
{ 4168, "LVM_GETHOVERTIME" },
{ 4169, "LVM_GETNUMBEROFWORKAREAS" },
{ 4170, "LVM_SETTOOLTIPS" },
{ 4171, "LVM_GETITEMW" },
{ 4172, "LVM_SETITEMW" },
{ 4173, "LVM_INSERTITEMW" },
{ 4174, "LVM_GETTOOLTIPS" },
{ 4177, "LVM_SORTITEMSEX" },
{ 4179, "LVM_FINDITEMW" },
{ 4183, "LVM_GETSTRINGWIDTHW" },
{ 4191, "LVM_GETCOLUMNW" },
{ 4192, "LVM_SETCOLUMNW" },
{ 4193, "LVM_INSERTCOLUMNW" },
{ 4211, "LVM_GETITEMTEXTW" },
{ 4212, "LVM_SETITEMTEXTW" },
{ 4213, "LVM_GETISEARCHSTRINGW" },
{ 4214, "LVM_EDITLABELW" },
{ 4234, "LVM_SETBKIMAGEW" },
{ 4235, "LVM_GETBKIMAGEW" },
{ 4236, "LVM_SETSELECTEDCOLUMN" },
{ 4238, "LVM_SETVIEW" },
{ 4239, "LVM_GETVIEW" },
{ 4241, "LVM_INSERTGROUP" },
{ 4243, "LVM_SETGROUPINFO" },
{ 4245, "LVM_GETGROUPINFO" },
{ 4246, "LVM_REMOVEGROUP" },
{ 4247, "LVM_MOVEGROUP" },
{ 4251, "LVM_SETGROUPMETRICS" },
{ 4252, "LVM_GETGROUPMETRICS" },
{ 4253, "LVM_ENABLEGROUPVIEW" },
{ 4254, "LVM_SORTGROUPS" },
{ 4255, "LVM_INSERTGROUPSORTED" },
{ 4256, "LVM_REMOVEALLGROUPS" },
{ 4257, "LVM_HASGROUP" },
{ 4258, "LVM_SETTILEVIEWINFO" },
{ 4259, "LVM_GETTILEVIEWINFO" },
{ 4260, "LVM_SETTILEINFO" },
{ 4261, "LVM_GETTILEINFO" },
{ 4262, "LVM_SETINSERTMARK" },
{ 4263, "LVM_GETINSERTMARK" },
{ 4264, "LVM_INSERTMARKHITTEST" },
{ 4265, "LVM_GETINSERTMARKRECT" },
{ 4266, "LVM_SETINSERTMARKCOLOR" },
{ 4267, "LVM_GETINSERTMARKCOLOR" },
{ 4269, "LVM_SETINFOTIP" },
{ 4270, "LVM_GETSELECTEDCOLUMN" },
{ 4271, "LVM_ISGROUPVIEWENABLED" },
{ 4272, "LVM_GETOUTLINECOLOR" },
{ 4273, "LVM_SETOUTLINECOLOR" },
{ 4275, "LVM_CANCELEDITLABEL" },
{ 4277, "LVM_MAPIDTOINDEX" },
{ 4352, "TVM_INSERTITEMA" },
{ 4353, "TVM_DELETEITEM" },
{ 4354, "TVM_EXPAND" },
{ 4356, "TVM_GETITEMRECT" },
{ 4357, "TVM_GETCOUNT" },
{ 4358, "TVM_GETINDENT" },
{ 4359, "TVM_SETINDENT" },
{ 4360, "TVM_GETIMAGELIST" },
{ 4361, "TVM_SETIMAGELIST" },
{ 4362, "TVM_GETNEXTITEM" },
{ 4363, "TVM_SELECTITEM" },
{ 4364, "TVM_GETITEMA" },
{ 4365, "TVM_SETITEMA" },
{ 4366, "TVM_EDITLABELA" },
{ 4367, "TVM_GETEDITCONTROL" },
{ 4368, "TVM_GETVISIBLECOUNT" },
{ 4369, "TVM_HITTEST" },
{ 4370, "TVM_CREATEDRAGIMAGE" },
{ 4371, "TVM_SORTCHILDREN" },
{ 4372, "TVM_ENSUREVISIBLE" },
{ 4373, "TVM_SORTCHILDRENCB" },
{ 4374, "TVM_ENDEDITLABELNOW" },
{ 4375, "TVM_GETISEARCHSTRINGA" },
{ 4376, "TVM_SETTOOLTIPS" },
{ 4377, "TVM_GETTOOLTIPS" },
{ 4378, "TVM_SETINSERTMARK" },
{ 4379, "TVM_SETITEMHEIGHT" },
{ 4380, "TVM_GETITEMHEIGHT" },
{ 4381, "TVM_SETBKCOLOR" },
{ 4382, "TVM_SETTEXTCOLOR" },
{ 4383, "TVM_GETBKCOLOR" },
{ 4384, "TVM_GETTEXTCOLOR" },
{ 4385, "TVM_SETSCROLLTIME" },
{ 4386, "TVM_GETSCROLLTIME" },
{ 4389, "TVM_SETINSERTMARKCOLOR" },
{ 4390, "TVM_GETINSERTMARKCOLOR" },
{ 4391, "TVM_GETITEMSTATE" },
{ 4392, "TVM_SETLINECOLOR" },
{ 4393, "TVM_GETLINECOLOR" },
{ 4402, "TVM_INSERTITEMW" },
{ 4414, "TVM_GETITEMW" },
{ 4415, "TVM_SETITEMW" },
{ 4416, "TVM_GETISEARCHSTRINGW" },
{ 4417, "TVM_EDITLABELW" },
{ 4608, "HDM_GETITEMCOUNT" },
{ 4609, "HDM_INSERTITEMA" },
{ 4610, "HDM_DELETEITEM" },
{ 4611, "HDM_GETITEMA" },
{ 4612, "HDM_SETITEMA" },
{ 4613, "HDM_LAYOUT" },
{ 4614, "HDM_HITTEST" },
{ 4615, "HDM_GETITEMRECT" },
{ 4616, "HDM_SETIMAGELIST" },
{ 4617, "HDM_GETIMAGELIST" },
{ 4618, "HDM_INSERTITEMW" },
{ 4619, "HDM_GETITEMW" },
{ 4620, "HDM_SETITEMW" },
{ 4623, "HDM_ORDERTOINDEX" },
{ 4624, "HDM_CREATEDRAGIMAGE" },
{ 4625, "HDM_GETORDERARRAY" },
{ 4626, "HDM_SETORDERARRAY" },
{ 4627, "HDM_SETHOTDIVIDER" },
{ 4866, "TCM_GETIMAGELIST" },
{ 4867, "TCM_SETIMAGELIST" },
{ 4868, "TCM_GETITEMCOUNT" },
{ 4869, "TCM_GETITEMA" },
{ 4870, "TCM_SETITEMA" },
{ 4871, "TCM_INSERTITEMA" },
{ 4872, "TCM_DELETEITEM" },
{ 4873, "TCM_DELETEALLITEMS" },
{ 4874, "TCM_GETITEMRECT" },
{ 4875, "TCM_GETCURSEL" },
{ 4876, "TCM_SETCURSEL" },
{ 4877, "TCM_HITTEST" },
{ 4878, "TCM_SETITEMEXTRA" },
{ 4904, "TCM_ADJUSTRECT" },
{ 4905, "TCM_SETITEMSIZE" },
{ 4906, "TCM_REMOVEIMAGE" },
{ 4907, "TCM_SETPADDING" },
{ 4908, "TCM_GETROWCOUNT" },
{ 4909, "TCM_GETTOOLTIPS" },
{ 4910, "TCM_SETTOOLTIPS" },
{ 4911, "TCM_GETCURFOCUS" },
{ 4912, "TCM_SETCURFOCUS" },
{ 4913, "TCM_SETMINTABWIDTH" },
{ 4914, "TCM_DESELECTALL" },
{ 4915, "TCM_HIGHLIGHTITEM" },
{ 4916, "TCM_SETEXTENDEDSTYLE" },
{ 4917, "TCM_GETEXTENDEDSTYLE" },
{ 4924, "TCM_GETITEMW" },
{ 4925, "TCM_SETITEMW" },
{ 4926, "TCM_INSERTITEMW" },
{ 5121, "PGM_SETCHILD" },
{ 5122, "PGM_RECALCSIZE" },
{ 5123, "PGM_FORWARDMOUSE" },
{ 5124, "PGM_SETBKCOLOR" },
{ 5125, "PGM_GETBKCOLOR" },
{ 5126, "PGM_SETBORDER" },
{ 5127, "PGM_GETBORDER" },
{ 5128, "PGM_SETPOS" },
{ 5129, "PGM_GETPOS" },
{ 5130, "PGM_SETBUTTONSIZE" },
{ 5131, "PGM_GETBUTTONSIZE" },
{ 5132, "PGM_GETBUTTONSTATE" },

{ 32768, "WM_APP" },
{ WM_NOT_FOUND, "WM_NOT_FOUND" } };

// #define NM_FIRST  0
// #define NM_LAST   ((UINT)-99)
// #define LVN_FIRST ((UINT)-100)
// #define LVN_LAST  ((UINT)-199)
// #define HDN_FIRST ((UINT)-300)
// #define HDN_LAST  ((UINT)-399)
// #define TVN_FIRST ((UINT)-400)
// #define TVN_LAST  ((UINT)-499)
// #define TTN_FIRST ((UINT)-520)
// #define TTN_LAST  ((UINT)-549)
// #define TCN_FIRST ((UINT)-550)
// #define TCN_LAST  ((UINT)-580)
// #ifndef CDN_FIRST
// #define CDN_FIRST ((UINT)-601) /* also in commdlg.h */
// #define CDN_LAST  ((UINT)-699)
// #endif
// #define TBN_FIRST ((UINT)-700)
// #define TBN_LAST  ((UINT)-720)
// #define UDN_FIRST ((UINT)-721)
// #define UDN_LAST  ((UINT)-740)
// #if (_WIN32_IE >= 0x0300)
// #define RBN_FIRST ((UINT)-831)
// #define RBN_LAST  ((UINT)-859)
// #define MCN_FIRST ((UINT)-750)
// #define MCN_LAST  ((UINT)-759)
// #define DTN_FIRST ((UINT)-760)
// #define DTN_LAST  ((UINT)-799)
// #define CBEN_FIRST   ((UINT)-800)
// #define CBEN_LAST ((UINT)-830)
// #endif /* _WIN32_IE */
// #if (_WIN32_IE >= 0x0400)
// #define IPN_FIRST ((UINT)-860)
// #define IPN_LAST  ((UINT)-879)
// #define IPN_FIELDCHANGED   (IPN_FIRST-0)
// #define SBN_FIRST ((UINT)-880U)
// #define SBN_LAST  ((UINT)-899U)
// #define PGN_FIRST ((UINT)-900U)
// #define PGN_LAST  ((UINT)-950U)
// #define PGN_SCROLL   (PGN_FIRST-1)
// #define PGN_CALCSIZE (PGN_FIRST-2)

// #define TTN_FIRST ((UINT)-520)

static win_msgs_t win_neg_msgs[] = {
{ 0, "WM_NULL" },

{ 1,  "NM_OUTOFMEMORY" },
{ 2,  "NM_CLICK" },
{ 3,  "NM_DBLCLK" },          
{ 4,  "NM_RETURN" },          
{ 5,  "NM_RCLICK" },          
{ 6,  "NM_RDBLCLK" },         
{ 7,  "NM_SETFOCUS" },        
{ 8,  "NM_KILLFOCUS" },       
{ 12, "NM_CUSTOMDRAW" },      
{ 13, "NM_HOVER" },           
{ 14, "NM_NCHITTEST" },       
{ 15, "NM_KEYDOWN" },         
{ 16, "NM_RELEASEDCAPTURE" }, 
{ 17, "NM_SETCURSOR" },       
{ 18, "NM_CHAR" },            
{ 19, "NM_TOOLTIPSCREATED" }, 

{ 100, "LVN_ITEMCHANGING" },     
{ 101, "LVN_ITEMCHANGED" },      
{ 102, "LVN_INSERTITEM" },       
{ 103, "LVN_DELETEITEM" },       
{ 104, "LVN_DELETEALLITEMS" },   
{ 105, "LVN_BEGINLABELEDITA" },  
{ 106, "LVN_ENDLABELEDITA" },    
{ 108, "LVN_COLUMNCLICK" },      
{ 109, "LVN_BEGINDRAG" },        
{ 111, "LVN_BEGINRDRAG" },       
{ 113, "LVN_ODCACHEHINT" },      
{ 114, "LVN_ITEMACTIVATE" },     
{ 115, "LVN_ODSTATECHANGED" },   

{ 121, "LVN_HOTTRACK" },

{ 150, "LVN_GETDISPINFOA" },      
{ 151, "LVN_SETDISPINFOA" },
{ 152, "LVN_ODFINDITEMA" },
{ 155, "LVN_KEYDOWN" },
{ 156, "LVN_MARQUEEBEGIN" },
{ 157, "LVN_GETINFOTIPA" },
{ 158, "LVN_GETINFOTIPW" },

{ 175, "LVN_BEGINLABELEDITW" },   
{ 176, "LVN_ENDLABELEDITW" },     
{ 177, "LVN_GETDISPINFOW" },
{ 178, "LVN_SETDISPINFOW" },      
{ 179, "LVN_ODFINDITEMW" },       

//  prsht.h
{ 200, "PSN_SETACTIVE" },              
{ 201, "PSN_KILLACTIVE" },             
{ 202, "PSN_APPLY" },                  
{ 203, "PSN_RESET" },                  
{ 205, "PSN_HELP" },                   
{ 206, "PSN_WIZBACK" },                
{ 207, "PSN_WIZNEXT" },                
{ 208, "PSN_WIZFINISH" },              
{ 209, "PSN_QUERYCANCEL" },            
{ 210, "PSN_GETOBJECT" },              
{ 212, "PSN_TRANSLATEACCELERATOR" },   
{ 213, "PSN_QUERYINITIALFOCUS" },      

// #define HDN_FIRST ((UINT)-300)
// #define HDN_LAST  ((UINT)-399)
{ 300, "HDN_ITEMCHANGINGA" },     
{ 301, "HDN_ITEMCHANGEDA" },      
{ 302, "HDN_ITEMCLICKA" },        
{ 303, "HDN_ITEMDBLCLICKA" },     
{ 305, "HDN_DIVIDERDBLCLICKA" },  
{ 306, "HDN_BEGINTRACKA" },       
{ 307, "HDN_ENDTRACKA" },         
{ 308, "HDN_TRACKA" },            
{ 309, "HDN_GETDISPINFOA" },      
{ 310, "HDN_BEGINDRAG" },         
{ 311, "HDN_ENDDRAG" },           
{ 320, "HDN_ITEMCHANGINGW" },     
{ 321, "HDN_ITEMCHANGEDW" },      
{ 322, "HDN_ITEMCLICKW" },        
{ 323, "HDN_ITEMDBLCLICKW" },     
{ 325, "HDN_DIVIDERDBLCLICKW" },  
{ 326, "HDN_BEGINTRACKW" },       
{ 327, "HDN_ENDTRACKW" },         
{ 328, "HDN_TRACKW" },            
{ 329, "HDN_GETDISPINFOW" },      

{ 401, "TVN_SELCHANGINGA" },
{ 402, "TVN_SELCHANGEDA" },
{ 403, "TVN_GETDISPINFOA" },
{ 404, "TVN_SETDISPINFOA" },
{ 405, "TVN_ITEMEXPANDINGA" },
{ 406, "TVN_ITEMEXPANDEDA" },
{ 407, "TVN_BEGINDRAGA" },
{ 408, "TVN_BEGINRDRAGA" },
{ 409, "TVN_DELETEITEMA" },
{ 410, "TVN_BEGINLABELEDITA" },
{ 411, "TVN_ENDLABELEDITA" },
{ 412, "TVN_KEYDOWN" },
{ 413, "TVN_GETINFOTIPA" },
{ 414, "TVN_GETINFOTIPW" },
{ 415, "TVN_SINGLEEXPAND" },
{ 450, "TVN_SELCHANGINGW" },
{ 451, "TVN_SELCHANGEDW" },
{ 452, "TVN_GETDISPINFOW" },
{ 453, "TVN_SETDISPINFOW" },
{ 454, "TVN_ITEMEXPANDINGW" },
{ 455, "TVN_ITEMEXPANDEDW" },
{ 456, "TVN_BEGINDRAGW" },
{ 457, "TVN_BEGINRDRAGW" },
{ 458, "TVN_DELETEITEMW" },
{ 459, "TVN_BEGINLABELEDITW" },
{ 460, "TVN_ENDLABELEDITW" },

{ 520, "TTN_GETDISPINFOA" },      
{ 521, "TTN_SHOW" },      
{ 522, "TTN_POP" },      
{ 530, "TTN_GETDISPINFOW" },      

{ 550, "TCN_KEYDOWN" },      
{ 551, "TCN_SELCHANGE" },      
{ 552, "TCN_SELCHANGING" },      

{ 700, "TBN_GETBUTTONINFOA" },
{ 701, "TBN_BEGINDRAG" },
{ 702, "TBN_ENDDRAG" },
{ 703, "TBN_BEGINADJUST" },
{ 704, "TBN_ENDADJUST" },
{ 705, "TBN_RESET" },
{ 706, "TBN_QUERYINSERT" },
{ 707, "TBN_QUERYDELETE" },
{ 708, "TBN_TOOLBARCHANGE" },
{ 709, "TBN_CUSTHELP" },
{ 710, "TBN_DROPDOWN" },
{ 713, "TBN_HOTITEMCHANGE" },
{ 714, "TBN_DRAGOUT" },
{ 715, "TBN_DELETINGBUTTON" },
{ 716, "TBN_GETDISPINFOA" },
{ 717, "TBN_GETDISPINFOW" },
{ 718, "TBN_GETINFOTIPA" },
{ 719, "TBN_GETINFOTIPW" },
{ 720, "TBN_GETBUTTONINFOW" },
{ 721, "TBN_RESTORE" },
{ 722, "TBN_SAVE" },
{ 722, "UDN_DELTAPOS" },
{ 723, "TBN_INITCUSTOMIZE" },
{ 800, "CBEN_GETDISPINFOA" },
{ 801, "CBEN_INSERTITEM" },
{ 802, "CBEN_DELETEITEM" },
{ 804, "CBEN_BEGINEDIT" },
{ 805, "CBEN_ENDEDITA" },
{ 806, "CBEN_ENDEDITW" },
{ 807, "CBEN_GETDISPINFOW" },
{ 808, "CBEN_DRAGBEGINA" },
{ 809, "CBEN_DRAGBEGINW" },
{ 831, "RBN_HEIGHTCHANGE" },
{ 832, "RBN_GETOBJECT" },
{ 833, "RBN_LAYOUTCHANGED" },
{ 834, "RBN_AUTOSIZE" },
{ 835, "RBN_BEGINDRAG" },
{ 836, "RBN_ENDDRAG" },
{ 837, "RBN_DELETINGBAND" },
{ 838, "RBN_DELETEDBAND" },
{ 839, "RBN_CHILDSIZE" },
{ 860, "IPN_FIELDCHANGED" },
{ 880, "SBN_SIMPLEMODECHANGE" },
{ 901, "PGN_SCROLL" },
{ 902, "PGN_CALCSIZE" },

{ WM_NOT_FOUND, "WM_NOT_FOUND" } };

//*********************************************************************
//lint -esym(714, lookup_winmsg_name)
//lint -esym(759, lookup_winmsg_name)
//lint -esym(765, lookup_winmsg_name)
char *lookup_winmsg_name(int msg_code)
{
   static char msgstr[81] ;
   unsigned j ;
   bool is_negative = false ;
   if (msg_code >= 0) {
      if (msg_code >= WM_APP) {
         wsprintfA(msgstr, "WM_APP + %u", msg_code - WM_APP) ;
         return msgstr;
      }
      for (j=0; win_msgs[j].msg_num != WM_NOT_FOUND; j++) {
         if (win_msgs[j].msg_num == (unsigned) msg_code)
            return win_msgs[j].msg_name ;
      }
   } else {
      msg_code = -msg_code ;
      is_negative = true ;
      for (j=0; win_neg_msgs[j].msg_num != WM_NOT_FOUND; j++) {
         if (win_neg_msgs[j].msg_num == (unsigned) msg_code)
            return win_neg_msgs[j].msg_name ;
      }
   }
   if (is_negative)
      wsprintfA(msgstr, "Msg not found [-%d]", msg_code) ;
   else
      wsprintfA(msgstr, "Msg not found [%d]", msg_code) ;
   return msgstr;
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) Retired
United States United States
I have worked for 25+ years as a firmware engineer, in various environments. In my private life, I create a variety of applications, including console applications in Linux and Windows, and GUI applications in Windows. All of my programs and code snippets are freeware, with source code available. All programs are written in C or C++, and built using the MinGW toolchain.

Comments and Discussions