go-tg-screenshot-bot

Форк
0
621 строка · 16.9 Кб
1
// Copyright 2010 The win Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4

5
// +build windows
6

7
package win
8

9
import (
10
	"syscall"
11
	"unsafe"
12

13
	"golang.org/x/sys/windows"
14
)
15

16
// TMT property ids
17
const (
18
	TMT_RESERVEDLOW  = 0
19
	TMT_RESERVEDHIGH = 7999
20

21
	TMT_DIBDATA                 = 2
22
	TMT_GLYPHDIBDATA            = 8
23
	TMT_ENUM                    = 200
24
	TMT_STRING                  = 201
25
	TMT_INT                     = 202
26
	TMT_BOOL                    = 203
27
	TMT_COLOR                   = 204
28
	TMT_MARGINS                 = 205
29
	TMT_FILENAME                = 206
30
	TMT_SIZE                    = 207
31
	TMT_POSITION                = 208
32
	TMT_RECT                    = 209
33
	TMT_FONT                    = 210
34
	TMT_INTLIST                 = 211
35
	TMT_HBITMAP                 = 212
36
	TMT_DISKSTREAM              = 213
37
	TMT_STREAM                  = 214
38
	TMT_BITMAPREF               = 215
39
	TMT_FLOAT                   = 216
40
	TMT_FLOATLIST               = 217
41
	TMT_COLORSCHEMES            = 401
42
	TMT_SIZES                   = 402
43
	TMT_CHARSET                 = 403
44
	TMT_NAME                    = 600
45
	TMT_DISPLAYNAME             = 601
46
	TMT_TOOLTIP                 = 602
47
	TMT_COMPANY                 = 603
48
	TMT_AUTHOR                  = 604
49
	TMT_COPYRIGHT               = 605
50
	TMT_URL                     = 606
51
	TMT_VERSION                 = 607
52
	TMT_DESCRIPTION             = 608
53
	TMT_FIRST_RCSTRING_NAME     = TMT_DISPLAYNAME
54
	TMT_LAST_RCSTRING_NAME      = TMT_DESCRIPTION
55
	TMT_CAPTIONFONT             = 801
56
	TMT_SMALLCAPTIONFONT        = 802
57
	TMT_MENUFONT                = 803
58
	TMT_STATUSFONT              = 804
59
	TMT_MSGBOXFONT              = 805
60
	TMT_ICONTITLEFONT           = 806
61
	TMT_HEADING1FONT            = 807
62
	TMT_HEADING2FONT            = 808
63
	TMT_BODYFONT                = 809
64
	TMT_FIRSTFONT               = TMT_CAPTIONFONT
65
	TMT_LASTFONT                = TMT_BODYFONT
66
	TMT_FLATMENUS               = 1001
67
	TMT_FIRSTBOOL               = TMT_FLATMENUS
68
	TMT_LASTBOOL                = TMT_FLATMENUS
69
	TMT_SIZINGBORDERWIDTH       = 1201
70
	TMT_SCROLLBARWIDTH          = 1202
71
	TMT_SCROLLBARHEIGHT         = 1203
72
	TMT_CAPTIONBARWIDTH         = 1204
73
	TMT_CAPTIONBARHEIGHT        = 1205
74
	TMT_SMCAPTIONBARWIDTH       = 1206
75
	TMT_SMCAPTIONBARHEIGHT      = 1207
76
	TMT_MENUBARWIDTH            = 1208
77
	TMT_MENUBARHEIGHT           = 1209
78
	TMT_PADDEDBORDERWIDTH       = 1210
79
	TMT_FIRSTSIZE               = TMT_SIZINGBORDERWIDTH
80
	TMT_LASTSIZE                = TMT_PADDEDBORDERWIDTH
81
	TMT_MINCOLORDEPTH           = 1301
82
	TMT_FIRSTINT                = TMT_MINCOLORDEPTH
83
	TMT_LASTINT                 = TMT_MINCOLORDEPTH
84
	TMT_CSSNAME                 = 1401
85
	TMT_XMLNAME                 = 1402
86
	TMT_LASTUPDATED             = 1403
87
	TMT_ALIAS                   = 1404
88
	TMT_FIRSTSTRING             = TMT_CSSNAME
89
	TMT_LASTSTRING              = TMT_ALIAS
90
	TMT_SCROLLBAR               = 1601
91
	TMT_BACKGROUND              = 1602
92
	TMT_ACTIVECAPTION           = 1603
93
	TMT_INACTIVECAPTION         = 1604
94
	TMT_MENU                    = 1605
95
	TMT_WINDOW                  = 1606
96
	TMT_WINDOWFRAME             = 1607
97
	TMT_MENUTEXT                = 1608
98
	TMT_WINDOWTEXT              = 1609
99
	TMT_CAPTIONTEXT             = 1610
100
	TMT_ACTIVEBORDER            = 1611
101
	TMT_INACTIVEBORDER          = 1612
102
	TMT_APPWORKSPACE            = 1613
103
	TMT_HIGHLIGHT               = 1614
104
	TMT_HIGHLIGHTTEXT           = 1615
105
	TMT_BTNFACE                 = 1616
106
	TMT_BTNSHADOW               = 1617
107
	TMT_GRAYTEXT                = 1618
108
	TMT_BTNTEXT                 = 1619
109
	TMT_INACTIVECAPTIONTEXT     = 1620
110
	TMT_BTNHIGHLIGHT            = 1621
111
	TMT_DKSHADOW3D              = 1622
112
	TMT_LIGHT3D                 = 1623
113
	TMT_INFOTEXT                = 1624
114
	TMT_INFOBK                  = 1625
115
	TMT_BUTTONALTERNATEFACE     = 1626
116
	TMT_HOTTRACKING             = 1627
117
	TMT_GRADIENTACTIVECAPTION   = 1628
118
	TMT_GRADIENTINACTIVECAPTION = 1629
119
	TMT_MENUHILIGHT             = 1630
120
	TMT_MENUBAR                 = 1631
121
	TMT_FIRSTCOLOR              = TMT_SCROLLBAR
122
	TMT_LASTCOLOR               = TMT_MENUBAR
123
	TMT_FROMHUE1                = 1801
124
	TMT_FROMHUE2                = 1802
125
	TMT_FROMHUE3                = 1803
126
	TMT_FROMHUE4                = 1804
127
	TMT_FROMHUE5                = 1805
128
	TMT_TOHUE1                  = 1806
129
	TMT_TOHUE2                  = 1807
130
	TMT_TOHUE3                  = 1808
131
	TMT_TOHUE4                  = 1809
132
	TMT_TOHUE5                  = 1810
133
	TMT_FROMCOLOR1              = 2001
134
	TMT_FROMCOLOR2              = 2002
135
	TMT_FROMCOLOR3              = 2003
136
	TMT_FROMCOLOR4              = 2004
137
	TMT_FROMCOLOR5              = 2005
138
	TMT_TOCOLOR1                = 2006
139
	TMT_TOCOLOR2                = 2007
140
	TMT_TOCOLOR3                = 2008
141
	TMT_TOCOLOR4                = 2009
142
	TMT_TOCOLOR5                = 2010
143
	TMT_TRANSPARENT             = 2201
144
	TMT_AUTOSIZE                = 2202
145
	TMT_BORDERONLY              = 2203
146
	TMT_COMPOSITED              = 2204
147
	TMT_BGFILL                  = 2205
148
	TMT_GLYPHTRANSPARENT        = 2206
149
	TMT_GLYPHONLY               = 2207
150
	TMT_ALWAYSSHOWSIZINGBAR     = 2208
151
	TMT_MIRRORIMAGE             = 2209
152
	TMT_UNIFORMSIZING           = 2210
153
	TMT_INTEGRALSIZING          = 2211
154
	TMT_SOURCEGROW              = 2212
155
	TMT_SOURCESHRINK            = 2213
156
	TMT_DRAWBORDERS             = 2214
157
	TMT_NOETCHEDEFFECT          = 2215
158
	TMT_TEXTAPPLYOVERLAY        = 2216
159
	TMT_TEXTGLOW                = 2217
160
	TMT_TEXTITALIC              = 2218
161
	TMT_COMPOSITEDOPAQUE        = 2219
162
	TMT_LOCALIZEDMIRRORIMAGE    = 2220
163
	TMT_IMAGECOUNT              = 2401
164
	TMT_ALPHALEVEL              = 2402
165
	TMT_BORDERSIZE              = 2403
166
	TMT_ROUNDCORNERWIDTH        = 2404
167
	TMT_ROUNDCORNERHEIGHT       = 2405
168
	TMT_GRADIENTRATIO1          = 2406
169
	TMT_GRADIENTRATIO2          = 2407
170
	TMT_GRADIENTRATIO3          = 2408
171
	TMT_GRADIENTRATIO4          = 2409
172
	TMT_GRADIENTRATIO5          = 2410
173
	TMT_PROGRESSCHUNKSIZE       = 2411
174
	TMT_PROGRESSSPACESIZE       = 2412
175
	TMT_SATURATION              = 2413
176
	TMT_TEXTBORDERSIZE          = 2414
177
	TMT_ALPHATHRESHOLD          = 2415
178
	TMT_WIDTH                   = 2416
179
	TMT_HEIGHT                  = 2417
180
	TMT_GLYPHINDEX              = 2418
181
	TMT_TRUESIZESTRETCHMARK     = 2419
182
	TMT_MINDPI1                 = 2420
183
	TMT_MINDPI2                 = 2421
184
	TMT_MINDPI3                 = 2422
185
	TMT_MINDPI4                 = 2423
186
	TMT_MINDPI5                 = 2424
187
	TMT_TEXTGLOWSIZE            = 2425
188
	TMT_FRAMESPERSECOND         = 2426
189
	TMT_PIXELSPERFRAME          = 2427
190
	TMT_ANIMATIONDELAY          = 2428
191
	TMT_GLOWINTENSITY           = 2429
192
	TMT_OPACITY                 = 2430
193
	TMT_COLORIZATIONCOLOR       = 2431
194
	TMT_COLORIZATIONOPACITY     = 2432
195
	TMT_MINDPI6                 = 2433
196
	TMT_MINDPI7                 = 2434
197
	TMT_GLYPHFONT               = 2601
198
	TMT_IMAGEFILE               = 3001
199
	TMT_IMAGEFILE1              = 3002
200
	TMT_IMAGEFILE2              = 3003
201
	TMT_IMAGEFILE3              = 3004
202
	TMT_IMAGEFILE4              = 3005
203
	TMT_IMAGEFILE5              = 3006
204
	TMT_GLYPHIMAGEFILE          = 3008
205
	TMT_IMAGEFILE6              = 3009
206
	TMT_IMAGEFILE7              = 3010
207
	TMT_TEXT                    = 3201
208
	TMT_CLASSICVALUE            = 3202
209
	TMT_OFFSET                  = 3401
210
	TMT_TEXTSHADOWOFFSET        = 3402
211
	TMT_MINSIZE                 = 3403
212
	TMT_MINSIZE1                = 3404
213
	TMT_MINSIZE2                = 3405
214
	TMT_MINSIZE3                = 3406
215
	TMT_MINSIZE4                = 3407
216
	TMT_MINSIZE5                = 3408
217
	TMT_NORMALSIZE              = 3409
218
	TMT_MINSIZE6                = 3410
219
	TMT_MINSIZE7                = 3411
220
	TMT_SIZINGMARGINS           = 3601
221
	TMT_CONTENTMARGINS          = 3602
222
	TMT_CAPTIONMARGINS          = 3603
223
	TMT_BORDERCOLOR             = 3801
224
	TMT_FILLCOLOR               = 3802
225
	TMT_TEXTCOLOR               = 3803
226
	TMT_EDGELIGHTCOLOR          = 3804
227
	TMT_EDGEHIGHLIGHTCOLOR      = 3805
228
	TMT_EDGESHADOWCOLOR         = 3806
229
	TMT_EDGEDKSHADOWCOLOR       = 3807
230
	TMT_EDGEFILLCOLOR           = 3808
231
	TMT_TRANSPARENTCOLOR        = 3809
232
	TMT_GRADIENTCOLOR1          = 3810
233
	TMT_GRADIENTCOLOR2          = 3811
234
	TMT_GRADIENTCOLOR3          = 3812
235
	TMT_GRADIENTCOLOR4          = 3813
236
	TMT_GRADIENTCOLOR5          = 3814
237
	TMT_SHADOWCOLOR             = 3815
238
	TMT_GLOWCOLOR               = 3816
239
	TMT_TEXTBORDERCOLOR         = 3817
240
	TMT_TEXTSHADOWCOLOR         = 3818
241
	TMT_GLYPHTEXTCOLOR          = 3819
242
	TMT_GLYPHTRANSPARENTCOLOR   = 3820
243
	TMT_FILLCOLORHINT           = 3821
244
	TMT_BORDERCOLORHINT         = 3822
245
	TMT_ACCENTCOLORHINT         = 3823
246
	TMT_TEXTCOLORHINT           = 3824
247
	TMT_HEADING1TEXTCOLOR       = 3825
248
	TMT_HEADING2TEXTCOLOR       = 3826
249
	TMT_BODYTEXTCOLOR           = 3827
250
	TMT_BGTYPE                  = 4001
251
	TMT_BORDERTYPE              = 4002
252
	TMT_FILLTYPE                = 4003
253
	TMT_SIZINGTYPE              = 4004
254
	TMT_HALIGN                  = 4005
255
	TMT_CONTENTALIGNMENT        = 4006
256
	TMT_VALIGN                  = 4007
257
	TMT_OFFSETTYPE              = 4008
258
	TMT_ICONEFFECT              = 4009
259
	TMT_TEXTSHADOWTYPE          = 4010
260
	TMT_IMAGELAYOUT             = 4011
261
	TMT_GLYPHTYPE               = 4012
262
	TMT_IMAGESELECTTYPE         = 4013
263
	TMT_GLYPHFONTSIZINGTYPE     = 4014
264
	TMT_TRUESIZESCALINGTYPE     = 4015
265
	TMT_USERPICTURE             = 5001
266
	TMT_DEFAULTPANESIZE         = 5002
267
	TMT_BLENDCOLOR              = 5003
268
	TMT_CUSTOMSPLITRECT         = 5004
269
	TMT_ANIMATIONBUTTONRECT     = 5005
270
	TMT_ANIMATIONDURATION       = 5006
271
	TMT_TRANSITIONDURATIONS     = 6000
272
	TMT_SCALEDBACKGROUND        = 7001
273
	TMT_ATLASIMAGE              = 8000
274
	TMT_ATLASINPUTIMAGE         = 8001
275
	TMT_ATLASRECT               = 8002
276
)
277

