//--------------------------------------------------------------------------- #include "ComboBoxComponent.h" //add by tj 2013/11/21 #define PIXEL_EXTERNAL_FRAME 1 #define PIXEL_EX2INTERNAL 1 #define PIXEL_INTERNAL_FARME 1 #define PIXEL_INTERNAL_BOUND 1 #define PIXEL_INTERNAL_LINE 6 //add by tj 2013/12/10 #define TIME_DELAY 200 #define TIME_NOTIFY 100 #define THUMB_BORDER 7 #define THUMB_MINSIZE (THUMB_BORDER * 2) #define STATE_NORMAL 0 #define STATE_HIGHLIGHT 1 #define STATE_PUSH 2 const static char SB_LineUp[] = { 0x42, 0x4D, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x24, 0x21, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x28, 0x24, 0x21, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x2C, 0x27, 0x24, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x2C, 0x27, 0x24, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x45, 0x3E, 0x3A, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x45, 0x3E, 0x3A, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x3D, 0x38, 0x34, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x3D, 0x38, 0x34, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x41, 0x3B, 0x36, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x41, 0x3B, 0x36, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x74, 0x6B, 0x63, 0x32, 0x2D, 0x2A, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x32, 0x2D, 0x2A, 0x74, 0x6B, 0x63, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x5C, 0x55, 0x4E, 0x32, 0x2D, 0x2A, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x32, 0x2D, 0x2A, 0x5C, 0x55, 0x4E, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x32, 0x2D, 0x2A, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x32, 0x2D, 0x2A, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x53, 0x4C, 0x46, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x53, 0x4C, 0x46, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x47, 0x41, 0x3C, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x47, 0x41, 0x3C, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x45, 0x40, 0x3A, 0x26, 0x21, 0x1F, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x25, 0x21, 0x1F, 0x45, 0x40, 0x3A, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x7E, 0x74, 0x6B, 0x37, 0x31, 0x2E, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x36, 0x31, 0x2D, 0x7E, 0x74, 0x6B, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x62, 0x5A, 0x54, 0x35, 0x30, 0x2C, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x34, 0x2F, 0x2C, 0x62, 0x5A, 0x54, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x37, 0x32, 0x2E, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x37, 0x32, 0x2D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x5E, 0x56, 0x4F, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x5D, 0x55, 0x4F, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x4E, 0x47, 0x42, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x4D, 0x46, 0x41, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x47, 0x41, 0x3B, 0x28, 0x24, 0x21, 0x28, 0x24, 0x21, 0x47, 0x41, 0x3B, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x82, 0x77, 0x6E, 0x3D, 0x37, 0x33, 0x3D, 0x37, 0x33, 0x82, 0x77, 0x6E, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x65, 0x5D, 0x56, 0x38, 0x33, 0x2F, 0x38, 0x33, 0x2F, 0x65, 0x5D, 0x56, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x3D, 0x38, 0x33, 0x3D, 0x38, 0x33, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x6C, 0x62, 0x5B, 0x6C, 0x62, 0x5B, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x56, 0x4F, 0x49, 0x56, 0x4F, 0x49, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x24, 0x21, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x28, 0x24, 0x21, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00}; const static char SB_LineDown[] = { 0x42, 0x4D, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x24, 0x21, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x28, 0x24, 0x21, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x3F, 0x3A, 0x35, 0x3F, 0x3A, 0x35, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x70, 0x67, 0x5F, 0x70, 0x67, 0x5F, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x5A, 0x52, 0x4C, 0x5A, 0x52, 0x4C, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x2A, 0x26, 0x23, 0x2A, 0x26, 0x23, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x83, 0x78, 0x6F, 0x41, 0x3A, 0x36, 0x41, 0x3A, 0x36, 0x83, 0x78, 0x6F, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x65, 0x5D, 0x56, 0x3B, 0x35, 0x32, 0x3B, 0x35, 0x32, 0x65, 0x5D, 0x56, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x39, 0x34, 0x2F, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x39, 0x34, 0x2F, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x62, 0x59, 0x53, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x62, 0x59, 0x53, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x50, 0x49, 0x44, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x50, 0x49, 0x44, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x46, 0x40, 0x3A, 0x26, 0x21, 0x1F, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x26, 0x21, 0x1F, 0x45, 0x40, 0x3A, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x7F, 0x74, 0x6C, 0x37, 0x31, 0x2E, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x37, 0x31, 0x2E, 0x7E, 0x74, 0x6B, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x63, 0x5B, 0x54, 0x35, 0x30, 0x2C, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x35, 0x30, 0x2C, 0x62, 0x5A, 0x54, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x34, 0x2F, 0x2C, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x34, 0x2F, 0x2B, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x58, 0x50, 0x4A, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x57, 0x4F, 0x4A, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x4A, 0x44, 0x3F, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x49, 0x43, 0x3E, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x43, 0x3D, 0x38, 0x24, 0x20, 0x1E, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x24, 0x20, 0x1E, 0x43, 0x3D, 0x38, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x78, 0x6E, 0x66, 0x33, 0x2E, 0x2B, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x33, 0x2E, 0x2B, 0x78, 0x6E, 0x66, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x5F, 0x57, 0x51, 0x32, 0x2D, 0x2A, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x32, 0x2D, 0x2A, 0x5F, 0x57, 0x51, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x2E, 0x29, 0x26, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x2E, 0x29, 0x26, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x49, 0x43, 0x3E, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x49, 0x43, 0x3E, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x41, 0x3B, 0x37, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x31, 0x2C, 0x29, 0x41, 0x3B, 0x37, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1F, 0x1D, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x48, 0x42, 0x3C, 0x23, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x84, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x66, 0x5E, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x24, 0x21, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x23, 0x1F, 0x1D, 0x28, 0x24, 0x21, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00}; static const COLORREF RGB_EXTERNAL_FRAME = RGB(29,31,35), RGB_EXTERNAL_NOR = RGB(60,66,72), RGB_EXTERNAL_HIG = RGB(74,80,88), RGB_INTERNAL_NOR = RGB(39,42,47), //272a2f RGB_INTERNAL_HIG = RGB(74,80,88), //4a5058 RGB_INTERNAL_PUSH = RGB(50,54,60), //32363c RGB_INTERNAL_LINE_NOR = RGB(25,27,30), //191b1e RGB_INTERNAL_LINE_HIG = RGB(58,63,69), //3a3f45 RGB_INTERNAL_LINE_PUSH = RGB(38,41,45), //26292d RGB_INTERNAL_LINE_NOR_TRANS[6] ={ RGB(44,47,53), //2c2f35 RGB(47,51,57), RGB(52,55,62), RGB(56,59,67), RGB(57,59,69), RGB(59,61,71) }, RGB_INTERNAL_LINE_HIG_TRANS[6] ={ RGB(79,86,94),//4f565e RGB(83,90,99), RGB(87,94,104), RGB(91,99,109), RGB(92,100,111), RGB(94,104,115), }, RGB_INTERNAL_LINE_PUSH_TRANS[6] ={ RGB(55,59,66), //373b42 RGB(60,65,72), RGB(64,69,77), RGB(69,75,83), RGB(70,77,86), RGB(72,79,88) }, RGB_INTERNAL_FRAME_NOR = RGB(34,36,41), RGB_INTERNAL_ROUND_BKG_N_NOR = RGB(41,44,49), RGB_INTERNAL_ROUND_BKG_N_HIG = RGB(51,55,61), RGB_INTERNAL_ROUND_BKG_H_NOR = RGB(43,46,52), RGB_INTERNAL_ROUND_BKG_H_HIG = RGB(56,61,67); //--------------------------------------------------------------------------- __fastcall TDropListScrollBar::TDropListScrollBar(TComponent* AOwner) : TScrollBar(AOwner) { ParentCtl3D = false; //add by tj 2013/11/14 SetParentComponent(AOwner); TMemoryStream *SBLineUpStream = new TMemoryStream(); TMemoryStream *SBLineDownStream = new TMemoryStream(); SBLineUpStream->Position = 0; SBLineUpStream->WriteBuffer(SB_LineUp, 1848); SBLineUpStream->Position = 0; SBLineDownStream->Position = 0; SBLineDownStream->WriteBuffer(SB_LineDown, 1848); SBLineDownStream->Position = 0; u_pPicLineUp = new TBitmap(); u_pPicLineUp->LoadFromStream(SBLineUpStream); u_pPicLineDown = new TBitmap(); u_pPicLineDown->LoadFromStream(SBLineDownStream); delete SBLineUpStream, SBLineDownStream; Kind = sbVertical; Width = u_pPicLineUp->Height;//add by tj 2013/11/19 DoubleBuffered = TRUE; m_nThumbHeight = 0; m_nThumbTop = Width; m_nPreThumbTop = Width; // m_nTileHeight = 18; //add by tj 2013/11/14 m_nTrackPos = m_nMax = m_nMin = m_nPos = m_nPage = 0; m_iClicked = -1; m_iHitPrev = -1; m_bAction = m_bPause = m_bNotify = m_bDrag = m_bTrace = false; m_pCanvas = new TControlCanvas(); ((TControlCanvas*)m_pCanvas)->Control = this; Ctl3D = false; //鼠标长期按下的计时器 m_pTimer = new TTimer(this); m_pTimer->Enabled = false; m_pTimer->OnTimer = TimerProc; OnMouseLeave = CMMouseLeave; } //--------------------------------------------------------------------------- __fastcall TDropListScrollBar::~TDropListScrollBar() { if( m_pCanvas ){ delete m_pCanvas; m_pCanvas = NULL; } if( m_pTimer ){ delete m_pTimer; m_pTimer = NULL; } if( u_pPicLineUp ){ delete u_pPicLineUp; } if( u_pPicLineDown ){ delete u_pPicLineDown; } } //--------------------------------------------------------------------------- int TDropListScrollBar::HitTest( int X, int Y ) { if( Y<0 ) return -1; else if( YWidth/3 ) m_pCanvas->Draw( x, y, pPic ); else{ tmpRect.Left = x; tmpRect.Right = tmpRect.Left + Width*3; tmpRect.Top = y; tmpRect.Bottom = tmpRect.top + Width; m_pCanvas->StretchDraw( tmpRect, pPic); } } //--------------------------------------------------------------------------- void TDropListScrollBar::DrawThumb( int iState, bool bEraseBk, int iPageUD ) { //add by tj 2013/11/14 TRect rectDraw; //=========================== //绘制 轨道 rectDraw.Left = PIXEL_EXTERNAL_FRAME; rectDraw.Right = Width -rectDraw.Left; //绘制 上轨道 if(iPageUD == SB_PAGEUP || iState== STATE_PUSH ){ m_pCanvas->Brush->Color = RGB_EXTERNAL_HIG; m_pCanvas->Pen->Color = RGB_EXTERNAL_HIG; }else { m_pCanvas->Brush->Color = RGB_EXTERNAL_NOR; m_pCanvas->Pen->Color = RGB_EXTERNAL_NOR; } if( bEraseBk ) //重绘轨道 rectDraw.Top = Width; else if( m_nPreThumbTopRectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); } //绘制 下轨道 if(iPageUD == SB_PAGEDOWN || iState== STATE_PUSH){ m_pCanvas->Brush->Color = RGB_EXTERNAL_HIG; m_pCanvas->Pen->Color = RGB_EXTERNAL_HIG; }else { m_pCanvas->Brush->Color = RGB_EXTERNAL_NOR; m_pCanvas->Pen->Color = RGB_EXTERNAL_NOR; } rectDraw.Top = m_nThumbTop + m_nThumbHeight; if( bEraseBk ) rectDraw.bottom = Height - Width; else if( m_nPreThumbTop>m_nThumbTop ){ //如果向上,则为当前滑动块底部的值 rectDraw.bottom = m_nThumbHeight+m_nPreThumbTop; if( rectDraw.bottom>Height-Width ) rectDraw.bottom = Height-Width; }else rectDraw.Bottom = Height - Width; //如果向下,则为当前滑动块底部的值 if( rectDraw.Height()>0 ){ m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); } //=========================== //绘制 滑块 if( m_nThumbHeight>0 ){ //=========================== //绘制 滑块左右区域 if(iState==STATE_NORMAL || iState == STATE_HIGHLIGHT){ m_pCanvas->Brush->Color = RGB_EXTERNAL_NOR; m_pCanvas->Pen->Color = RGB_EXTERNAL_NOR; }else if(iState== STATE_PUSH ){ m_pCanvas->Brush->Color = RGB_EXTERNAL_HIG; m_pCanvas->Pen->Color = RGB_EXTERNAL_HIG; } rectDraw.Top = m_nThumbTop; rectDraw.Bottom = m_nThumbTop + m_nThumbHeight; //左区域 rectDraw.Left = PIXEL_EXTERNAL_FRAME; rectDraw.Right = rectDraw.Left+PIXEL_EX2INTERNAL; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); //右区域 rectDraw.Left = Width - PIXEL_EXTERNAL_FRAME-PIXEL_EX2INTERNAL; rectDraw.Right = Width - PIXEL_EXTERNAL_FRAME; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); //=========================== //绘制 滑块矩形区域 if(iState == STATE_NORMAL){ m_pCanvas->Brush->Color = RGB_INTERNAL_NOR; m_pCanvas->Pen->Color = RGB_INTERNAL_NOR; }else if(iState == STATE_HIGHLIGHT){ m_pCanvas->Brush->Color = RGB_INTERNAL_HIG; m_pCanvas->Pen->Color = RGB_INTERNAL_HIG; }else if(iState == STATE_PUSH){ m_pCanvas->Brush->Color = RGB_INTERNAL_PUSH; m_pCanvas->Pen->Color = RGB_INTERNAL_PUSH; } rectDraw.left = PIXEL_EXTERNAL_FRAME+PIXEL_EX2INTERNAL+PIXEL_INTERNAL_FARME; rectDraw.right = Width-rectDraw.left; rectDraw.Top = m_nThumbTop + PIXEL_INTERNAL_BOUND; rectDraw.Bottom = m_nThumbTop + m_nThumbHeight - PIXEL_INTERNAL_BOUND; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); //add by tj 2013/12/10 //绘制 滑块矩形区域 横线 //=========================== //绘制 滑块矩形区域 COLORREF colLine, *colLineTrans, *colLineLight; if(iState == STATE_NORMAL){ colLine = RGB_INTERNAL_LINE_NOR; colLineTrans = (COLORREF *)RGB_INTERNAL_LINE_NOR_TRANS; }else if(iState == STATE_HIGHLIGHT){ colLine = RGB_INTERNAL_LINE_HIG; colLineTrans = (COLORREF *)RGB_INTERNAL_LINE_HIG_TRANS; }else if(iState == STATE_PUSH){ colLine = RGB_INTERNAL_LINE_PUSH; colLineTrans = (COLORREF *)RGB_INTERNAL_LINE_PUSH_TRANS; } int X,Y,iPixlX,iPixlY; iPixlY = Y = m_nThumbTop + m_nThumbHeight/2 - 3; iPixlX = X = rectDraw.left + (Width - 2*rectDraw.left - PIXEL_INTERNAL_LINE)/2; for(int i=0; i<3; i++){ iPixlY = Y; iPixlX = X; iPixlY += 1; for(int j=0; j<6; j++){ m_pCanvas->Pixels[iPixlX][iPixlY] = colLineTrans[j]; iPixlX += 1; } iPixlX = X; iPixlY = Y; m_pCanvas->Pen->Color = colLine; m_pCanvas->MoveTo(iPixlX,iPixlY); iPixlX = Width - iPixlX; m_pCanvas->LineTo(iPixlX,iPixlY); Y += 3; } //=========================== //绘制 滑块边框 m_pCanvas->Brush->Color = RGB_INTERNAL_FRAME_NOR; m_pCanvas->Pen->Color = RGB_INTERNAL_FRAME_NOR; //左边框 rectDraw.left = PIXEL_EXTERNAL_FRAME + PIXEL_EX2INTERNAL; rectDraw.right = PIXEL_EXTERNAL_FRAME + PIXEL_EX2INTERNAL + PIXEL_INTERNAL_FARME; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); //右边框 rectDraw.left = Width - (PIXEL_EXTERNAL_FRAME+PIXEL_EX2INTERNAL+PIXEL_INTERNAL_FARME); rectDraw.right = Width - (PIXEL_EXTERNAL_FRAME+PIXEL_EX2INTERNAL); m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); //上边框 rectDraw.left = PIXEL_EXTERNAL_FRAME + PIXEL_EX2INTERNAL + PIXEL_INTERNAL_FARME; rectDraw.right = Width - rectDraw.left; rectDraw.Top = m_nThumbTop; rectDraw.Bottom = m_nThumbTop + PIXEL_INTERNAL_BOUND; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); //下边框 rectDraw.Top = m_nThumbTop + m_nThumbHeight-PIXEL_INTERNAL_BOUND; rectDraw.Bottom = m_nThumbTop + m_nThumbHeight; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); //=========================== //绘制 滑块角 if(iState == STATE_NORMAL){ m_pCanvas->Pen->Color = RGB_INTERNAL_ROUND_BKG_N_NOR; }else if(iState == STATE_HIGHLIGHT ){ m_pCanvas->Pen->Color = RGB_INTERNAL_ROUND_BKG_N_HIG; }else if( iState == STATE_PUSH){ m_pCanvas->Pen->Color = RGB_INTERNAL_ROUND_BKG_H_HIG; } //左上角 rectDraw.left = PIXEL_EXTERNAL_FRAME + PIXEL_EX2INTERNAL; rectDraw.Top = m_nThumbTop; m_pCanvas->Pixels[rectDraw.left][rectDraw.top] = m_pCanvas->Pen->Color; //左下角 rectDraw.Top = m_nThumbTop + m_nThumbHeight - PIXEL_INTERNAL_BOUND; m_pCanvas->Pixels[rectDraw.left][rectDraw.top] = m_pCanvas->Pen->Color; //右上角 rectDraw.left = Width - (PIXEL_EXTERNAL_FRAME+PIXEL_EX2INTERNAL+PIXEL_INTERNAL_BOUND); rectDraw.Top = m_nThumbTop; m_pCanvas->Pixels[rectDraw.left][rectDraw.top] = m_pCanvas->Pen->Color; //右下角 rectDraw.Top = m_nThumbTop + m_nThumbHeight - PIXEL_INTERNAL_BOUND; m_pCanvas->Pixels[rectDraw.left][rectDraw.top] = m_pCanvas->Pen->Color; } /* TBitmap *pBmp = NULL; rectDraw.Left = 0; rectDraw.Right = rectDraw.Left + Width; // 需要拉伸 if( Width!=u_pPicPageUpTile->Width ){ pBmp = new TBitmap(); pBmp->Width = Width; pBmp->Height = m_nTileHeight; tmpRect.Left = 0; tmpRect.Top = 0; tmpRect.Right = Width; tmpRect.Bottom = m_nTileHeight; pBmp->Canvas->StretchDraw( tmpRect, u_pPicPageUpTile ); } // 绘制上轨道 if( bEraseBk ) rectDraw.Top = Width; else if( m_nPreThumbTopBrush->Bitmap = u_pPicPageUpTile; else{ m_pCanvas->Brush->Bitmap = pBmp; } m_pCanvas->FillRect( rectDraw ); } // 绘制下轨道 rectDraw.Top = m_nThumbTop + m_nThumbHeight; if( bEraseBk ) rectDraw.bottom = Height - Width; else if( m_nPreThumbTop>m_nThumbTop ){ rectDraw.bottom = m_nThumbHeight+m_nPreThumbTop; if( rectDraw.bottom>Height-Width ){ rectDraw.bottom = Height-Width; } } else rectDraw.Bottom = rectDraw.Top; if( rectDraw.Height()>0 ){ if( !pBmp ) m_pCanvas->Brush->Bitmap = u_pPicPageDownTile; else{ tmpRect.Left = 0; tmpRect.Top = 0; tmpRect.Right = Width; tmpRect.Bottom = m_nTileHeight; pBmp->Canvas->StretchDraw( tmpRect, u_pPicPageDownTile ); m_pCanvas->Brush->Bitmap = pBmp; } m_pCanvas->FillRect( rectDraw ); } // 绘制滑块 if( m_nThumbHeight>0 ){ int x = - iState * Width, y = m_nThumbTop, hTileUp, hTileDown; if( m_nThumbHeight>=THUMB_MINSIZE*2 ){ hTileUp = (m_nThumbHeight-THUMB_MINSIZE*2+1)/2, hTileDown = m_nThumbHeight - THUMB_MINSIZE*2 - hTileUp; } else{ hTileUp = (m_nThumbHeight-THUMB_MINSIZE+1)/2, hTileDown = m_nThumbHeight - THUMB_MINSIZE - hTileUp; } rectDraw.left = x; rectDraw.right = rectDraw.left + Width*3; if( !pBmp ){ //滑块顶部圆弧 m_pCanvas->Draw( x, y, u_pPicThumbTop ); y += THUMB_BORDER; //滑块上部平铺 if( hTileUp>0 ){ for( int i=0; iHeight+1; i++ ){ m_pCanvas->Draw( x, y+u_pPicThumbTile->Height*i, u_pPicThumbTile ); } y += hTileUp; } //滑块中部条纹 if( m_nThumbHeight>=THUMB_MINSIZE*2 ){ m_pCanvas->Draw( x, y, u_pPicThumbMid ); y += THUMB_BORDER * 2; } //滑块下部平铺 if( hTileDown>0 ){ for( int i=0; iHeight+1; i++ ){ m_pCanvas->Draw( x, y+u_pPicThumbTile->Height*i, u_pPicThumbTile ); } y += hTileDown; } //滑块底部圆弧 m_pCanvas->Draw( x, y, u_pPicThumbBottom ); } } // 清除临时图画 if( pBmp ){ delete pBmp; pBmp = NULL; } */ m_nPreThumbTop = m_nThumbTop; } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::PaintWindow(HDC DC) { if( !m_pCanvas->Handle ) m_pCanvas->Handle = DC; // 绘制上箭头 DrawArrow( SB_LINEUP, STATE_NORMAL ); // 绘制滑块 DrawThumb( STATE_NORMAL, true ); // 绘制下箭头 DrawArrow( SB_LINEDOWN, STATE_NORMAL ); TRect rectDraw; //add by tj 2013/11/14 //=========================== //绘制 外面左右边框 m_pCanvas->Brush->Color = RGB_EXTERNAL_FRAME; m_pCanvas->Pen->Color = RGB_EXTERNAL_FRAME; rectDraw.Top = Width; rectDraw.Bottom = Height - Width; rectDraw.Left = 0; rectDraw.Right = rectDraw.Left + PIXEL_EXTERNAL_FRAME; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); rectDraw.Left = Width - PIXEL_EXTERNAL_FRAME; rectDraw.Right = Width; m_pCanvas->Rectangle(rectDraw.Left, rectDraw.Top, rectDraw.Right, rectDraw.Bottom); } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::WMPaint(TWMPaint &Message) { PaintHandler(Message); } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::SetPosition(int Value, bool bRedraw) { if( m_nPos!=Value ){ m_nPos = Value; CalcThumbTop(); if( bRedraw ) DrawThumb( STATE_NORMAL, false ); } } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::SetPageSize(int Value, bool bRedraw) { if( m_nPage!=Value ){ m_nPage = Value; CalcThumbHeight(); if( bRedraw ){ DrawThumb( STATE_NORMAL, true ); Invalidate(); } } } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::SetRange(int AMin, int AMax, bool bRedraw) { if( m_nMin!=AMin || m_nMax!=AMax ){ m_nMin = AMin; m_nMax = AMax; CalcThumbHeight(); if( bRedraw ){ DrawThumb( STATE_NORMAL, true ); Invalidate(); } } } //--------------------------------------------------------------------------- int __fastcall TDropListScrollBar::GetScrollPos() { return m_nPos; } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::GetScrollRange(int* nMin, int* nMax) { *nMin = m_nMin; *nMax = m_nMax; } //--------------------------------------------------------------------------- int __fastcall TDropListScrollBar::GetPageSize() { return m_nPage; } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::SBMSetScrollInfo(TMessage &Message) { /* //add by tj 2013/11/14 bool bRedraw = bool(Message.WParam) && Visible; PScrollInfo pSi = PScrollInfo(Message.LParam); if( pSi->fMask & SIF_RANGE ) SetRange( pSi->nMin, pSi->nMax, bRedraw ); if( pSi->fMask & SIF_PAGE ) SetPageSize( pSi->nPage, bRedraw ); if( pSi->fMask & SIF_POS ) SetPosition( pSi->nPos, bRedraw ); */ } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::SBMGetScrollInfo(TMessage &Message) { /* //add by tj 2013/11/14 PScrollInfo pSi = PScrollInfo(Message.LParam); if( pSi->fMask & SIF_PAGE ) pSi->nPage = m_nPage; if( pSi->fMask & SIF_POS ) pSi->nPos = m_nPos; if( pSi->fMask & SIF_TRACKPOS ) pSi->nTrackPos = m_nTrackPos; if( pSi->fMask & SIF_RANGE ){ pSi->nMin = m_nMin; pSi->nMax = m_nMax; } */ } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::WMLButtonDown(TWMMouse &Message) { SetCapture(Handle); m_bAction = true; m_pWndCtrl->SetFocus(); int iHit = HitTest( Message.XPos, Message.YPos ); if( iHit==SB_THUMBTRACK ){ m_bDrag = TRUE; m_nDragPoint = Message.YPos; m_nDragPos = m_nPos; m_nTrackPos = m_nDragPos; DrawThumb( STATE_PUSH, false ); } else{ m_iClicked = iHit; m_pWndCtrl->Perform( WM_VSCROLL, MAKELONG(m_iClicked,0), LPARAM(Handle) ); m_pTimer->Interval = TIME_DELAY; m_pTimer->Enabled = true; m_bPause = false; int nNewPos = m_nPos; if( iHit==SB_LINEUP || iHit==SB_LINEDOWN ){ DrawArrow( iHit, STATE_PUSH ); nNewPos += (iHit==SB_LINEUP) ? -1 : 1; } else if( iHit==SB_PAGEUP || iHit==SB_PAGEDOWN ){ nNewPos += (iHit==SB_PAGEUP) ? -m_nPage+1 : m_nPage-1; } int nLenInSi = m_nMax-m_nMin-m_nPage+1; if( nNewPosnLenInSi ) nNewPos = nLenInSi; if( nNewPos!=m_nPos ){ m_nPos = nNewPos; CalcThumbTop(); //add by tj 2013/11/14 DrawThumb( STATE_NORMAL, false, iHit ); } } } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::WMLButtonUp(TWMMouse &Message) { ReleaseCapture(); if( m_bDrag ){ m_bDrag = false; m_pWndCtrl->Perform(WM_VSCROLL, MAKELONG(SB_THUMBPOSITION, m_nTrackPos), LPARAM(Handle) ); if( m_nTrackPos!=m_nPos ){ m_nPos = m_nTrackPos; } m_nTrackPos = 0; CalcThumbTop(); int iHit = HitTest( Message.XPos, Message.YPos ); if( iHit==SB_THUMBTRACK ) DrawThumb( STATE_HIGHLIGHT, false ); else DrawThumb( STATE_NORMAL, false ); } else if( m_iClicked!=-1 ){ m_pTimer->Enabled = false; if( m_bNotify ){ m_bNotify = false; } if( m_iClicked==SB_LINEUP || m_iClicked==SB_LINEDOWN ) DrawArrow( m_iClicked, STATE_NORMAL ); //add by tj 2013/11/14 if( m_iClicked==SB_PAGEUP || m_iClicked==SB_PAGEDOWN ) DrawThumb( STATE_NORMAL, false); m_iClicked = -1; } m_bAction = false; } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::WMLButtonDblClk(TWMMouse &Message) { int uHit = HitTest( Message.XPos, Message.YPos ); if( uHit!=SB_THUMBTRACK ){ m_iClicked = uHit; WMLButtonDown( Message ); m_bAction = false; } } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::WMMouseMove(TWMMouse &Message) { if( ((Extctrls::TPanel*)m_pWndCtrl)->OnMouseLeave ){ ((Extctrls::TPanel*)m_pWndCtrl)->OnMouseLeave(NULL); } Commctrl::TTrackMouseEvent tme; int nDragLen, nLenInSi, nSlide, nTrackLen, nNewPos, iHit, iState; if( !m_bTrace && (Message.Keys & MK_LBUTTON) ){ tme.cbSize = sizeof(tme); tme.hwndTrack = Handle; tme.dwFlags = TME_LEAVE; tme.dwHoverTime = 1; m_bTrace = _TrackMouseEvent(&tme); } if( m_bDrag ){ nTrackLen = Height - 2 * Width - m_nThumbHeight; nLenInSi = m_nMax-m_nMin-m_nPage+1; nDragLen = Message.YPos - m_nDragPoint; if( nTrackLen==0 ) nSlide = 0; else nSlide = nDragLen * nLenInSi / nTrackLen; nNewPos = m_nDragPos + nSlide; if( nNewPosnLenInSi ) nNewPos = nLenInSi; if( nNewPos!=m_nTrackPos ){ m_nTrackPos = nNewPos; CalcThumbTop(); DrawThumb( STATE_PUSH, false ); m_pWndCtrl->Perform(WM_VSCROLL, MAKELONG(SB_THUMBTRACK, m_nTrackPos), LPARAM(Handle) ); } } else if( m_iClicked!=-1 ){ iHit = HitTest( Message.XPos, Message.YPos ); if( iHit==m_iClicked ){ m_bPause = false; iState = STATE_PUSH; //add by tj 2013/11/18 } else{ m_bPause = true; iState = STATE_NORMAL; } if( m_iClicked==SB_LINEUP || m_iClicked==SB_LINEDOWN ) DrawArrow( m_iClicked, iState ); } else{ iHit = HitTest( Message.XPos, Message.YPos ); if( iHit!=m_iHitPrev ){ if( m_iHitPrev!=-1 ){ if( m_iHitPrev==SB_THUMBTRACK ) DrawThumb( STATE_NORMAL, FALSE ); else if( m_iHitPrev==SB_LINEUP || m_iHitPrev==SB_LINEDOWN ) DrawArrow( m_iHitPrev, STATE_NORMAL ); } if( iHit!=-1 ){ if( iHit==SB_THUMBTRACK ) DrawThumb( STATE_HIGHLIGHT, FALSE ); else if( iHit==SB_LINEUP || iHit==SB_LINEDOWN ) DrawArrow( iHit, STATE_HIGHLIGHT ); } m_iHitPrev = iHit; } } } //--------------------------------------------------------------------------- /* void __fastcall TDropListScrollBar::CMMouseLeave(TMessage &Message) { if( m_iHitPrev!=-1 ){ if( m_iHitPrev==SB_THUMBTRACK ) DrawThumb( STATE_NORMAL, false ); else if( m_iHitPrev==SB_LINEUP || m_iHitPrev==SB_LINEDOWN ) DrawArrow( m_iHitPrev, STATE_NORMAL ); m_iHitPrev = -1; } } */ //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::CMMouseLeave(TObject *Sender) { if( m_iHitPrev!=-1 ){ if( m_iHitPrev==SB_THUMBTRACK ) DrawThumb( STATE_NORMAL, false ); else if( m_iHitPrev==SB_LINEUP || m_iHitPrev==SB_LINEDOWN ) DrawArrow( m_iHitPrev, STATE_NORMAL ); m_iHitPrev = -1; } } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::WMRButtonDown(TWMMouse &Message) { // DefaultHandler(&Message); //add by tj 2013/11/18 } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::WMRButtonUp(TWMMouse &Message) { // DefaultHandler(&Message); //add by tj 2013/11/18 } //--------------------------------------------------------------------------- void __fastcall TDropListScrollBar::TimerProc(TObject* Sender) { if( m_pTimer->Interval==TIME_DELAY ){ m_bNotify = true; m_pTimer->Enabled = false; m_pTimer->Interval = TIME_NOTIFY; m_pTimer->Enabled = true; } else if( m_pTimer->Interval==TIME_NOTIFY && !m_bPause ){ int nNewPos = m_nPos; //add by tj 2013/11/14 bool bPageUD = false; int iHit; switch( m_iClicked ){ case SB_LINEUP: nNewPos -= 1; if( m_nPos==m_nMin ){ m_pTimer->Enabled = false; return; } break; case SB_LINEDOWN: nNewPos += 1; if( m_nPos==m_nMax ){ m_pTimer->Enabled = false; return; } break; case SB_PAGEUP: case SB_PAGEDOWN: { TPoint pt; GetCursorPos(&pt); pt = ScreenToClient(pt); iHit = HitTest( pt.X, pt.Y ); if( iHit==SB_THUMBTRACK ){ m_pTimer->Enabled = false; return; } nNewPos += (m_iClicked==SB_PAGEUP) ? -m_nPage+1 : m_nPage-1; bPageUD = true; } break; } int nLenInSi = m_nMax-m_nMin-m_nPage+1; if( nNewPosnLenInSi ) nNewPos = nLenInSi; if( nNewPos!=m_nPos ){ m_nPos = nNewPos; CalcThumbTop(); //add by tj 2013/11/14 if(bPageUD) DrawThumb( STATE_NORMAL, false, iHit ); else DrawThumb( STATE_NORMAL, false ); } m_pWndCtrl->Perform( WM_VSCROLL, MAKELONG(m_iClicked,0), LPARAM(Handle) ); } }