/
shlobj.h
2639 lines (2325 loc) · 86 KB
/
shlobj.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Copyright (C) the Wine project
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __WINE_SHLOBJ_H
#define __WINE_SHLOBJ_H
#include <ole2.h>
#include <commctrl.h>
#include <prsht.h>
#ifndef INITGUID
#include <shlguid.h>
#endif
#ifdef WINE_NO_UNICODE_MACROS
#undef GetObject
#endif
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
/* Except for specific structs, this header is byte packed */
#include <pshpack1.h>
#include <shtypes.h>
#include <shobjidl.h>
#include <pshpack8.h>
typedef struct
{
DWORD dwSize;
DWORD dwMask;
SHELLVIEWID* pvid;
LPSTR pszWebViewTemplate;
DWORD cchWebViewTemplate;
LPSTR pszWebViewTemplateVersion;
LPSTR pszInfoTip;
DWORD cchInfoTip;
CLSID* pclsid;
DWORD dwFlags;
LPSTR pszIconFile;
DWORD cchIconFile;
int iIconIndex;
LPSTR pszLogo;
DWORD cchLogo;
} SHFOLDERCUSTOMSETTINGSA, *LPSHFOLDERCUSTOMSETTINGSA;
typedef struct
{
DWORD dwSize;
DWORD dwMask;
SHELLVIEWID* pvid;
LPWSTR pszWebViewTemplate;
DWORD cchWebViewTemplate;
LPWSTR pszWebViewTemplateVersion;
LPWSTR pszInfoTip;
DWORD cchInfoTip;
CLSID* pclsid;
DWORD dwFlags;
LPWSTR pszIconFile;
DWORD cchIconFile;
int iIconIndex;
LPWSTR pszLogo;
DWORD cchLogo;
} SHFOLDERCUSTOMSETTINGSW, *LPSHFOLDERCUSTOMSETTINGSW;
#include <poppack.h>
#define FCS_READ 0x00000001
#define FCS_FORCEWRITE 0x00000002
#define FCSM_ICONFILE 0x00000010
#ifndef HPSXA_DEFINED
#define HPSXA_DEFINED
DECLARE_HANDLE(HPSXA);
#endif
typedef enum
{
KF_FLAG_DEFAULT = 0x00000000,
KF_FLAG_SIMPLE_IDLIST = 0x00000100,
KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200,
KF_FLAG_DEFAULT_PATH = 0x00000400,
KF_FLAG_INIT = 0x00000800,
KF_FLAG_NO_ALIAS = 0x00001000,
KF_FLAG_DONT_UNEXPAND = 0x00002000,
KF_FLAG_DONT_VERIFY = 0x00004000,
KF_FLAG_CREATE = 0x00008000,
KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000,
KF_FLAG_ALIAS_ONLY = 0x80000000
} KNOWN_FOLDER_FLAG;
typedef int GPFIDL_FLAGS;
UINT
WINAPI
SHAddFromPropSheetExtArray(
_In_ HPSXA,
_In_ LPFNADDPROPSHEETPAGE,
LPARAM);
LPVOID WINAPI SHAlloc(SIZE_T) __WINE_ALLOC_SIZE(1);
HRESULT
WINAPI
SHCoCreateInstance(
_In_opt_ LPCWSTR,
_In_opt_ const CLSID*,
_In_opt_ IUnknown*,
_In_ REFIID,
_Outptr_ LPVOID*);
HPSXA WINAPI SHCreatePropSheetExtArray(_In_ HKEY, _In_opt_ LPCWSTR, UINT);
HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
HRESULT WINAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker**);
HRESULT
WINAPI
SHCreateShellItem(
_In_opt_ PCIDLIST_ABSOLUTE,
_In_opt_ IShellFolder*,
_In_ PCUITEMID_CHILD,
_Outptr_ IShellItem**);
DWORD WINAPI SHCLSIDFromStringA(_In_ LPCSTR, _Out_ CLSID*);
DWORD WINAPI SHCLSIDFromStringW(_In_ LPCWSTR, _Out_ CLSID*);
#define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)
HRESULT
WINAPI
SHCreateStdEnumFmtEtc(
_In_ UINT cfmt,
_In_reads_(cfmt) const FORMATETC *,
_Outptr_ IEnumFORMATETC**);
void WINAPI SHDestroyPropSheetExtArray(_In_ HPSXA);
BOOL WINAPI SHFindFiles(_In_opt_ PCIDLIST_ABSOLUTE, _In_opt_ PCIDLIST_ABSOLUTE);
DWORD WINAPI SHFormatDrive(_In_ HWND, UINT, UINT, UINT);
void WINAPI SHFree(_In_opt_ LPVOID);
BOOL
WINAPI
GetFileNameFromBrowse(
_In_opt_ HWND,
_Inout_updates_(cchFilePath) LPWSTR,
UINT cchFilePath,
_In_opt_ LPCWSTR,
_In_ LPCWSTR,
_In_opt_ LPCWSTR,
_In_opt_ LPCWSTR);
_Check_return_ HRESULT WINAPI SHGetInstanceExplorer(_Outptr_ IUnknown**);
VOID WINAPI SHSetInstanceExplorer(_In_opt_ IUnknown*);
HRESULT
WINAPI
SHGetFolderPathAndSubDirA(
_Reserved_ HWND,
_In_ int,
_In_opt_ HANDLE,
_In_ DWORD,
_In_opt_ LPCSTR, _Out_writes_(MAX_PATH) LPSTR);
HRESULT
WINAPI
SHGetFolderPathAndSubDirW(
_Reserved_ HWND,
_In_ int,
_In_opt_ HANDLE,
_In_ DWORD,
_In_opt_ LPCWSTR,
_Out_writes_(MAX_PATH) LPWSTR);
#define SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir);
_Success_(return != 0)
BOOL
WINAPI
SHGetPathFromIDListA(
_In_ PCIDLIST_ABSOLUTE,
_Out_writes_(MAX_PATH) LPSTR);
_Success_(return != 0)
BOOL
WINAPI
SHGetPathFromIDListW(
_In_ PCIDLIST_ABSOLUTE,
_Out_writes_(MAX_PATH) LPWSTR);
#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
INT WINAPI SHHandleUpdateImage(_In_ PCIDLIST_ABSOLUTE);
HRESULT
WINAPI
SHILCreateFromPath(
_In_ PCWSTR,
_Outptr_ PIDLIST_ABSOLUTE*,
_Inout_opt_ DWORD*);
HRESULT WINAPI SHLoadOLE(LPARAM);
HRESULT
WINAPI
SHParseDisplayName(
_In_ PCWSTR,
_In_opt_ IBindCtx*,
_Outptr_ PIDLIST_ABSOLUTE*,
_In_ SFGAOF,
_Out_opt_ SFGAOF*);
HRESULT
WINAPI
SHPathPrepareForWriteA(
_In_opt_ HWND,
_In_opt_ IUnknown*,
_In_ LPCSTR, DWORD);
HRESULT
WINAPI
SHPathPrepareForWriteW(
_In_opt_ HWND,
_In_opt_ IUnknown*,
_In_ LPCWSTR, DWORD);
#define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite);
UINT
WINAPI
SHReplaceFromPropSheetExtArray(
_In_ HPSXA,
UINT,
_In_ LPFNADDPROPSHEETPAGE,
LPARAM);
PIDLIST_ABSOLUTE WINAPI SHSimpleIDListFromPath(PCWSTR);
int
WINAPI
SHMapPIDLToSystemImageListIndex(
_In_ IShellFolder*,
_In_ PCUITEMID_CHILD,
_Out_opt_ int*);
HRESULT WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD);
VOID WINAPI SHUpdateImageA(_In_ LPCSTR, INT, UINT, INT);
VOID WINAPI SHUpdateImageW(_In_ LPCWSTR, INT, UINT, INT);
#define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage)
INT
WINAPI
PickIconDlg(
_In_opt_ HWND,
_Inout_updates_(cchIconPath) LPWSTR,
UINT cchIconPath,
_Inout_opt_ int *);
HRESULT
WINAPI
SHLimitInputEdit(
_In_ HWND hwnd,
_In_ IShellFolder *folder);
int WINAPI RestartDialog(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD);
int WINAPI RestartDialogEx(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD, DWORD);
int WINAPI DriveType(int);
int WINAPI RealDriveType(int, BOOL);
int WINAPI IsNetDrive(int);
BOOL WINAPI IsUserAnAdmin(void);
#define KF_FLAG_DEFAULT_PATH 0x00000400
#define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formattable */
#define SHFMT_CANCEL 0xFFFFFFFEL /* Last format was cancelled */
#define SHFMT_NOFORMAT 0xFFFFFFFDL /* Drive is not formattable */
/* SHFormatDrive flags */
#define SHFMT_ID_DEFAULT 0xFFFF
#define SHFMT_OPT_FULL 1
#define SHFMT_OPT_SYSONLY 2
/* SHPathPrepareForWrite flags */
#define SHPPFW_NONE 0x00000000
#define SHPPFW_DIRCREATE 0x00000001
#define SHPPFW_DEFAULT SHPPFW_DIRCREATE
#define SHPPFW_ASKDIRCREATE 0x00000002
#define SHPPFW_IGNOREFILENAME 0x00000004
#define SHPPFW_NOWRITECHECK 0x00000008
#define SHPPFW_MEDIACHECKONLY 0x00000010
/* SHObjectProperties flags */
#define SHOP_PRINTERNAME 0x01
#define SHOP_FILEPATH 0x02
#define SHOP_VOLUMEGUID 0x04
BOOL
WINAPI
SHObjectProperties(
_In_opt_ HWND,
_In_ DWORD,
_In_ LPCWSTR,
_In_opt_ LPCWSTR);
HRESULT
WINAPI
SHOpenFolderAndSelectItems(
_In_ PCIDLIST_ABSOLUTE pidlFolder,
_In_ UINT cidl,
_In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY,
_In_ DWORD);
#define PCS_FATAL 0x80000000
#define PCS_REPLACEDCHAR 0x00000001
#define PCS_REMOVEDCHAR 0x00000002
#define PCS_TRUNCATED 0x00000004
#define PCS_PATHTOOLONG 0x00000008
int WINAPI PathCleanupSpec(_In_opt_ LPCWSTR, _Inout_ LPWSTR);
/*****************************************************************************
* IContextMenu interface
*/
/* DATAOBJECT_InitShellIDList*/
#define CFSTR_SHELLIDLISTA "Shell IDList Array" /* CF_IDLIST */
#define CFSTR_SHELLIDLISTOFFSETA "Shell Object Offsets" /* CF_OBJECTPOSITIONS */
#define CFSTR_NETRESOURCESA "Net Resource" /* CF_NETRESOURCE */
/* DATAOBJECT_InitFileGroupDesc */
#define CFSTR_FILEDESCRIPTORA "FileGroupDescriptor" /* CF_FILEGROUPDESCRIPTORA */
/* DATAOBJECT_InitFileContents*/
#define CFSTR_FILECONTENTSA "FileContents" /* CF_FILECONTENTS */
#define CFSTR_FILENAMEA "FileName" /* CF_FILENAMEA */
#define CFSTR_FILENAMEMAPA "FileNameMap" /* CF_FILENAMEMAPA */
#define CFSTR_PRINTERGROUPA "PrinterFriendlyName" /* CF_PRINTERS */
#define CFSTR_SHELLURLA "UniformResourceLocator"
#define CFSTR_INETURLA CFSTR_SHELLURLA
#define CFSTR_PREFERREDDROPEFFECTA "Preferred DropEffect"
#define CFSTR_PERFORMEDDROPEFFECTA "Performed DropEffect"
#define CFSTR_PASTESUCCEEDEDA "Paste Succeeded"
#define CFSTR_INDRAGLOOPA "InShellDragLoop"
#define CFSTR_DRAGCONTEXTA "DragContext"
#define CFSTR_MOUNTEDVOLUMEA "MountedVolume"
#define CFSTR_PERSISTEDDATAOBJECTA "PersistedDataObject"
#define CFSTR_TARGETCLSIDA "TargetCLSID"
#define CFSTR_AUTOPLAY_SHELLIDLISTSA "Autoplay Enumerated IDList Array"
#define CFSTR_LOGICALPERFORMEDDROPEFFECTA "Logical Performed DropEffect"
#if defined(__GNUC__)
# define CFSTR_SHELLIDLISTW \
(const WCHAR []){ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
# define CFSTR_SHELLIDLISTOFFSETW \
(const WCHAR []){ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 }
# define CFSTR_NETRESOURCESW \
(const WCHAR []){ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 }
# define CFSTR_FILEDESCRIPTORW \
(const WCHAR []){ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 }
# define CFSTR_FILECONTENTSW \
(const WCHAR []){ 'F','i','l','e','C','o','n','t','e','n','t','s',0 }
# define CFSTR_FILENAMEW \
(const WCHAR []){ 'F','i','l','e','N','a','m','e','W',0 }
# define CFSTR_FILENAMEMAPW \
(const WCHAR []){ 'F','i','l','e','N','a','m','e','M','a','p','W',0 }
# define CFSTR_PRINTERGROUPW \
(const WCHAR []){ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 }
# define CFSTR_SHELLURLW \
(const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 }
# define CFSTR_INETURLW \
(const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 }
# define CFSTR_PREFERREDDROPEFFECTW \
(const WCHAR []){ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
# define CFSTR_PERFORMEDDROPEFFECTW \
(const WCHAR []){ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
# define CFSTR_PASTESUCCEEDEDW \
(const WCHAR []){ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 }
# define CFSTR_INDRAGLOOPW \
(const WCHAR []){ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 }
# define CFSTR_DRAGCONTEXTW \
(const WCHAR []){ 'D','r','a','g','C','o','n','t','e','x','t',0 }
# define CFSTR_MOUNTEDVOLUMEW \
(const WCHAR []){ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 }
# define CFSTR_PERSISTEDDATAOBJECTW \
(const WCHAR []){ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 }
# define CFSTR_TARGETCLSIDW \
(const WCHAR []){ 'T','a','r','g','e','t','C','L','S','I','D',0 }
# define CFSTR_AUTOPLAY_SHELLIDLISTSW \
(const WCHAR []){ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',\
' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
# define CFSTR_LOGICALPERFORMEDDROPEFFECTW \
(const WCHAR []){ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',\
' ','D','r','o','p','E','f','f','e','c','t',0 }
#elif defined(_MSC_VER)
# define CFSTR_SHELLIDLISTW L"Shell IDList Array"
# define CFSTR_SHELLIDLISTOFFSETW L"Shell Object Offsets"
# define CFSTR_NETRESOURCESW L"Net Resource"
# define CFSTR_FILEDESCRIPTORW L"FileGroupDescriptorW"
# define CFSTR_FILECONTENTSW L"FileContents"
# define CFSTR_FILENAMEW L"FileNameW"
# define CFSTR_FILENAMEMAPW L"FileNameMapW"
# define CFSTR_PRINTERGROUPW L"PrinterFriendlyName"
# define CFSTR_SHELLURLW L"UniformResourceLocator"
# define CFSTR_INETURLW L"UniformResourceLocatorW"
# define CFSTR_PREFERREDDROPEFFECTW L"Preferred DropEffect"
# define CFSTR_PERFORMEDDROPEFFECTW L"Performed DropEffect"
# define CFSTR_PASTESUCCEEDEDW L"Paste Succeeded"
# define CFSTR_INDRAGLOOPW L"InShellDragLoop"
# define CFSTR_DRAGCONTEXTW L"DragContext"
# define CFSTR_MOUNTEDVOLUMEW L"MountedVolume"
# define CFSTR_PERSISTEDDATAOBJECTW L"PersistedDataObject"
# define CFSTR_TARGETCLSIDW L"TargetCLSID"
# define CFSTR_AUTOPLAY_SHELLIDLISTSW L"Autoplay Enumerated IDList Array"
# define CFSTR_LOGICALPERFORMEDDROPEFFECTW L"Logical Performed DropEffect"
#else
static const WCHAR CFSTR_SHELLIDLISTW[] =
{ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
static const WCHAR CFSTR_SHELLIDLISTOFFSETW[] =
{ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 };
static const WCHAR CFSTR_NETRESOURCESW[] =
{ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 };
static const WCHAR CFSTR_FILEDESCRIPTORW[] =
{ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 };
static const WCHAR CFSTR_FILECONTENTSW[] =
{ 'F','i','l','e','C','o','n','t','e','n','t','s',0 };
static const WCHAR CFSTR_FILENAMEW[] =
{ 'F','i','l','e','N','a','m','e','W',0 };
static const WCHAR CFSTR_FILENAMEMAPW[] =
{ 'F','i','l','e','N','a','m','e','M','a','p','W',0 };
static const WCHAR CFSTR_PRINTERGROUPW[] =
{ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 };
static const WCHAR CFSTR_SHELLURLW[] =
{ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 };
static const WCHAR CFSTR_INETURLW[] =
{ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 };
static const WCHAR CFSTR_PREFERREDDROPEFFECTW[] =
{ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
static const WCHAR CFSTR_PERFORMEDDROPEFFECTW[] =
{ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
static const WCHAR CFSTR_PASTESUCCEEDEDW[] =
{ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 };
static const WCHAR CFSTR_INDRAGLOOPW[] =
{ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 };
static const WCHAR CFSTR_DRAGCONTEXTW[] =
{ 'D','r','a','g','C','o','n','t','e','x','t',0 };
static const WCHAR CFSTR_MOUNTEDVOLUMEW[] =
{ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 };
static const WCHAR CFSTR_PERSISTEDDATAOBJECTW[] =
{ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 };
static const WCHAR CFSTR_TARGETCLSIDW[] =
{ 'T','a','r','g','e','t','C','L','S','I','D',0 };
static const WCHAR CFSTR_AUTOPLAY_SHELLIDLISTSW[] =
{ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',
' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
static const WCHAR CFSTR_LOGICALPERFORMEDDROPEFFECTW[] =
{ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',
' ','D','r','o','p','E','f','f','e','c','t',0 };
#endif
#define CFSTR_SHELLIDLIST WINELIB_NAME_AW(CFSTR_SHELLIDLIST)
#define CFSTR_SHELLIDLISTOFFSET WINELIB_NAME_AW(CFSTR_SHELLIDLISTOFFSET)
#define CFSTR_NETRESOURCES WINELIB_NAME_AW(CFSTR_NETRESOURCES)
#define CFSTR_FILEDESCRIPTOR WINELIB_NAME_AW(CFSTR_FILEDESCRIPTOR)
#define CFSTR_FILECONTENTS WINELIB_NAME_AW(CFSTR_FILECONTENTS)
#define CFSTR_FILENAME WINELIB_NAME_AW(CFSTR_FILENAME)
#define CFSTR_FILENAMEMAP WINELIB_NAME_AW(CFSTR_FILENAMEMAP)
#define CFSTR_PRINTERGROUP WINELIB_NAME_AW(CFSTR_PRINTERGROUP)
#define CFSTR_SHELLURL WINELIB_NAME_AW(CFSTR_SHELLURL)
#define CFSTR_INETURL WINELIB_NAME_AW(CFSTR_INETURL)
#define CFSTR_PREFERREDDROPEFFECT WINELIB_NAME_AW(CFSTR_PREFERREDDROPEFFECT)
#define CFSTR_PERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_PERFORMEDDROPEFFECT)
#define CFSTR_PASTESUCCEEDED WINELIB_NAME_AW(CFSTR_PASTESUCCEEDED)
#define CFSTR_INDRAGLOOP WINELIB_NAME_AW(CFSTR_INDRAGLOOP)
#define CFSTR_DRAGCONTEXT WINELIB_NAME_AW(CFSTR_DRAGCONTEXT)
#define CFSTR_MOUNTEDVOLUME WINELIB_NAME_AW(CFSTR_MOUNTEDVOLUME)
#define CFSTR_PERSISTEDDATAOBJECT WINELIB_NAME_AW(CFSTR_PERSISTEDDATAOBJECT)
#define CFSTR_TARGETCLSID WINELIB_NAME_AW(CFSTR_TARGETCLSID)
#define CFSTR_AUTOPLAY_SHELLIDLISTS WINELIB_NAME_AW(CFSTR_AUTOPLAY_SHELLIDLISTS)
#define CFSTR_LOGICALPERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_LOGICALPERFORMEDDROPEFFECT)
typedef struct
{ UINT cidl;
UINT aoffset[1];
} CIDA, *LPIDA;
/************************************************************************
* IShellView interface
*/
#define FCIDM_SHVIEWFIRST 0x0000
/* undocumented */
#define FCIDM_SHVIEW_ARRANGE 0x7001
#define FCIDM_SHVIEW_DELETE 0x7011
#define FCIDM_SHVIEW_PROPERTIES 0x7013
#define FCIDM_SHVIEW_CUT 0x7018
#define FCIDM_SHVIEW_COPY 0x7019
#define FCIDM_SHVIEW_INSERT 0x701A
#define FCIDM_SHVIEW_UNDO 0x701B
#define FCIDM_SHVIEW_INSERTLINK 0x701C
#define FCIDM_SHVIEW_COPYTO 0x701E
#define FCIDM_SHVIEW_MOVETO 0x701F
#define FCIDM_SHVIEW_SELECTALL 0x7021
#define FCIDM_SHVIEW_INVERTSELECTION 0x7022
#define FCIDM_SHVIEW_BIGICON 0x7029
#define FCIDM_SHVIEW_SMALLICON 0x702A
#define FCIDM_SHVIEW_LISTVIEW 0x702B
#define FCIDM_SHVIEW_REPORTVIEW 0x702C
/* 0x7030-0x703f are used by the shellbrowser */
#define FCIDM_SHVIEW_AUTOARRANGE 0x7031
#define FCIDM_SHVIEW_SNAPTOGRID 0x7032
#define FCIDM_SHVIEW_ALIGNTOGRID 0x7033
#define FCIDM_SHVIEW_HELP 0x7041
#define FCIDM_SHVIEW_RENAME 0x7050
#define FCIDM_SHVIEW_CREATELINK 0x7051
#define FCIDM_SHVIEW_NEWLINK 0x7052
#define FCIDM_SHVIEW_NEWFOLDER 0x7053
#define FCIDM_SHVIEW_REFRESH 0x7100 /* FIXME */
#define FCIDM_SHVIEW_EXPLORE 0x7101 /* FIXME */
#define FCIDM_SHVIEW_OPEN 0x7102 /* FIXME */
#define FCIDM_SHVIEWLAST 0x7fff
#define FCIDM_BROWSERFIRST 0xA000
/* undocumented toolbar items from stddlg's*/
#define FCIDM_TB_UPFOLDER 0xA001
#define FCIDM_TB_NEWFOLDER 0xA002
#define FCIDM_TB_SMALLICON 0xA003
#define FCIDM_TB_REPORTVIEW 0xA004
#define FCIDM_TB_DESKTOP 0xA005 /* FIXME */
#define FCIDM_BROWSERLAST 0xbf00
#define FCIDM_GLOBALFIRST 0x8000
#define FCIDM_GLOBALLAST 0x9fff
/*
* Global submenu IDs and separator IDs
*/
#define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000)
#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
/* control IDs known to the view */
#define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0)
#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1)
#define INTERFACE IShellDetails
DECLARE_INTERFACE_(IShellDetails, IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IShellDetails methods ***/
STDMETHOD(GetDetailsOf)(THIS_ _In_opt_ PCUITEMID_CHILD pidl, UINT iColumn, _Out_ SHELLDETAILS *pDetails) PURE;
STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IShellDetails_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellDetails_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellDetails_Release(p) (p)->lpVtbl->Release(p)
/*** IShellDetails methods ***/
#define IShellDetails_GetDetailsOf(p,a,b,c) (p)->lpVtbl->GetDetailsOf(p,a,b,c)
#define IShellDetails_ColumnClick(p,a) (p)->lpVtbl->ColumnClick(p,a)
#endif
/* IQueryInfo interface */
#define INTERFACE IQueryInfo
DECLARE_INTERFACE_(IQueryInfo,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IQueryInfo methods ***/
STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, _Outptr_ WCHAR** lppTips) PURE;
STDMETHOD(GetInfoFlags)(THIS_ _Out_ DWORD* lpFlags) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IQueryInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IQueryInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IQueryInfo_Release(p) (p)->lpVtbl->Release(p)
/*** IQueryInfo methods ***/
#define IQueryInfo_GetInfoTip(p,a,b) (p)->lpVtbl->GetInfoTip(p,a,b)
#define IQueryInfo_GetInfoFlags(p,a) (p)->lpVtbl->GetInfoFlags(p,a)
#endif
/* IInputObject interface */
#define INTERFACE IInputObject
DECLARE_INTERFACE_(IInputObject,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IInputObject methods ***/
STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE;
STDMETHOD(HasFocusIO)(THIS) PURE;
STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IInputObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IInputObject_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IInputObject_Release(p) (p)->lpVtbl->Release(p)
/*** IInputObject methods ***/
#define IInputObject_UIActivateIO(p,a,b) (p)->lpVtbl->UIActivateIO(p,a,b)
#define IInputObject_HasFocusIO(p) (p)->lpVtbl->HasFocusIO(p)
#define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a)
#endif
/* IInputObjectSite interface */
#define INTERFACE IInputObjectSite
DECLARE_INTERFACE_(IInputObjectSite,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IInputObjectSite methods ***/
STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IInputObjectSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IInputObjectSite_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IInputObjectSite_Release(p) (p)->lpVtbl->Release(p)
/*** IInputObject methods ***/
#define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b)
#endif
/* IObjMgr interface */
#define INTERFACE IObjMgr
DECLARE_INTERFACE_(IObjMgr,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IObjMgr methods ***/
STDMETHOD(Append)(THIS_ _In_ LPUNKNOWN punk) PURE;
STDMETHOD(Remove)(THIS_ _In_ LPUNKNOWN punk) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IObjMgr_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IObjMgr_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IObjMgr_Release(p) (p)->lpVtbl->Release(p)
/*** IObjMgr methods ***/
#define IObjMgr_Append(p,a) (p)->lpVtbl->Append(p,a)
#define IObjMgr_Remove(p,a) (p)->lpVtbl->Remove(p,a)
#endif
/* ICurrentWorkingDirectory interface */
#define INTERFACE ICurrentWorkingDirectory
DECLARE_INTERFACE_(ICurrentWorkingDirectory,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** ICurrentWorkingDirectory methods ***/
STDMETHOD(GetDirectory)(THIS_ _Out_writes_(cchSize) PWSTR pwzPath, DWORD cchSize) PURE;
STDMETHOD(SetDirectory)(THIS_ _In_ PCWSTR pwzPath) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define ICurrentWorkingDirectory_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define ICurrentWorkingDirectory_AddRef(p) (p)->lpVtbl->AddRef(p)
#define ICurrentWorkingDirectory_Release(p) (p)->lpVtbl->Release(p)
/*** ICurrentWorkingDirectory methods ***/
#define ICurrentWorkingDirectory_GetDirectory(p,a,b) (p)->lpVtbl->GetDirectory(p,a,b)
#define ICurrentWorkingDirectory_SetDirectory(p,a) (p)->lpVtbl->SetDirectory(p,a)
#endif
/* IACList interface */
#define INTERFACE IACList
DECLARE_INTERFACE_(IACList,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IACList methods ***/
STDMETHOD(Expand)(THIS_ _In_ LPCOLESTR str) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IACList_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IACList_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IACList_Release(p) (p)->lpVtbl->Release(p)
/*** IACList methods ***/
#define IACList_Expand(p,a) (p)->lpVtbl->Expand(p,a)
#endif
/* IACList2 interface */
#define ACLO_NONE 0x00000000
#define ACLO_CURRENTDIR 0x00000001
#define ACLO_MYCOMPUTER 0x00000002
#define ACLO_DESKTOP 0x00000004
#define ACLO_FAVORITES 0x00000008
#define ACLO_FILESYSONLY 0x00000010
#define ACLO_FILESYSDIRS 0x00000020
#define INTERFACE IACList2
DECLARE_INTERFACE_(IACList2,IACList)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IACList methods ***/
STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
/*** IACList2 methods ***/
STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE;
STDMETHOD(GetOptions)(THIS_ _Out_ DWORD* pdwFlag) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IACList2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IACList2_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IACList2_Release(p) (p)->lpVtbl->Release(p)
/*** IACList2 methods ***/
#define IACList2_GetOptions(p,a) (p)->lpVtbl->GetOptions(p,a)
#define IACList2_SetOptions(p,a) (p)->lpVtbl->SetOptions(p,a)
#endif
/****************************************************************************
* IShellFolderViewCB interface
*/
#define INTERFACE IShellFolderViewCB
DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IShellFolderViewCB methods ***/
STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IShellFolderViewCB_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellFolderViewCB_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellFolderViewCB_Release(p) (p)->lpVtbl->Release(p)
/*** IShellFolderViewCB methods ***/
#define IShellFolderViewCB_MessageSFVCB(p,a,b,c) (p)->lpVtbl->MessageSFVCB(p,a,b,c)
#endif
/****************************************************************************
* IShellFolderView interface
*/
#include <pshpack8.h>
typedef struct _ITEMSPACING
{
int cxSmall;
int cySmall;
int cxLarge;
int cyLarge;
} ITEMSPACING;
#include <poppack.h>
#define INTERFACE IShellFolderView
DEFINE_GUID(IID_IShellFolderView,0x37a378c0,0xf82d,0x11ce,0xae,0x65,0x08,0x00,0x2b,0x2e,0x12,0x62);
DECLARE_INTERFACE_(IShellFolderView, IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IShellFolderView methods ***/
STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE;
STDMETHOD(GetArrangeParam) (THIS_ _Out_ LPARAM *plParamSort) PURE;
STDMETHOD(ArrangeGrid) (THIS) PURE;
STDMETHOD(AutoArrange) (THIS) PURE;
STDMETHOD(GetAutoArrange) (THIS) PURE;
STDMETHOD(AddObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
STDMETHOD(GetObject) (THIS_ _Outptr_ PITEMID_CHILD *ppidl, UINT uItem) PURE;
STDMETHOD(RemoveObject) (THIS_ _In_opt_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
STDMETHOD(GetObjectCount) (THIS_ _Out_ UINT *puCount) PURE;
STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE;
STDMETHOD(UpdateObject) (THIS_ _In_ PITEMID_CHILD pidlOld, _In_ PITEMID_CHILD pidlNew, _Out_ UINT *puItem) PURE;
STDMETHOD(RefreshObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
STDMETHOD(SetRedraw) (THIS_ BOOL bRedraw) PURE;
STDMETHOD(GetSelectedCount) (THIS_ _Out_ UINT *puSelected) PURE;
STDMETHOD(GetSelectedObjects) (THIS_ _Outptr_result_buffer_(*puItems) PCUITEMID_CHILD **pppidl, _Out_ UINT *puItems) PURE;
STDMETHOD(IsDropOnSource) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE;
STDMETHOD(GetDragPoint) (THIS_ _Out_ POINT *ppt) PURE;
STDMETHOD(GetDropPoint) (THIS_ _Out_ POINT *ppt) PURE;
STDMETHOD(MoveIcons) (THIS_ _In_ IDataObject *pDataObject) PURE;
STDMETHOD(SetItemPos) (THIS_ _In_ PCUITEMID_CHILD pidl, _In_ POINT *ppt) PURE;
STDMETHOD(IsBkDropTarget) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE;
STDMETHOD(SetClipboard) (THIS_ BOOL bMove) PURE;
STDMETHOD(SetPoints) (THIS_ _In_ IDataObject *pDataObject) PURE;
STDMETHOD(GetItemSpacing) (THIS_ _Out_ ITEMSPACING *pSpacing) PURE;
STDMETHOD(SetCallback) (THIS_ _In_opt_ IShellFolderViewCB* pNewCB, _Outptr_result_maybenull_ IShellFolderViewCB** ppOldCB) PURE;
STDMETHOD(Select) ( THIS_ UINT dwFlags ) PURE;
STDMETHOD(QuerySupport) (THIS_ _Inout_ UINT * pdwSupport) PURE;
STDMETHOD(SetAutomationObject)(THIS_ _In_opt_ IDispatch* pdisp) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IShellFolderView_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellFolderView_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellFolderView_Release(p) (p)->lpVtbl->Release(p)
/*** IShellFolderView methods ***/
#define IShellFolderView_Rearrange(p,a) (p)->lpVtbl->Rearrange(p,a)
#define IShellFolderView_GetArrangeParam(p,a) (p)->lpVtbl->GetArrangeParam(p,a)
#define IShellFolderView_ArrangeGrid(p) (p)->lpVtbl->ArrangeGrid(p)
#define IShellFolderView_AutoArrange(p) (p)->lpVtbl->AutoArrange(p)
#define IShellFolderView_GetAutoArrange(p) (p)->lpVtbl->GetAutoArrange(p)
#define IShellFolderView_AddObject(p,a,b) (p)->lpVtbl->AddObject(p,a,b)
#define IShellFolderView_GetObject(p,a,b) (p)->lpVtbl->GetObject(p,a,b)
#define IShellFolderView_RemoveObject(p,a,b) (p)->lpVtbl->RemoveObject(p,a,b)
#define IShellFolderView_GetObjectCount(p,a) (p)->lpVtbl->GetObjectCount(p,a)
#define IShellFolderView_SetObjectCount(p,a,b) (p)->lpVtbl->SetObjectCount(p,a,b)
#define IShellFolderView_UpdateObject(p,a,b,c) (p)->lpVtbl->UpdateObject(p,a,b,c)
#define IShellFolderView_RefreshObject(p,a,b) (p)->lpVtbl->RefreshObject(p,a,b)
#define IShellFolderView_SetRedraw(p,a) (p)->lpVtbl->SetRedraw(p,a)
#define IShellFolderView_GetSelectedCount(p,a) (p)->lpVtbl->GetSelectedCount(p,a)
#define IShellFolderView_GetSelectedObjects(p,a,b) (p)->lpVtbl->GetSelectedObjects(p,a,b)
#define IShellFolderView_IsDropOnSource(p,a) (p)->lpVtbl->IsDropOnSource(p,a)
#define IShellFolderView_GetDragPoint(p,a) (p)->lpVtbl->GetDragPoint(p,a)
#define IShellFolderView_GetDropPoint(p,a) (p)->lpVtbl->GetDropPoint(p,a)
#define IShellFolderView_MoveIcons(p,a) (p)->lpVtbl->MoveIcons(p,a)
#define IShellFolderView_SetItemPos(p,a,b) (p)->lpVtbl->SetItemPos(p,a,b)
#define IShellFolderView_DropTarget(p,a) (p)->lpVtbl->DropTarget(p,a)
#define IShellFolderView_SetClipboard(p,a) (p)->lpVtbl->SetClipboard(p,a)
#define IShellFolderView_SetPoints(p,a) (p)->lpVtbl->SetPoints(p,a)
#define IShellFolderView_GetItemSpacing(p,a) (p)->lpVtbl->GetItemSpacing(p,a)
#define IShellFolderView_SetCallback(p,a) (p)->lpVtbl->SetCallback(p,a)
#define IShellFolderView_Select(p,a) (p)->lpVtbl->Select(p,a)
#define IShellFolderView_QuerySupport(p,a) (p)->lpVtbl->QuerySupport(p,a)
#define IShellFolderView_SetAutomationObject(p,a) (p)->lpVtbl->SetAutomationObject(p,a)
#endif
/* IProgressDialog interface */
#define PROGDLG_NORMAL 0x00000000
#define PROGDLG_MODAL 0x00000001
#define PROGDLG_AUTOTIME 0x00000002
#define PROGDLG_NOTIME 0x00000004
#define PROGDLG_NOMINIMIZE 0x00000008
#define PROGDLG_NOPROGRESSBAR 0x00000010
#define PROGDLG_MARQUEEPROGRESS 0x00000020
#define PROGDLG_NOCANCEL 0x00000040
#define PDTIMER_RESET 0x00000001
#define PDTIMER_PAUSE 0x00000002
#define PDTIMER_RESUME 0x00000003
#define INTERFACE IProgressDialog
DECLARE_INTERFACE_(IProgressDialog,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IProgressDialog methods ***/
STDMETHOD(StartProgressDialog)(THIS_ _In_opt_ HWND hwndParent, _In_opt_ IUnknown *punkEnableModeless, DWORD dwFlags, _Reserved_ LPCVOID reserved) PURE;
STDMETHOD(StopProgressDialog)(THIS) PURE;
STDMETHOD(SetTitle)(THIS_ _In_ LPCWSTR pwzTitle) PURE;
STDMETHOD(SetAnimation)(THIS_ _In_opt_ HINSTANCE hInstance, UINT uiResourceId) PURE;
STDMETHOD_(BOOL,HasUserCancelled)(THIS) PURE;
STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE;
STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE;
STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, _In_ LPCWSTR pwzString, BOOL bPath, _Reserved_ LPCVOID reserved) PURE;
STDMETHOD(SetCancelMsg)(THIS_ _In_ LPCWSTR pwzCancelMsg, _Reserved_ LPCVOID reserved) PURE;
STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, _Reserved_ LPCVOID reserved) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IProgressDialog_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IProgressDialog_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IProgressDialog_Release(p) (p)->lpVtbl->Release(p)
/*** IProgressDialog methods ***/
#define IProgressDialog_StartProgressDialog(p,a,b,c,d) (p)->lpVtbl->StartProgressDialog(p,a,b,c,d)
#define IProgressDialog_StopProgressDialog(p) (p)->lpVtbl->StopProgressDialog(p)
#define IProgressDialog_SetTitle(p,a) (p)->lpVtbl->SetTitle(p,a)
#define IProgressDialog_SetAnimation(p,a,b) (p)->lpVtbl->SetAnimation(p,a,b)
#define IProgressDialog_HasUserCancelled(p) (p)->lpVtbl->HasUserCancelled(p)
#define IProgressDialog_SetProgress(p,a,b) (p)->lpVtbl->SetProgress(p,a,b)
#define IProgressDialog_SetProgress64(p,a,b) (p)->lpVtbl->SetProgress64(p,a,b)
#define IProgressDialog_SetLine(p,a,b,c,d) (p)->lpVtbl->SetLine(p,a,b,c,d)
#define IProgressDialog_SetCancelMsg(p,a,b) (p)->lpVtbl->SetCancelMsg(p,a,b)
#define IProgressDialog_Timer(p,a,b) (p)->lpVtbl->Timer(p,a,b)
#endif
/* IDeskBarClient interface */
#define INTERFACE IDeskBarClient
DECLARE_INTERFACE_(IDeskBarClient,IOleWindow)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IOleWindow methods ***/
STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE;
STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE;
/*** IDeskBarClient methods ***/
STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ _In_opt_ IUnknown*) PURE;
STDMETHOD_(HRESULT,SetModeDBC)(THIS_ DWORD) PURE;
STDMETHOD_(HRESULT,UIActivateDBC)(THIS_ DWORD) PURE;
STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD, _Out_ LPRECT) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDeskBarClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDeskBarClient_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDeskBarClient_Release(p) (p)->lpVtbl->Release(p)
/*** IOleWindow methods ***/
#define IDeskBarClient_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
#define IDeskBarClient_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
/*** IOleWindow IDeskBarClient ***/
#define IDeskBarClient_SetDeskBarSite(p,a) (p)->lpVtbl->SetDeskBarSite(p,a)
#define IDeskBarClient_SetModeDBC(p,a) (p)->lpVtbl->SetModeDBC(p,a)
#define IDeskBarClient_UIActivateDBC(p,a) (p)->lpVtbl->UIActivateDBC(p,a)
#define IDeskBarClient_GetSize(p,a,b) (p)->lpVtbl->GetSize(p,a,b)
#endif
#define DBC_GS_IDEAL 0
#define DBC_GS_SIZEDOWN 1
#define DBC_HIDE 0
#define DBC_SHOW 1
#define DBC_SHOWOBSCURE 2
/* As indicated by the documentation for IActiveDesktop,
you must include wininet.h before shlobj.h */
#ifdef _WINE_WININET_H_
/* Structs are taken from msdn, and not verified!
Only stuff needed to make it compile are here, no flags or anything */
typedef struct _tagWALLPAPEROPT
{
DWORD dwSize;
DWORD dwStyle;
} WALLPAPEROPT;
typedef WALLPAPEROPT *LPWALLPAPEROPT;