278
// Button parts
279
const (
280
	BP_PUSHBUTTON       = 1
281
	BP_RADIOBUTTON      = 2
282
	BP_CHECKBOX         = 3
283
	BP_GROUPBOX         = 4
284
	BP_USERBUTTON       = 5
285
	BP_COMMANDLINK      = 6
286
	BP_COMMANDLINKGLYPH = 7
287
)
288

289
// Push-button states
290
const (
291
	PBS_NORMAL              = 1
292
	PBS_HOT                 = 2
293
	PBS_PRESSED             = 3
294
	PBS_DISABLED            = 4
295
	PBS_DEFAULTED           = 5
296
	PBS_DEFAULTED_ANIMATING = 6
297
)
298

299
// CheckBox states
300
const (
301
	CBS_UNCHECKEDNORMAL   = 1
302
	CBS_UNCHECKEDHOT      = 2
303
	CBS_UNCHECKEDPRESSED  = 3
304
	CBS_UNCHECKEDDISABLED = 4
305
	CBS_CHECKEDNORMAL     = 5
306
	CBS_CHECKEDHOT        = 6
307
	CBS_CHECKEDPRESSED    = 7
308
	CBS_CHECKEDDISABLED   = 8
309
	CBS_MIXEDNORMAL       = 9
310
	CBS_MIXEDHOT          = 10
311
	CBS_MIXEDPRESSED      = 11
312
	CBS_MIXEDDISABLED     = 12
313
	CBS_IMPLICITNORMAL    = 13
314
	CBS_IMPLICITHOT       = 14
315
	CBS_IMPLICITPRESSED   = 15
316
	CBS_IMPLICITDISABLED  = 16
317
	CBS_EXCLUDEDNORMAL    = 17
318
	CBS_EXCLUDEDHOT       = 18
319
	CBS_EXCLUDEDPRESSED   = 19
320
	CBS_EXCLUDEDDISABLED  = 20
321
)
322

