Click here to Skip to main content
15,881,852 members
Articles / Programming Languages / C#

Windows Development in C++, COM API Clients

Rate me:
Please Sign up or sign in to vote.
4.98/5 (31 votes)
3 Jan 2015CPOL7 min read 62.7K   1.6K   106  
Using the Facade Pattern to simplify development with COM based APIs
#pragma once

#include "hwindef.h"

namespace harlinn
{
    namespace windows
    {
        enum class Keys : int
        {
            // No key pressed.
            None = 0,
            // The left mouse button.
            LButton = 1,
            // The right mouse button.
            RButton = 2,
            // The CANCEL key.
            Cancel = 3,
            // The middle mouse button (three-button mouse).
            MButton = 4,
            // The first x mouse button (five-button mouse).
            XButton1 = 5,
            // The second x mouse button (five-button mouse).
            XButton2 = 6,
            // The BACKSPACE key.
            Back = 8,
            // The TAB key.
            Tab = 9,
            // The LINEFEED key.
            LineFeed = 10,
            // The CLEAR key.
            Clear = 12,
            // The ENTER key.
            Enter = 13,
            // The RETURN key.
            Return = 13,
            // The SHIFT key.
            ShiftKey = 16,
            // The CTRL key.
            ControlKey = 17,
            // The ALT key.
            Menu = 18,
            // The PAUSE key.
            Pause = 19,
            // The CAPS LOCK key.
            CapsLock = 20,
            // The CAPS LOCK key.
            Capital = 20,
            // The IME Kana mode key.
            KanaMode = 21,
            // The IME Hanguel mode key. (maintained for compatibility; use HangulMode)
            HanguelMode = 21,
            // The IME Hangul mode key.
            HangulMode = 21,
            // The IME Junja mode key.
            JunjaMode = 23,
            // The IME final mode key.
            FinalMode = 24,
            // The IME Kanji mode key.
            KanjiMode = 25,
            // The IME Hanja mode key.
            HanjaMode = 25,
            // The ESC key.
            Escape = 27,
            // The IME convert key.
            IMEConvert = 28,
            // The IME nonconvert key.
            IMENonconvert = 29,
            // The IME accept key. Obsolete, use System.Windows.Forms.Keys.IMEAccept instead.
            IMEAceept = 30,
            // The IME accept key, replaces System.Windows.Forms.Keys.IMEAceept.
            IMEAccept = 30,
            // The IME mode change key.
            IMEModeChange = 31,
            // The SPACEBAR key.
            Space = 32,
            // The PAGE UP key.
            Prior = 33,
            // The PAGE UP key.
            PageUp = 33,
            // The PAGE DOWN key.
            Next = 34,
            // The PAGE DOWN key.
            PageDown = 34,
            // The END key.
            End = 35,
            // The HOME key.
            Home = 36,
            // The LEFT ARROW key.
            Left = 37,
            // The UP ARROW key.
            Up = 38,
            // The RIGHT ARROW key.
            Right = 39,
            // The DOWN ARROW key.
            Down = 40,
            // The SELECT key.
            Select = 41,
            // The PRINT key.
            Print = 42,
            // The EXECUTE key.
            Execute = 43,
            // The PRINT SCREEN key.
            PrintScreen = 44,
            // The PRINT SCREEN key.
            Snapshot = 44,
            // The INS key.
            Insert = 45,
            // The DEL key.
            Delete = 46,
            // The HELP key.
            Help = 47,
            // The 0 key.
            D0 = 48,
            // The 1 key.
            D1 = 49,
            // The 2 key.
            D2 = 50,
            // The 3 key.
            D3 = 51,
            // The 4 key.
            D4 = 52,
            // The 5 key.
            D5 = 53,
            // The 6 key.
            D6 = 54,
            // The 7 key.
            D7 = 55,
            // The 8 key.
            D8 = 56,
            // The 9 key.
            D9 = 57,
            // The A key.
            A = 65,
            // The B key.
            B = 66,
            // The C key.
            C = 67,
            // The D key.
            D = 68,
            // The E key.
            E = 69,
            // The F key.
            F = 70,
            // The G key.
            G = 71,
            // The H key.
            H = 72,
            // The I key.
            I = 73,
            // The J key.
            J = 74,
            // The K key.
            K = 75,
            // The L key.
            L = 76,
            // The M key.
            M = 77,
            // The N key.
            N = 78,
            // The O key.
            O = 79,
            // The P key.
            P = 80,
            // The Q key.
            Q = 81,
            // The R key.
            R = 82,
            // The S key.
            S = 83,
            // The T key.
            T = 84,
            // The U key.
            U = 85,
            // The V key.
            V = 86,
            // The W key.
            W = 87,
            // The X key.
            X = 88,
            // The Y key.
            Y = 89,
            // The Z key.
            Z = 90,
            // The left Windows logo key (Microsoft Natural Keyboard).
            LWin = 91,
            // The right Windows logo key (Microsoft Natural Keyboard).
            RWin = 92,
            // The application key (Microsoft Natural Keyboard).
            Apps = 93,
            // The computer sleep key.
            Sleep = 95,
            // The 0 key on the numeric keypad.
            NumPad0 = 96,
            // The 1 key on the numeric keypad.
            NumPad1 = 97,
            // The 2 key on the numeric keypad.
            NumPad2 = 98,
            // The 3 key on the numeric keypad.
            NumPad3 = 99,
            // The 4 key on the numeric keypad.
            NumPad4 = 100,
            // The 5 key on the numeric keypad.
            NumPad5 = 101,
            // The 6 key on the numeric keypad.
            NumPad6 = 102,
            // The 7 key on the numeric keypad.
            NumPad7 = 103,
            // The 8 key on the numeric keypad.
            NumPad8 = 104,
            // The 9 key on the numeric keypad.
            NumPad9 = 105,
            // The multiply key.
            Multiply = 106,
            // The add key.
            Add = 107,
            // The separator key.
            Separator = 108,
            // The subtract key.
            Subtract = 109,
            // The decimal key.
            Decimal = 110,
            // The divide key.
            Divide = 111,
            // The F1 key.
            F1 = 112,
            // The F2 key.
            F2 = 113,
            // The F3 key.
            F3 = 114,
            // The F4 key.
            F4 = 115,
            // The F5 key.
            F5 = 116,
            // The F6 key.
            F6 = 117,
            // The F7 key.
            F7 = 118,
            // The F8 key.
            F8 = 119,
            // The F9 key.
            F9 = 120,
            // The F10 key.
            F10 = 121,
            // The F11 key.
            F11 = 122,
            // The F12 key.
            F12 = 123,
            // The F13 key.
            F13 = 124,
            // The F14 key.
            F14 = 125,
            // The F15 key.
            F15 = 126,
            // The F16 key.
            F16 = 127,
            // The F17 key.
            F17 = 128,
            // The F18 key.
            F18 = 129,
            // The F19 key.
            F19 = 130,
            // The F20 key.
            F20 = 131,
            // The F21 key.
            F21 = 132,
            // The F22 key.
            F22 = 133,
            // The F23 key.
            F23 = 134,
            // The F24 key.
            F24 = 135,
            // The NUM LOCK key.
            NumLock = 144,
            // The SCROLL LOCK key.
            Scroll = 145,
            // The left SHIFT key.
            LShiftKey = 160,
            // The right SHIFT key.
            RShiftKey = 161,
            // The left CTRL key.
            LControlKey = 162,
            // The right CTRL key.
            RControlKey = 163,
            // The left ALT key.
            LMenu = 164,
            // The right ALT key.
            RMenu = 165,
            // The browser back key (Windows 2000 or later).
            BrowserBack = 166,
            // The browser forward key (Windows 2000 or later).
            BrowserForward = 167,
            // The browser refresh key (Windows 2000 or later).
            BrowserRefresh = 168,
            // The browser stop key (Windows 2000 or later).
            BrowserStop = 169,
            // The browser search key (Windows 2000 or later).
            BrowserSearch = 170,
            // The browser favorites key (Windows 2000 or later).
            BrowserFavorites = 171,
            // The browser home key (Windows 2000 or later).
            BrowserHome = 172,
            // The volume mute key (Windows 2000 or later).
            VolumeMute = 173,
            // The volume down key (Windows 2000 or later).
            VolumeDown = 174,
            // The volume up key (Windows 2000 or later).
            VolumeUp = 175,
            // The media next track key (Windows 2000 or later).
            MediaNextTrack = 176,
            // The media previous track key (Windows 2000 or later).
            MediaPreviousTrack = 177,
            // The media Stop key (Windows 2000 or later).
            MediaStop = 178,
            // The media play pause key (Windows 2000 or later).
            MediaPlayPause = 179,
            // The launch mail key (Windows 2000 or later).
            LaunchMail = 180,
            // The select media key (Windows 2000 or later).
            SelectMedia = 181,
            // The start application one key (Windows 2000 or later).
            LaunchApplication1 = 182,
            // The start application two key (Windows 2000 or later).
            LaunchApplication2 = 183,
            // The OEM 1 key.
            Oem1 = 186,
            // The OEM Semicolon key on a US standard keyboard (Windows 2000 or later).
            OemSemicolon = 186,
            // The OEM plus key on any country/region keyboard (Windows 2000 or later).
            Oemplus = 187,
            // The OEM comma key on any country/region keyboard (Windows 2000 or later).
            Oemcomma = 188,
            // The OEM minus key on any country/region keyboard (Windows 2000 or later).
            OemMinus = 189,
            // The OEM period key on any country/region keyboard (Windows 2000 or later).
            OemPeriod = 190,
            // The OEM question mark key on a US standard keyboard (Windows 2000 or later).
            OemQuestion = 191,
            // The OEM 2 key.
            Oem2 = 191,
            // The OEM tilde key on a US standard keyboard (Windows 2000 or later).
            Oemtilde = 192,
            // The OEM 3 key.
            Oem3 = 192,
            // The OEM 4 key.
            Oem4 = 219,
            // The OEM open bracket key on a US standard keyboard
            OemOpenBrackets = 219,
            // The OEM pipe key on a US standard keyboard
            OemPipe = 220,
            // The OEM 5 key.
            Oem5 = 220,
            // The OEM 6 key.
            Oem6 = 221,
            // The OEM close bracket key on a US standard keyboard
            OemCloseBrackets = 221,
            // The OEM 7 key.
            Oem7 = 222,
            // The OEM singled/double quote key on a US standard keyboard
            OemQuotes = 222,
            // The OEM 8 key.
            Oem8 = 223,
            // The OEM 102 key.
            Oem102 = 226,
            // The OEM angle bracket or backslash key on the RT 102 key keyboard.
            OemBackslash = 226,
            // The PROCESS KEY key.
            ProcessKey = 229,
            // Used to pass Unicode characters as if they were keystrokes. The Packet key
            // value is the low word of a 32-bit virtual-key value used for non-keyboard
            // input methods.
            Packet = 231,
            // The ATTN key.
            Attn = 246,
            // The CRSEL key.
            Crsel = 247,
            // The EXSEL key.
            Exsel = 248,
            // The ERASE EOF key.
            EraseEof = 249,
            // The PLAY key.
            Play = 250,
            // The ZOOM key.
            Zoom = 251,
            // A constant reserved for future use.
            NoName = 252,
            // The PA1 key.
            Pa1 = 253,
            // The CLEAR key.
            OemClear = VK_OEM_CLEAR, //254,
            // The bitmask to extract a key code from a key value.
            KeyCode = 0xFFFF,
            // The SHIFT modifier key.
            Shift = 0x10000,
            // The CTRL modifier key.
            Control = 0x20000,
            // The ALT modifier key.
            Alt = 0x40000,

