mAPIs.bas
上传用户:jnjasmy
上传日期:2015-01-04
资源大小:637k
文件大小:27k
源码类别:

GDI/图象编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "mDeclares"
  2. Public Const MSM_NCACTIVATE As Long = &H86
  3. Public Enum eMsg
  4.     ALL_MESSAGES = -1&
  5.     WM_NULL = &H0&
  6.     WM_CREATE = &H1&
  7.     WM_DESTROY = &H2&
  8.     WM_MOVE = &H3&
  9.     WM_SIZE = &H5&
  10.     WM_ACTIVATE = &H6&
  11.     WM_SETFOCUS = &H7&
  12.     WM_KILLFOCUS = &H8&
  13.     WM_ENABLE = &HA&
  14.     WM_SETREDRAW = &HB&
  15.     WM_SETTEXT = &HC&
  16.     WM_GETTEXT = &HD&
  17.     WM_GETTEXTLENGTH = &HE&
  18.     WM_PAINT = &HF&
  19.     WM_CLOSE = &H10&
  20.     WM_QUERYENDSESSION = &H11&
  21.     WM_QUIT = &H12&
  22.     WM_QUERYOPEN = &H13&
  23.     WM_ERASEBKGND = &H14&
  24.     WM_SYSCOLORCHANGE = &H15&
  25.     WM_ENDSESSION = &H16&
  26.     WM_SHOWWINDOW = &H18&
  27.     WM_WININICHANGE = &H1A&
  28.     WM_SETTINGCHANGE = &H1A&
  29.     WM_DEVMODECHANGE = &H1B&
  30.     WM_ACTIVATEAPP = &H1C&
  31.     WM_FONTCHANGE = &H1D&
  32.     WM_TIMECHANGE = &H1E&
  33.     WM_CANCELMODE = &H1F&
  34.     WM_SETCURSOR = &H20&
  35.     WM_MOUSEACTIVATE = &H21&
  36.     WM_CHILDACTIVATE = &H22&
  37.     WM_QUEUESYNC = &H23&
  38.     WM_GETMINMAXINFO = &H24&
  39.     WM_PAINTICON = &H26&
  40.     WM_ICONERASEBKGND = &H27&
  41.     WM_NEXTDLGCTL = &H28&
  42.     WM_SPOOLERSTATUS = &H2A&
  43.     WM_DRAWITEM = &H2B&
  44.     WM_MEASUREITEM = &H2C&
  45.     WM_DELETEITEM = &H2D&
  46.     WM_VKEYTOITEM = &H2E&
  47.     WM_CHARTOITEM = &H2F&
  48.     WM_SETFONT = &H30&
  49.     WM_GETFONT = &H31&
  50.     WM_SETHOTKEY = &H32&
  51.     WM_GETHOTKEY = &H33&
  52.     WM_QUERYDRAGICON = &H37&
  53.     WM_COMPAREITEM = &H39&
  54.     WM_GETOBJECT = &H3D&
  55.     WM_COMPACTING = &H41&
  56.     WM_WINDOWPOSCHANGING = &H46&
  57.     WM_WINDOWPOSCHANGED = &H47&
  58.     WM_POWER = &H48&
  59.     WM_COPYDATA = &H4A&
  60.     WM_CANCELJOURNAL = &H4B&
  61.     WM_NOTIFY = &H4E&
  62.     WM_INPUTLANGCHANGEREQUEST = &H50&
  63.     WM_INPUTLANGCHANGE = &H51&
  64.     WM_TCARD = &H52&
  65.     WM_HELP = &H53&
  66.     WM_USERCHANGED = &H54&
  67.     WM_NOTIFYFORMAT = &H55&
  68.     WM_CONTEXTMENU = &H7B&
  69.     WM_STYLECHANGING = &H7C&
  70.     WM_STYLECHANGED = &H7D&
  71.     WM_DISPLAYCHANGE = &H7E&
  72.     WM_GETICON = &H7F&
  73.     WM_SETICON = &H80&
  74.     WM_NCCREATE = &H81&
  75.     WM_NCDESTROY = &H82&
  76.     WM_NCCALCSIZE = &H83&
  77.     WM_NCHITTEST = &H84&
  78.     WM_NCPAINT = &H85&
  79.     WM_NCACTIVATE = &H86&
  80.     WM_GETDLGCODE = &H87&
  81.     WM_SYNCPAINT = &H88&
  82.     WM_NCMOUSEMOVE = &HA0&
  83.     WM_NCLBUTTONDOWN = &HA1&
  84.     WM_NCLBUTTONUP = &HA2&
  85.     WM_NCLBUTTONDBLCLK = &HA3&
  86.     WM_NCRBUTTONDOWN = &HA4&
  87.     WM_NCRBUTTONUP = &HA5&
  88.     WM_NCRBUTTONDBLCLK = &HA6&
  89.     WM_NCMBUTTONDOWN = &HA7&
  90.     WM_NCMBUTTONUP = &HA8&
  91.     WM_NCMBUTTONDBLCLK = &HA9&
  92.     WM_KEYFIRST = &H100&
  93.     WM_KEYDOWN = &H100&
  94.     WM_KEYUP = &H101&
  95.     WM_CHAR = &H102&
  96.     WM_DEADCHAR = &H103&
  97.     WM_SYSKEYDOWN = &H104&
  98.     WM_SYSKEYUP = &H105&
  99.     WM_SYSCHAR = &H106&
  100.     WM_SYSDEADCHAR = &H107&
  101.     WM_KEYLAST = &H108&
  102.     WM_IME_STARTCOMPOSITION = &H10D&
  103.     WM_IME_ENDCOMPOSITION = &H10E&
  104.     WM_IME_COMPOSITION = &H10F&
  105.     WM_IME_KEYLAST = &H10F&
  106.     WM_INITDIALOG = &H110&
  107.     WM_COMMAND = &H111&
  108.     WM_SYSCOMMAND = &H112&
  109.     WM_TIMER = &H113&
  110.     WM_HSCROLL = &H114&
  111.     WM_VSCROLL = &H115&
  112.     WM_INITMENU = &H116&
  113.     WM_INITMENUPOPUP = &H117&
  114.     WM_MENUSELECT = &H11F&
  115.     WM_MENUCHAR = &H120&
  116.     WM_ENTERIDLE = &H121&
  117.     WM_MENURBUTTONUP = &H122&
  118.     WM_MENUDRAG = &H123&
  119.     WM_MENUGETOBJECT = &H124&
  120.     WM_UNINITMENUPOPUP = &H125&
  121.     WM_MENUCOMMAND = &H126&
  122.     WM_CTLCOLORMSGBOX = &H132&
  123.     WM_CTLCOLOREDIT = &H133&
  124.     WM_CTLCOLORLISTBOX = &H134&
  125.     WM_CTLCOLORBTN = &H135&
  126.     WM_CTLCOLORDLG = &H136&
  127.     WM_CTLCOLORSCROLLBAR = &H137&
  128.     WM_CTLCOLORSTATIC = &H138&
  129.     WM_MOUSEFIRST = &H200&
  130.     WM_MOUSEMOVE = &H200&
  131.     WM_LBUTTONDOWN = &H201&
  132.     WM_LBUTTONUP = &H202&
  133.     WM_LBUTTONDBLCLK = &H203&
  134.     WM_RBUTTONDOWN = &H204&
  135.     WM_RBUTTONUP = &H205&
  136.     WM_RBUTTONDBLCLK = &H206&
  137.     WM_MBUTTONDOWN = &H207&
  138.     WM_MBUTTONUP = &H208&
  139.     WM_MBUTTONDBLCLK = &H209&
  140.     WM_MOUSEWHEEL = &H20A&
  141.     WM_PARENTNOTIFY = &H210&
  142.     WM_ENTERMENULOOP = &H211&
  143.     WM_EXITMENULOOP = &H212&
  144.     WM_NEXTMENU = &H213&
  145.     WM_SIZING = &H214&
  146.     WM_CAPTURECHANGED = &H215&
  147.     WM_MOVING = &H216&
  148.     WM_DEVICECHANGE = &H219&
  149.     WM_MDICREATE = &H220&
  150.     WM_MDIDESTROY = &H221&
  151.     WM_MDIACTIVATE = &H222&
  152.     WM_MDIRESTORE = &H223&
  153.     WM_MDINEXT = &H224&
  154.     WM_MDIMAXIMIZE = &H225&
  155.     WM_MDITILE = &H226&
  156.     WM_MDICASCADE = &H227&
  157.     WM_MDIICONARRANGE = &H228&
  158.     WM_MDIGETACTIVE = &H229&
  159.     WM_MDISETMENU = &H230&
  160.     WM_ENTERSIZEMOVE = &H231&
  161.     WM_EXITSIZEMOVE = &H232&
  162.     WM_DROPFILES = &H233&
  163.     WM_MDIREFRESHMENU = &H234&
  164.     WM_IME_SETCONTEXT = &H281&
  165.     WM_IME_NOTIFY = &H282&
  166.     WM_IME_CONTROL = &H283&
  167.     WM_IME_COMPOSITIONFULL = &H284&
  168.     WM_IME_SELECT = &H285&
  169.     WM_IME_CHAR = &H286&
  170.     WM_IME_REQUEST = &H288&
  171.     WM_IME_KEYDOWN = &H290&
  172.     WM_IME_KEYUP = &H291&
  173.     WM_MOUSEHOVER = &H2A1&
  174.     WM_MOUSELEAVE = &H2A3&
  175.     WM_CUT = &H300&
  176.     WM_COPY = &H301&
  177.     WM_PASTE = &H302&
  178.     WM_CLEAR = &H303&
  179.     WM_UNDO = &H304&
  180.     WM_RENDERFORMAT = &H305&
  181.     WM_RENDERALLFORMATS = &H306&
  182.     WM_DESTROYCLIPBOARD = &H307&
  183.     WM_DRAWCLIPBOARD = &H308&
  184.     WM_PAINTCLIPBOARD = &H309&
  185.     WM_VSCROLLCLIPBOARD = &H30A&
  186.     WM_SIZECLIPBOARD = &H30B&
  187.     WM_ASKCBFORMATNAME = &H30C&
  188.     WM_CHANGECBCHAIN = &H30D&
  189.     WM_HSCROLLCLIPBOARD = &H30E&
  190.     WM_QUERYNEWPALETTE = &H30F&
  191.     WM_PALETTEISCHANGING = &H310&
  192.     WM_PALETTECHANGED = &H311&
  193.     WM_HOTKEY = &H312&
  194.     WM_PRINT = &H317&
  195.     WM_PRINTCLIENT = &H318&
  196.     WM_THEMECHANGED = &H31A&
  197.     WM_HANDHELDFIRST = &H358&
  198.     WM_HANDHELDLAST = &H35F&
  199.     WM_AFXFIRST = &H360&
  200.     WM_AFXLAST = &H37F&
  201.     WM_PENWINFIRST = &H380&
  202.     WM_PENWINLAST = &H38F&
  203.     WM_USER = &H400&
  204.     WM_APP = &H8000&
  205.     WM_UPDATEUISTATE = &H128&
  206.     WM_CHANGEUISTATE = &H127&
  207. End Enum
  208. Public Enum ESetWindowPosStyles
  209.     SWP_SHOWWINDOW = &H40
  210.     SWP_HIDEWINDOW = &H80
  211.     SWP_FRAMECHANGED = &H20
  212.     SWP_NOACTIVATE = &H10
  213.     SWP_NOCOPYBITS = &H100
  214.     SWP_NOMOVE = &H2
  215.     SWP_NOOWNERZORDER = &H200
  216.     SWP_NOREDRAW = &H8
  217.     SWP_NOREPOSITION = SWP_NOOWNERZORDER
  218.     SWP_NOSIZE = &H1
  219.     SWP_NOZORDER = &H4
  220.     SWP_DRAWFRAME = SWP_FRAMECHANGED
  221.     hwnd_notopmost = -2
  222. End Enum
  223. Public Const SC_CLOSE           As Long = &HF060
  224. Public Const SC_MAXIMIZE        As Long = &HF030&
  225. Public Const SC_MINIMIZE        As Long = &HF020&
  226. Public Const SC_RESTORE         As Long = &HF120&
  227. Public Const SC_MOVE            As Long = &HF010&
  228. Public Const HTCAPTION          As Integer = 2
  229. Public Const HTBOTTOM           As Integer = 15
  230. Public Const HTBOTTOMLEFT       As Integer = 16
  231. Public Const HTBOTTOMRIGHT      As Integer = 17
  232. Public Const HTLEFT             As Integer = 10
  233. Public Const HTRIGHT            As Integer = 11
  234. Public Const HTTOP              As Integer = 12
  235. Public Const HTTOPLEFT          As Integer = 13
  236. Public Const HTTOPRIGHT         As Integer = 14
  237. Public Const SM_CXFRAME = 32
  238. Public Const SM_CYCAPTION = 4
  239. Public Const SM_CXDLGFRAME = 7
  240. Public Const SM_CYSCREEN = 1
  241. Public Const WA_INACTIVE As Long = 0
  242. Public Const WA_ACTIVE As Long = 1
  243. Public Const WA_CLICKACTIVE As Long = 2
  244. Public Const GWL_STYLE As Long = -16
  245. Public Const GWL_EXSTYLE As Long = -20
  246. Public Const GWL_HWNDPARENT = (-8)
  247. Public Const WS_EX_LAYERED = &H80000
  248. Public Const WS_EX_TOOLWINDOW As Long = &H80&
  249. Public Const WS_EX_TRANSPARENT = &H20&
  250. Public Const WS_VISIBLE = &H10000000
  251. Public Const WS_CHILD = &H40000000
  252. Public Const SS_OWNERDRAW = &HD&
  253. Public Const WS_POPUP = &H80000000
  254. Public Const ULW_OPAQUE = &H4
  255. Public Const ULW_COLORKEY = &H1
  256. Public Const ULW_ALPHA = &H2
  257. Public Const BI_RGB As Long = 0&
  258. Public Const DIB_RGB_COLORS As Long = 0
  259. Public Const AC_SRC_ALPHA As Long = &H1
  260. Public Const AC_SRC_OVER = &H0
  261. Public Const DT_BOTTOM = &H8
  262. Public Const DT_CALCRECT = &H400
  263. Public Const DT_CENTER = &H1
  264. Public Const DT_LEFT = &H0
  265. Public Const DT_RIGHT = &H2
  266. Public Const DT_SINGLELINE = &H20
  267. Public Const DT_TOP = &H0
  268. Public Const DT_VCENTER = &H4
  269. Public Const DT_WORDBREAK = &H10
  270. Public Const DT_END_ELLIPSIS = &H8000
  271. Public Const DT_PATH_ELLIPSIS = &H4000
  272. Public Const PS_DASH = 1
  273. Public Const PS_DASHDOT = 3
  274. Public Const PS_DASHDOTDOT = 4
  275. Public Const PS_DOT = 2
  276. Public Const PS_NULL = 5
  277. Public Const PS_SOLID = 0
  278. Public Const PS_USERSTYLE = 7
  279. Public Type BLENDFUNCTION
  280.     BlendOp As Byte
  281.     BlendFlags As Byte
  282.     SourceConstantAlpha As Byte
  283.     AlphaFormat As Byte
  284. End Type
  285. Public Type RGBQUAD
  286.     rgbBlue As Byte
  287.     rgbGreen As Byte
  288.     rgbRed As Byte
  289.     rgbReserved As Byte
  290. End Type
  291. Public Type BITMAPINFOHEADER
  292.     biSize As Long
  293.     biWidth As Long
  294.     biHeight As Long
  295.     biPlanes As Integer
  296.     biBitCount As Integer
  297.     biCompression As Long
  298.     biSizeImage As Long
  299.     biXPelsPerMeter As Long
  300.     biYPelsPerMeter As Long
  301.     biClrUsed As Long
  302.     biClrImportant As Long
  303. End Type
  304. Public Type BITMAPINFO
  305.     bmiHeader As BITMAPINFOHEADER
  306.     bmiColors As RGBQUAD
  307. End Type
  308. Public Type RECT
  309.     Left                            As Long
  310.     Top                             As Long
  311.     Right                           As Long
  312.     Bottom                          As Long
  313. End Type
  314. Public Type Size
  315.     cx As Long
  316.     cy As Long
  317. End Type
  318. Public Type POINTAPI
  319.     X                               As Long
  320.     Y                               As Long
  321. End Type
  322. Public Type Msg
  323.     hWnd As Long
  324.     message As Long
  325.     wParam As Long
  326.     lParam As Long
  327.     time As Long
  328.     pt As POINTAPI
  329. End Type
  330. Public Type TPMPARAMS
  331.     cbSize As Long
  332.     rcExclude As RECT
  333. End Type
  334. Public Const TPM_CENTERALIGN = &H4&
  335. Public Const TPM_LEFTALIGN = &H0&
  336. Public Const TPM_LEFTBUTTON = &H0&
  337. Public Const TPM_RIGHTALIGN = &H8&
  338. Public Const TPM_RIGHTBUTTON = &H2&
  339. Public Const TPM_NONOTIFY = &H80&           '/* Don't send any notification msgs */
  340. Public Const TPM_RETURNCMD = &H100
  341. Public Const TPM_HORIZONTAL = &H0          '/* Horz alignment matters more */
  342. Public Const TPM_VERTICAL = &H40           '/* Vert alignment matters more */
  343.    ' Win98/2000 menu animation and menu within menu options:
  344. Public Const TPM_RECURSE = &H1&
  345. Public Const TPM_HORPOSANIMATION = &H400&
  346. Public Const TPM_HORNEGANIMATION = &H800&
  347. Public Const TPM_VERPOSANIMATION = &H1000&
  348. Public Const TPM_VERNEGANIMATION = &H2000&
  349.    ' Win2000 only:
  350. Public Const TPM_NOANIMATION = &H4000&
  351. Public Type MINMAXINFO
  352.     ptReserved                      As POINTAPI
  353.     ptMaxSize                       As POINTAPI
  354.     ptMaxPosition                   As POINTAPI
  355.     ptMinTrackSize                  As POINTAPI
  356.     ptMaxTrackSize                  As POINTAPI
  357. End Type
  358. Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal nReserved As Long, ByVal hWnd As Long, lprc As RECT) As Long
  359. Public Declare Function TrackPopupMenuByLong Lib "user32" Alias "TrackPopupMenu" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal nReserved As Long, ByVal hWnd As Long, ByVal lprc As Long) As Long
  360. Public Declare Function TrackPopupMenuEx Lib "user32" (ByVal hMenu As Long, ByVal un As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal hWnd As Long, lpTPMParams As TPMPARAMS) As Long
  361. Public Declare Function CreateCompatibleDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
  362. Public Declare Function SelectObject Lib "gdi32.dll" (ByVal hdc As Long, ByVal hObject As Long) As Long
  363. Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  364. Public Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
  365. Public Declare Function CreateDIBSection Lib "gdi32.dll" (ByVal hdc As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, ByRef lplpVoid As Any, ByVal Handle As Long, ByVal dw As Long) As Long
  366. Public Declare Function GetDIBits Lib "gdi32.dll" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  367. Public Declare Function SetDIBits Lib "gdi32.dll" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  368. Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
  369. Public Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
  370. Public Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  371. Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As Any) As Long
  372. Public Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
  373. Public Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
  374. Public Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
  375. Public Declare Function FrameRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
  376. Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  377. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  378. Public Declare Sub ReleaseCapture Lib "user32" ()
  379. Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  380. Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
  381. Public Declare Function GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
  382. Public Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
  383. Public Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  384. Public Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  385. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  386. Public Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
  387. Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
  388. Public Declare Function UpdateLayeredWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal hDCDst As Long, pptDst As Any, psize As Any, ByVal hdcSrc As Long, pptSrc As Any, ByVal crKey As Long, ByRef pblend As BLENDFUNCTION, ByVal dwFlags As Long) As Long
  389. Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
  390. Public Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
  391. Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  392. Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
  393. Public Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
  394. Public Declare Function CopyRect Lib "user32" (lpDestRect As RECT, lpSourceRect As RECT) As Long
  395. Public Declare Function OffsetRect Lib "user32" (lpRect As RECT, ByVal X As Long, ByVal Y As Long) As Long
  396. Public Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  397. Public Declare Function SetRectEmpty Lib "user32" (lpRect As RECT) As Long
  398. Public Declare Function PtInRect Lib "user32" (lpRect As RECT, X As Long, Y As Long) As Long
  399. Public Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
  400. Public Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
  401. Public Declare Function DrawTextW Lib "user32" (ByVal hdc As Long, ByVal lpStr As Long, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
  402. Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
  403. Public Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
  404. Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  405. Public Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  406. Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  407. Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
  408. Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  409. Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  410. Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
  411. Public Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
  412. '******************************************************
  413. ' GDI Plus
  414. '******************************************************
  415. Public Declare Function GdipCreateFromHDC Lib "gdiplus" (ByVal hdc As Long, graphics As Long) As GpStatus
  416. Public Declare Function GdipCreateFromHWND Lib "gdiplus" (ByVal hWnd As Long, graphics As Long) As GpStatus
  417. Public Declare Function GdipDeleteGraphics Lib "gdiplus" (ByVal graphics As Long) As GpStatus
  418. Public Declare Function GdipGetDC Lib "gdiplus" (ByVal graphics As Long, hdc As Long) As GpStatus
  419. Public Declare Function GdipReleaseDC Lib "gdiplus" (ByVal graphics As Long, ByVal hdc As Long) As GpStatus
  420. Public Declare Function GdipDrawImageRect Lib "gdiplus" (ByVal graphics As Long, ByVal Image As Long, ByVal X As Single, ByVal Y As Single, ByVal Width As Single, ByVal Height As Single) As GpStatus
  421. Public Declare Function GdipLoadImageFromFile Lib "gdiplus" (ByVal FileName As String, Image As Long) As GpStatus
  422. Public Declare Function GdipCloneImage Lib "gdiplus" (ByVal Image As Long, cloneImage As Long) As GpStatus
  423. Public Declare Function GdipGetImageWidth Lib "gdiplus" (ByVal Image As Long, Width As Long) As GpStatus
  424. Public Declare Function GdipGetImageHeight Lib "gdiplus" (ByVal Image As Long, Height As Long) As GpStatus
  425. Public Declare Function GdipCreateBitmapFromHBITMAP Lib "gdiplus" (ByVal hbm As Long, ByVal hPal As Long, BITMAP As Long) As GpStatus
  426. Public Declare Function GdipBitmapGetPixel Lib "gdiplus" (ByVal BITMAP As Long, ByVal X As Long, ByVal Y As Long, Color As Long) As GpStatus
  427. Public Declare Function GdipBitmapSetPixel Lib "gdiplus" (ByVal BITMAP As Long, ByVal X As Long, ByVal Y As Long, ByVal Color As Long) As GpStatus
  428. Public Declare Function GdipDisposeImage Lib "gdiplus" (ByVal Image As Long) As GpStatus
  429. Public Declare Function GdipCreateBitmapFromFile Lib "gdiplus" (ByVal FileName As Long, BITMAP As Long) As GpStatus
  430. Public Type GdiplusStartupInput
  431.    GdiplusVersion As Long              ' Must be 1 for GDI+ v1.0, the current version as of this writing.
  432.    DebugEventCallback As Long          ' Ignored on free builds
  433.    SuppressBackgroundThread As Long    ' FALSE unless you're prepared to call
  434.                                        ' the hook/unhook functions properly
  435.    SuppressExternalCodecs As Long      ' FALSE unless you want GDI+ only to use
  436.                                        ' its internal image codecs.
  437. End Type
  438. Public Declare Function GdiplusStartup Lib "gdiplus" (Token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As GpStatus
  439. Public Declare Sub GdiplusShutdown Lib "gdiplus" (ByVal Token As Long)
  440. Public Enum GpStatus   ' aka Status
  441.    Ok = 0
  442.    GenericError = 1
  443.    InvalidParameter = 2
  444.    OutOfMemory = 3
  445.    ObjectBusy = 4
  446.    InsufficientBuffer = 5
  447.    NotImplemented = 6
  448.    Win32Error = 7
  449.    WrongState = 8
  450.    Aborted = 9
  451.    FileNotFound = 10
  452.    ValueOverflow = 11
  453.    AccessDenied = 12
  454.    UnknownImageFormat = 13
  455.    FontFamilyNotFound = 14
  456.    FontStyleNotFound = 15
  457.    NotTrueTypeFont = 16
  458.    UnsupportedGdiplusVersion = 17
  459.    GdiplusNotInitialized = 18
  460.    PropertyNotFound = 19
  461.    PropertyNotSupported = 20
  462. End Enum
  463. Public Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor As Long, ByVal lHPalette As Long, lColorRef As Long) As Long
  464. Public Function TranslateColor(ByVal theColor As Long) As Long
  465.   Call OleTranslateColor(theColor, 0, TranslateColor)
  466. End Function
  467. Public Sub RGBToHLS( _
  468.      ByVal R As Long, ByVal G As Long, ByVal B As Long, _
  469.      H As Single, S As Single, l As Single _
  470.      )
  471.  Dim Max As Single
  472.  Dim Min As Single
  473.  Dim Delta As Single
  474.  Dim rR As Single, Rg As Single, rB As Single
  475.      rR = R / 255: Rg = G / 255: rB = B / 255
  476.  '{Given: rgb each in [0,1].
  477.  ' Desired: h in [0,360] and s in [0,1], except if s=0, then h=UNDEFINED.}
  478.          Max = Maximum(rR, Rg, rB)
  479.          Min = Minimum(rR, Rg, rB)
  480.              l = (Max + Min) / 2 '{This is the lightness}
  481.          '{Next calculate saturation}
  482.          If Max = Min Then
  483.              'begin {Acrhomatic case}
  484.              S = 0
  485.              H = 0
  486.              'end {Acrhomatic case}
  487.          Else
  488.              'begin {Chromatic case}
  489.                  '{First calculate the saturation.}
  490.              If l <= 0.5 Then
  491.                  S = (Max - Min) / (Max + Min)
  492.              Else
  493.                  S = (Max - Min) / (2 - Max - Min)
  494.              End If
  495.              '{Next calculate the hue.}
  496.              Delta = Max - Min
  497.              If rR = Max Then
  498.                      H = (Rg - rB) / Delta '{Resulting color is between yellow and magenta}
  499.              ElseIf Rg = Max Then
  500.                  H = 2 + (rB - rR) / Delta '{Resulting color is between cyan and yellow}
  501.              ElseIf rB = Max Then
  502.                  H = 4 + (rR - Rg) / Delta '{Resulting color is between magenta and cyan}
  503.              End If
  504.          'end {Chromatic Case}
  505.      End If
  506.  End Sub
  507. Public Sub HLSToRGB( _
  508.      ByVal H As Single, ByVal S As Single, ByVal l As Single, _
  509.      R As Long, G As Long, B As Long _
  510.      )
  511. Dim rR As Single, Rg As Single, rB As Single
  512. Dim Min As Single, Max As Single
  513.      If S = 0 Then
  514.      ' Achromatic case:
  515.      rR = l: Rg = l: rB = l
  516.      Else
  517.      ' Chromatic case:
  518.      ' delta = Max-Min
  519.      If l <= 0.5 Then
  520.          's = (Max - Min) / (Max + Min)
  521.          ' Get Min value:
  522.          Min = l * (1 - S)
  523.      Else
  524.          's = (Max - Min) / (2 - Max - Min)
  525.          ' Get Min value:
  526.          Min = l - S * (1 - l)
  527.      End If
  528.      ' Get the Max value:
  529.      Max = 2 * l - Min
  530.      
  531.      ' Now depending on sector we can evaluate the h,l,s:
  532.      If (H < 1) Then
  533.          rR = Max
  534.          If (H < 0) Then
  535.              Rg = Min
  536.              rB = Rg - H * (Max - Min)
  537.          Else
  538.              rB = Min
  539.              Rg = H * (Max - Min) + rB
  540.          End If
  541.      ElseIf (H < 3) Then
  542.          Rg = Max
  543.          If (H < 2) Then
  544.              rB = Min
  545.              rR = rB - (H - 2) * (Max - Min)
  546.          Else
  547.              rR = Min
  548.              rB = (H - 2) * (Max - Min) + rR
  549.          End If
  550.      Else
  551.          rB = Max
  552.          If (H < 4) Then
  553.              rR = Min
  554.              Rg = rR - (H - 4) * (Max - Min)
  555.          Else
  556.              Rg = Min
  557.              rR = (H - 4) * (Max - Min) + Rg
  558.          End If
  559.          
  560.      End If
  561.              
  562.      End If
  563.      R = rR * 255: G = Rg * 255: B = rB * 255
  564.  End Sub
  565.  Private Function Maximum(rR As Single, Rg As Single, rB As Single) As Single
  566.    If (rR > Rg) Then
  567.       If (rR > rB) Then
  568.          Maximum = rR
  569.       Else
  570.          Maximum = rB
  571.       End If
  572.    Else
  573.       If (rB > Rg) Then
  574.          Maximum = rB
  575.       Else
  576.          Maximum = Rg
  577.       End If
  578.    End If
  579. End Function
  580. Private Function Minimum(rR As Single, Rg As Single, rB As Single) As Single
  581.    If (rR < Rg) Then
  582.       If (rR < rB) Then
  583.          Minimum = rR
  584.       Else
  585.          Minimum = rB
  586.       End If
  587.    Else
  588.       If (rB < Rg) Then
  589.          Minimum = rB
  590.       Else
  591.          Minimum = Rg
  592.       End If
  593.    End If
  594. End Function
  595. Public Function BlendColor(lColor1 As Long, lColor2 As Long, Level As Byte) As Long
  596.   Dim lRed    As Long
  597.   Dim lGrn    As Long
  598.   Dim lBlu    As Long
  599.   Dim lRed2   As Long
  600.   Dim lGrn2   As Long
  601.   Dim lBlu2   As Long
  602.   Dim fRedStp As Single
  603.   Dim fGrnStp As Single
  604.   Dim fBluStp As Single
  605.   If Level = 0 Then
  606.     BlendColor = lColor1
  607.   ElseIf Level = 255 Then
  608.     BlendColor = lColor2
  609.   Else
  610.     'Extract Red, Blue and Green values from the start and end colors.
  611.     lRed = (lColor1 And &HFF&)
  612.     lGrn = (lColor1 And &HFF00&) / &H100
  613.     lBlu = (lColor1 And &HFF0000) / &H10000
  614.     lRed2 = (lColor2 And &HFF&)
  615.     lGrn2 = (lColor2 And &HFF00&) / &H100
  616.     lBlu2 = (lColor2 And &HFF0000) / &H10000
  617.     
  618.     If lRed2 >= lRed Then
  619.       fRedStp = (lRed2 - lRed) / 255
  620.     Else
  621.       fRedStp = (lRed - lRed2) / 255
  622.       fRedStp = -fRedStp
  623.     End If
  624.     If lGrn2 >= lGrn Then
  625.       fGrnStp = (lGrn2 - lGrn) / 255
  626.     Else
  627.       fGrnStp = (lGrn - lGrn2) / 255
  628.       fGrnStp = -fGrnStp
  629.     End If
  630.     If lBlu2 >= lBlu Then
  631.       fBluStp = (lBlu2 - lBlu) / 255
  632.     Else
  633.       fBluStp = (lBlu - lBlu2) / 255
  634.       fBluStp = -fBluStp
  635.     End If
  636.     BlendColor = RGB(lRed + (fRedStp * (255 - Level)), lGrn + (fGrnStp * (255 - Level)), lBlu + (fBluStp * (255 - Level)))
  637.   End If
  638. End Function
  639. Private Function HookAddress(ByVal lPtr As Long) As Long
  640.    HookAddress = lPtr
  641. End Function
  642. Public Property Get ObjectFromPtr(ByVal lPtr As Long) As Object
  643. Dim objT As Object
  644.    If Not (lPtr = 0) Then
  645.       ' Turn the pointer into an illegal, uncounted interface
  646.       CopyMemory objT, lPtr, 4
  647.       ' Do NOT hit the End button here! You will crash!
  648.       ' Assign to legal reference
  649.       Set ObjectFromPtr = objT
  650.       ' Still do NOT hit the End button here! You will still crash!
  651.       ' Destroy the illegal reference
  652.       CopyMemory objT, 0&, 4
  653.    End If
  654. End Property
  655. Public Function IsMouseOver(m_hWnd) As Boolean
  656.     Dim pt As POINTAPI
  657.     GetCursorPos pt
  658.     IsMouseOver = (WindowFromPoint(pt.X, pt.Y) = m_hWnd)
  659. End Function