323
// ListBox parts
324
const (
325
	LBCP_ITEM = 5
326
)
327

328
// LBCP_ITEM states
329
const (
330
	LBPSI_HOT              = 1
331
	LBPSI_HOTSELECTED      = 2
332
	LBPSI_SELECTED         = 3
333
	LBPSI_SELECTEDNOTFOCUS = 4
334
)
335

336
// LISTVIEW parts
337
const (
338
	LVP_LISTITEM         = 1
339
	LVP_LISTGROUP        = 2
340
	LVP_LISTDETAIL       = 3
341
	LVP_LISTSORTEDDETAIL = 4
342
	LVP_EMPTYTEXT        = 5
343
	LVP_GROUPHEADER      = 6
344
	LVP_GROUPHEADERLINE  = 7
345
	LVP_EXPANDBUTTON     = 8
346
	LVP_COLLAPSEBUTTON   = 9
347
	LVP_COLUMNDETAIL     = 10
348
)
349

350
// LVP_LISTITEM states
351
const (
352
	LISS_NORMAL           = 1
353
	LISS_HOT              = 2
354
	LISS_SELECTED         = 3
355
	LISS_DISABLED         = 4
356
	LISS_SELECTEDNOTFOCUS = 5
357
	LISS_HOTSELECTED      = 6
358
)
359