            // The bitmask to extract modifiers from a key value.
            Modifiers = -65536// 0xFFFF0000,
        };
        DEFINE_ENUM_FLAG_OPERATORS(Keys)

    };
};

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
Architect Sea Surveillance AS
Norway Norway
Chief Architect - Sea Surveillance AS.

Specializing in integrated operations and high performance computing solutions.

I’ve been fooling around with computers since the early eighties, I’ve even done work on CP/M and MP/M.

Wrote my first “real” program on a BBC micro model B based on a series in a magazine at that time. It was fun and I got hooked on this thing called programming ...

A few Highlights:

  • High performance application server development
  • Model Driven Architecture and Code generators
  • Real-Time Distributed Solutions
  • C, C++, C#, Java, TSQL, PL/SQL, Delphi, ActionScript, Perl, Rexx
  • Microsoft SQL Server, Oracle RDBMS, IBM DB2, PostGreSQL
  • AMQP, Apache qpid, RabbitMQ, Microsoft Message Queuing, IBM WebSphereMQ, Oracle TuxidoMQ
  • Oracle WebLogic, IBM WebSphere
  • Corba, COM, DCE, WCF
  • AspenTech InfoPlus.21(IP21), OsiSoft PI


More information about what I do for a living can be found at: harlinn.com or LinkedIn

You can contact me at espen@harlinn.no

Comments and Discussions