1 #Region "Microsoft.VisualBasic::ddbb9dd4f95699b61d4328dc97447f20, Microsoft.VisualBasic.Core\ApplicationServices\Tools\Win32\Win32API.vb"
2
3     ' Author:
4     
5     '       asuka (amethyst.asuka@gcmodeller.org)
6     '       xie (genetics@smrucc.org)
7     '       xieguigang (xie.guigang@live.com)
8     
9     ' Copyright (c) 2018 GPL3 Licensed
10     
11     
12     ' GNU GENERAL PUBLIC LICENSE (GPL3)
13     
14     
15     ' This program is free software: you can redistribute it and/or modify
16     ' it under the terms of the GNU General Public License as published by
17     ' the Free Software Foundation, either version 3 of the License, or
18     ' (at your option) any later version.
19     
20     ' This program is distributed in the hope that it will be useful,
21     ' but WITHOUT ANY WARRANTY; without even the implied warranty of
22     ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23     ' GNU General Public License for more details.
24     
25     ' You should have received a copy of the GNU General Public License
26     ' along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
29
30     ' /********************************************************************************/
31
32     ' Summaries:
33
34     '     Structure RECT
35     
36     '         FunctionToString
37     
38     '     Structure C_BITMAP
39     
40     '         FunctionToString
41     
42     '     Module Win32API
43     
44     
45     
46     
47     ' /********************************************************************************/
48
49 #End Region
50
51 Imports System.Drawing
52 Imports Microsoft.VisualBasic.Serialization
53 Imports Microsoft.VisualBasic.Serialization.JSON
54
55 Namespace Win32
56
57     Public Structure RECT
58         Dim Left As Integer
59         Dim ToAs Integer
60         Dim right As Integer
61         Dim bottom As Integer
62
63         Public Overrides Function ToString() As String
64             Return Me.GetJson
65         End Function
66
67         Public Shared Narrowing Operator CType(obj As RECT) As Rectangle
68             Dim pt As New Point(obj.Left, obj.Top)
69             Dim sz As New Size(obj.right - obj.Left, obj.bottom - obj.Top)
70             Return New Rectangle(pt, sz)
71         End Operator
72
73         Public Shared Narrowing Operator CType(obj As RECT) As RectangleF
74             Dim pt As New PointF(obj.Left, obj.Top)
75             Dim sz As New SizeF(obj.right - obj.Left, obj.bottom - obj.Top)
76             Return New RectangleF(pt, sz)
77         End Operator
78     End Structure
79
80     Public Structure C_BITMAP '14 bytes
81         Dim bmType As Integer
82         Dim bmWidth As Integer
83         Dim bmHeight As Integer
84         Dim bmWidthBytes As Integer
85         Dim bmPlanes As Integer
86         Dim bmBitsPixel As Integer
87         Dim bmBits As Integer
88
89         Public Overrides Function ToString() As String
90             Return Me.GetJson
91         End Function
92     End Structure
93
94     Public Module Win32API
95
96         ' 通用
97         Declare Function SendMessage Lib "user32" Alias "SendMessageA" (hwnd As Integer, wMsg As Integer, wParam As Integer, lParam As ObjectAs Integer
98
99         Public Const WM_GETFONT = &H31
100         '
101         Declare Function SetCapture Lib "user32" (hwnd As IntegerAs Integer
102         Declare Function ReleaseCapture Lib "user32" () As Integer
103         '
104         Declare Function GetWindowRect Lib "user32" (hwnd As Integer, lpRect As RECT) As Integer
105         Declare Function GetCursorPos Lib "user32" (lpPoint As Point) As Integer
106         Declare Function SetCursorPos Lib "user32" (x As Integer, y As IntegerAs Integer
107         '
108
109         ' 模块: modRunFile
110         '
111         Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (lpBuffer As String, nSize As IntegerAs Integer
112         Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (lpBuffer As String, nSize As IntegerAs Integer
113         Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (hwnd As Integer, lpOperation As String, lpFile As String, lpParameters As String, lpDirectory As String, nShowCmd As IntegerAs Integer
114         '
115
116         ' 模块: modDrawEdge
117         Declare Function DrawEdge Lib "user32" (hdc As Integer, qrc As RECT, edge As Integer, grfFlags As IntegerAs Boolean
118
119         Public Const BDR_RAISEDOUTER = &H1
120         Public Const BDR_SUNKENOUTER = &H2
121         Public Const BDR_RAISEDINNER = &H4
122         Public Const BDR_SUNKENINNER = &H8
123
124         Public Const BDR_OUTER = &H3
125         Public Const BDR_INNER = &HC
126         Public Const BDR_RAISED = &H5
127         Public Const BDR_SUNKEN = &HA
128
129         Public Const EDGE_RAISED = (BDR_RAISEDOUTER Or BDR_RAISEDINNER)
130         Public Const EDGE_SUNKEN = (BDR_SUNKENOUTER Or BDR_SUNKENINNER)
131         Public Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
132         Public Const EDGE_BUMP = (BDR_RAISEDOUTER Or BDR_SUNKENINNER)
133
134         Public Const BF_LEFT = &H1
135         Public Const BF_TOP = &H2
136         Public Const BF_RIGHT = &H4
137         Public Const BF_BOTTOM = &H8
138
139         Public Const BF_TOPLEFT = (BF_TOP Or BF_LEFT)
140         Public Const BF_TOPRIGHT = (BF_TOP Or BF_RIGHT)
141         Public Const BF_BOTTOMLEFT = (BF_BOTTOM Or BF_LEFT)
142         Public Const BF_BOTTOMRIGHT = (BF_BOTTOM Or BF_RIGHT)
143         Public Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
144
145         Public Const BF_DIAGONAL = &H10
146         Public Const BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL Or BF_TOP Or BF_RIGHT)
147         Public Const BF_DIAGONAL_ENDTOPLEFT = (BF_DIAGONAL Or BF_TOP Or BF_LEFT)
148         Public Const BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL Or BF_BOTTOM Or BF_LEFT)
149         Public Const BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL Or BF_BOTTOM Or BF_RIGHT)
150
151         Public Const BF_MIDDLE = &H800
152         Public Const BF_SOFT = &H1000
153         Public Const BF_ADJUST = &H2000
154         Public Const BF_FLAT = &H4000
155         Public Const BF_MONO = &H8000
156         '
157
158         ' 模块: modDrawText
159         '
160         Declare Function DrawText Lib "user32" Alias "DrawTextA" (hdc As Integer, lpStr As String, nCount As Integer, lpRect As RECT, wFormat As IntegerAs Integer
161         Declare Function SetTextColor Lib "gdi32" (hdc As Integer, crColor As IntegerAs Integer
162         Declare Function OffsetRect Lib "user32" (lpRect As RECT, x As Integer, y As IntegerAs Integer
163         Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (lpString As StringAs Integer
164         Declare Function SetBkMode Lib "gdi32" (hdc As Integer, nBkMode As IntegerAs Integer
165
166         Public Const DT_TOP = &H0
167         Public Const DT_LEFT = &H0
168         Public Const DT_CENTER = &H1
169         Public Const DT_RIGHT = &H2
170         Public Const DT_VCENTER = &H4
171         Public Const DT_BOTTOM = &H8
172         Public Const DT_WORDBREAK = &H10
173         Public Const DT_SINGLELINE = &H20
174         Public Const DT_EXPANDTABS = &H40
175         Public Const DT_TABSTOP = &H80
176         Public Const DT_NOCLIP = &H100
177         Public Const DT_EXTERNALLEADING = &H200
178         Public Const DT_CALCRECT = &H400
179         Public Const DT_NOPREFIX = &H800
180         Public Const DT_INTERNAL = &H1000
181
182         Public Const OPAQUE = 2
183         Public Const TRANSPARENT = 1
184         '
185
186         ' 模块: modDrawBitmap
187         '
188         Declare Function GetPixel Lib "gdi32" (hdc As Integer, x As Integer, y As IntegerAs Integer
189         Declare Function SetPixelV Lib "gdi32" (hdc As Integer, x As Integer, y As Integer, crColor As IntegerAs Integer
190         '
191         Declare Function GetDC Lib "user32" (hwnd As IntegerAs Integer
192         Declare Function CreateCompatibleDC Lib "gdi32" (hdc As IntegerAs Integer
193         Declare Function DeleteDC Lib "gdi32" (hdc As IntegerAs Integer
194         Declare Function ReleaseDC Lib "user32" (hwnd As Integer, hdc As IntegerAs Integer
195         Declare Function SaveDC Lib "gdi32" (hdc As IntegerAs Integer
196         Declare Function RestoreDC Lib "gdi32" (hdc As Integer, nSavedDC As IntegerAs Integer
197         '
198         Declare Function CreateBitmap Lib "gdi32" (nWidth As Integer, nHeight As Integer, nPlanes As Integer, nBitCount As Integer, lpBits As ObjectAs Integer
199         Declare Function CreateCompatibleBitmap Lib "gdi32" (hdc As Integer, nWidth As Integer, nHeight As IntegerAs Integer
200         Declare Function CreateBitmapIndirect Lib "gdi32" (lpBitmap As C_BITMAP) As Integer
201         '
202         Declare Function GetObjectA Lib "gdi32" Alias "GetObjectA" (hObject As Integer, nCount As Integer, lpObject As ObjectAs Integer
203         Declare Function SelectObject Lib "gdi32" (hdc As Integer, hObject As IntegerAs Integer
204         Declare Function DeleteObject Lib "gdi32" (hObject As IntegerAs Integer
205         '
206         Declare Function GetMapMode Lib "gdi32" (hdc As IntegerAs Integer
207         Declare Function SetMapMode Lib "gdi32" (hdc As Integer, nMapMode As IntegerAs Integer
208         '
209         Declare Function SetBkColor Lib "gdi32" (hdc As Integer, crColor As IntegerAs Integer
210         '
211         Declare Function BitBlt Lib "gdi32" (hDestDC As Integer, x As Integer, y As Integer, nWidth As Integer, nHeight As Integer, hSrcDC As Integer, xSrc As Integer, ySrc As Integer, dwRop As IntegerAs Integer
212         Declare Function StretchBlt Lib "gdi32" (hdc As Integer, x As Integer, y As Integer, nWidth As Integer, nHeight As Integer, hSrcDC As Integer, xSrc As Integer, ySrc As Integer, nSrcWidth As Integer, nSrcHeight As Integer, dwRop As IntegerAs Integer
213
214         Public Const BLACKNESS = &H42           ' (DWORD) dest = BLACK
215         Public Const DSTINVERT = &H550009       ' (DWORD) dest = (NOT dest)
216         Public Const MERGECOPY = &HC000CA       ' (DWORD) dest = (source AND pattern)
217         Public Const MERGEPAINT = &HBB0226      ' (DWORD) dest = (NOT source) OR dest
218         Public Const NOTSRCCOPY = &H330008      ' (DWORD) dest = (NOT source)
219         Public Const NOTSRCERASE = &H1100A6     ' (DWORD) dest = (NOT src) AND (NOT dest)
220         Public Const PATCOPY = &HF00021         ' (DWORD) dest = pattern
221         Public Const PATINVERT = &H5A0049       ' (DWORD) dest = pattern XOR dest
222         Public Const PATPAINT = &HFB0A09        ' (DWORD) dest = DPSnoo
223         Public Const SRCAND = &H8800C6          ' (DWORD) dest = source AND dest
224         Public Const SRCCOPY = &HCC0020         ' (DWORD) dest = source
225         Public Const SRCERASE = &H440328        ' (DWORD) dest = source AND (NOT dest )
226         Public Const SRCINVERT = &H660046       ' (DWORD) dest = source XOR dest
227         Public Const SRCPAINT = &HEE0086        ' (DWORD) dest = source OR dest
228         Public Const WHITENESS = &HFF0062       ' (DWORD) dest = WHITE
229         '
230         Declare Function CreateSolidBrush Lib "gdi32" (crColor As IntegerAs Integer
231         Declare Function CreatePatternBrush Lib "gdi32" (hBitmap As IntegerAs Integer
232         Declare Function CreatePen Lib "gdi32" (nPenStyle As Integer, nWidth As Integer, crColor As IntegerAs Integer
233
234         Public Const PS_SOLID = 0
235         Public Const PS_DASH = 1                    '  -------
236         Public Const PS_DOT = 2                     '  .......
237         Public Const PS_DASHDOT = 3                 '  _._._._
238         Public Const PS_DASHDOTDOT = 4              '  _.._.._
239         Public Const PS_NULL = 5
240         Public Const PS_INSIDEFRAME = 6
241         '
242         Declare Function FillRect Lib "user32" (hdc As Integer, lpRect As RECT, hBrush As IntegerAs Integer
243         '
244         Declare Function DrawState Lib "user32" Alias "DrawStateA" (hdc As Integer, hBrush As Integer, lpDrawStateProc As Integer, lParam As Integer, wParam As Integer, n1 As Integer, n2 As Integer, n3 As Integer, n4 As Integer, un As IntegerAs Integer
245
246         Public Const DSS_DISABLED = &H20
247         Public Const DSS_MONO = &H80
248         Public Const DSS_NORMAL = &H0
249         Public Const DSS_RIGHT = &H8000
250         Public Const DSS_UNION = &H10
251         Public Const DST_BITMAP = &H4
252         Public Const DST_COMPLEX = &H0
253         Public Const DST_ICON = &H3
254         Public Const DST_PREFIXTEXT = &H2
255         Public Const DST_TEXT = &H1
256         '
257         Declare Function Polygon Lib "gdi32" (hdc As Integer, lpPoint As Point, nCount As IntegerAs Integer
258         '
259         Declare Function GetWindowDC Lib "user32" (hwnd As IntegerAs Integer
260         Declare Function IntersectRect Lib "user32" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Integer
261         Declare Function SubtractRect Lib "user32" (lprcDst As RECT, lprcSrc1 As RECT, lprcSrc2 As RECT) As Integer
262         Declare Function UnionRect Lib "user32" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Integer
263         Declare Function IsRectEmpty Lib "user32" (lpRect As RECT) As Integer
264         Declare Function SetRect Lib "user32" (lpRect As RECT, X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As IntegerAs Integer
265         Declare Function Rectangle Lib "gdi32" (hdc As Integer, X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As IntegerAs Integer
266         Declare Function EqualRect Lib "user32" (lpRect1 As RECT, lpRect2 As RECT) As Integer
267     End Module
268 End Namespace