360
// PROGRESS parts
361
const (
362
	PP_BAR                = 1
363
	PP_BARVERT            = 2
364
	PP_CHUNK              = 3
365
	PP_CHUNKVERT          = 4
366
	PP_FILL               = 5
367
	PP_FILLVERT           = 6
368
	PP_PULSEOVERLAY       = 7
369
	PP_MOVEOVERLAY        = 8
370
	PP_PULSEOVERLAYVERT   = 9
371
	PP_MOVEOVERLAYVERT    = 10
372
	PP_TRANSPARENTBAR     = 11
373
	PP_TRANSPARENTBARVERT = 12
374
)
375

376
// PP_FILL states
377
const (
378
	PBFS_NORMAL  = 1
379
	PBFS_ERROR   = 2
380
	PBFS_PAUSED  = 3
381
	PBFS_PARTIAL = 4
382
)
383

384
// PP_FILLVERT states
385
const (
386
	PBFVS_NORMAL  = 1
387
	PBFVS_ERROR   = 2
388
	PBFVS_PAUSED  = 3
389
	PBFVS_PARTIAL = 4
390
)
391

392
// TAB parts
393
const (
394
	TABP_TABITEM = 1
395
)
396

397
// TABP_TABITEM states
398
const (
399
	TIS_NORMAL   = 1
400
	TIS_HOT      = 2
401
	TIS_SELECTED = 3
402
	TIS_DISABLED = 4
403
	TIS_FOCUSED  = 5
404
)
405

406
// TREEVIEW parts
407
const (
408
	TVP_TREEITEM = 1
409
	TVP_GLYPH    = 2
410
	TVP_BRANCH   = 3
411
	TVP_HOTGLYPH = 4
412
)
413

414
// TVP_TREEITEM states
415
const (
416
	TREIS_NORMAL           = 1
417
	TREIS_HOT              = 2
418
	TREIS_SELECTED         = 3
419
	TREIS_DISABLED         = 4
420
	TREIS_SELECTEDNOTFOCUS = 5
421
	TREIS_HOTSELECTED      = 6
422
)
423

424
// DTTOPTS flags
425
const (
426
	DTT_TEXTCOLOR    = 1 << 0
427
	DTT_BORDERCOLOR  = 1 << 1
428
	DTT_SHADOWCOLOR  = 1 << 2
429
	DTT_SHADOWTYPE   = 1 << 3
430
	DTT_SHADOWOFFSET = 1 << 4
431
	DTT_BORDERSIZE   = 1 << 5
432
	DTT_FONTPROP     = 1 << 6
433
	DTT_COLORPROP    = 1 << 7
434
	DTT_STATEID      = 1 << 8
435
	DTT_CALCRECT     = 1 << 9
436
	DTT_APPLYOVERLAY = 1 << 10
437
	DTT_GLOWSIZE     = 1 << 11
438
	DTT_CALLBACK     = 1 << 12
439
	DTT_COMPOSITED   = 1 << 13
440
	DTT_VALIDBITS    = DTT_TEXTCOLOR |
441
		DTT_BORDERCOLOR |
442
		DTT_SHADOWCOLOR |
443
		DTT_SHADOWTYPE |
444
		DTT_SHADOWOFFSET |
445
		DTT_BORDERSIZE |
446
		DTT_FONTPROP |
447
		DTT_COLORPROP |
448
		DTT_STATEID |
449
		DTT_CALCRECT |
450
		DTT_APPLYOVERLAY |
451
		DTT_GLOWSIZE |
452
		DTT_COMPOSITED
453
)
454

455
type HTHEME HANDLE
456

457
type THEMESIZE int
458

459
const (
460
	TS_MIN THEMESIZE = iota
461
	TS_TRUE
462
	TS_DRAW
463
)
464

465
type DTTOPTS struct {
466
	DwSize              uint32
467
	DwFlags             uint32
468
	CrText              COLORREF
469
	CrBorder            COLORREF
470
	CrShadow            COLORREF
471
	ITextShadowType     int32
472
	PtShadowOffset      POINT
473
	IBorderSize         int32
474
	IFontPropId         int32
475
	IColorPropId        int32
476
	IStateId            int32
477
	FApplyOverlay       BOOL
478
	IGlowSize           int32
479
	PfnDrawTextCallback uintptr
480
	LParam              uintptr
481
}
482

483
var (
484
	// Library
485
	libuxtheme *windows.LazyDLL
486

487
	// Functions
488
	closeThemeData      *windows.LazyProc
489
	drawThemeBackground *windows.LazyProc
490
	drawThemeTextEx     *windows.LazyProc
491
	getThemeColor       *windows.LazyProc
492
	getThemePartSize    *windows.LazyProc
493
	getThemeTextExtent  *windows.LazyProc
494
	isAppThemed         *windows.LazyProc
495
	openThemeData       *windows.LazyProc
496
	setWindowTheme      *windows.LazyProc
497
)
498

499
func init() {
500
	// Library
501
	libuxtheme = windows.NewLazySystemDLL("uxtheme.dll")
502

503
	// Functions
504
	closeThemeData = libuxtheme.NewProc("CloseThemeData")
505
	drawThemeBackground = libuxtheme.NewProc("DrawThemeBackground")
506
	drawThemeTextEx = libuxtheme.NewProc("DrawThemeTextEx")
507
	getThemeColor = libuxtheme.NewProc("GetThemeColor")
508
	getThemePartSize = libuxtheme.NewProc("GetThemePartSize")
509
	getThemeTextExtent = libuxtheme.NewProc("GetThemeTextExtent")
510
	isAppThemed = libuxtheme.NewProc("IsAppThemed")
511
	openThemeData = libuxtheme.NewProc("OpenThemeData")
512
	setWindowTheme = libuxtheme.NewProc("SetWindowTheme")
513
}
514

515
func CloseThemeData(hTheme HTHEME) HRESULT {
516
	ret, _, _ := syscall.Syscall(closeThemeData.Addr(), 1,
517
		uintptr(hTheme),
518
		0,
519
		0)
520

521
	return HRESULT(ret)
522
}
523

524
func DrawThemeBackground(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, pRect, pClipRect *RECT) HRESULT {
525
	ret, _, _ := syscall.Syscall6(drawThemeBackground.Addr(), 6,
526
		uintptr(hTheme),
527
		uintptr(hdc),
528
		uintptr(iPartId),
529
		uintptr(iStateId),
530
		uintptr(unsafe.Pointer(pRect)),
531
		uintptr(unsafe.Pointer(pClipRect)))
532

533
	return HRESULT(ret)
534
}
535

536
func DrawThemeTextEx(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, pszText *uint16, iCharCount int32, dwFlags uint32, pRect *RECT, pOptions *DTTOPTS) HRESULT {
537
	if drawThemeTextEx.Find() != nil {
538
		return HRESULT(0)
539
	}
540
	ret, _, _ := syscall.Syscall9(drawThemeTextEx.Addr(), 9,
541
		uintptr(hTheme),
542
		uintptr(hdc),
543
		uintptr(iPartId),
544
		uintptr(iStateId),
545
		uintptr(unsafe.Pointer(pszText)),
546
		uintptr(iCharCount),
547
		uintptr(dwFlags),
548
		uintptr(unsafe.Pointer(pRect)),
549
		uintptr(unsafe.Pointer(pOptions)))
550

551
	return HRESULT(ret)
552
}
553

554
func GetThemeColor(hTheme HTHEME, iPartId, iStateId, iPropId int32, pColor *COLORREF) HRESULT {
555
	ret, _, _ := syscall.Syscall6(getThemeColor.Addr(), 5,
556
		uintptr(hTheme),
557
		uintptr(iPartId),
558
		uintptr(iStateId),
559
		uintptr(iPropId),
560
		uintptr(unsafe.Pointer(pColor)),
561
		0)
562

563
	return HRESULT(ret)
564
}
565

566
func GetThemePartSize(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, prc *RECT, eSize THEMESIZE, psz *SIZE) HRESULT {
567
	ret, _, _ := syscall.Syscall9(getThemePartSize.Addr(), 7,
568
		uintptr(hTheme),
569
		uintptr(hdc),
570
		uintptr(iPartId),
571
		uintptr(iStateId),
572
		uintptr(unsafe.Pointer(prc)),
573
		uintptr(eSize),
574
		uintptr(unsafe.Pointer(psz)),
575
		0,
576
		0)
577

578
	return HRESULT(ret)
579
}
580

581
func GetThemeTextExtent(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, pszText *uint16, iCharCount int32, dwTextFlags uint32, pBoundingRect, pExtentRect *RECT) HRESULT {
582
	ret, _, _ := syscall.Syscall9(getThemeTextExtent.Addr(), 9,
583
		uintptr(hTheme),
584
		uintptr(hdc),
585
		uintptr(iPartId),
586
		uintptr(iStateId),
587
		uintptr(unsafe.Pointer(pszText)),
588
		uintptr(iCharCount),
589
		uintptr(dwTextFlags),
590
		uintptr(unsafe.Pointer(pBoundingRect)),
591
		uintptr(unsafe.Pointer(pExtentRect)))
592

593
	return HRESULT(ret)
594
}
595

596
func IsAppThemed() bool {
597
	ret, _, _ := syscall.Syscall(isAppThemed.Addr(), 0,
598
		0,
599
		0,
600
		0)
601

602
	return ret != 0
603
}
604

605
func OpenThemeData(hwnd HWND, pszClassList *uint16) HTHEME {
606
	ret, _, _ := syscall.Syscall(openThemeData.Addr(), 2,
607
		uintptr(hwnd),
608
		uintptr(unsafe.Pointer(pszClassList)),
609
		0)
610

611
	return HTHEME(ret)
612
}
613

614
func SetWindowTheme(hwnd HWND, pszSubAppName, pszSubIdList *uint16) HRESULT {
615
	ret, _, _ := syscall.Syscall(setWindowTheme.Addr(), 3,
616
		uintptr(hwnd),
617
		uintptr(unsafe.Pointer(pszSubAppName)),
618
		uintptr(unsafe.Pointer(pszSubIdList)))
619

620
	return HRESULT(ret)
621
}
622

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.