OSDN Git Service

makefile変更
[dokopop/dokopop.git] / ExMODIst / main.cpp
1 //---------------------------------------------------------------------------
2 #include <windows.h>
3 #include <oleidl.h>
4 #pragma hdrstop
5
6 //---------------------------------------------------------------------------
7
8 const GUID CLSID_Document = 
9         {0x40942a6c,0x1520,0x4132,{0xbd,0xf8,0xbd,0xc1,0xf7,0x1f,0x54,0x7b}}; 
10
11 #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
12                 const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
13
14 MIDL_DEFINE_GUID(IID, IID_IDocument,0xD4073843,0xA58A,0x469A,0xA8,0xE2,0xCF,0xF3,0xFF,0x77,0xEE,0x4E);
15
16 #define _Inout_
17 #define _In_
18 #define _Out_
19 #define _Deref_out_opt_
20
21 struct __POSITION {};
22 typedef __POSITION* POSITION;
23
24 typedef /* [v1_enum] */ 
25 enum WTS_ALPHATYPE
26         {       WTSAT_UNKNOWN   = 0,
27         WTSAT_RGB       = 1,
28         WTSAT_ARGB      = 2
29         }       WTS_ALPHATYPE;
30
31 class IFilterChunkValue;
32         
33 interface IDocument
34 {
35 protected:
36         IDocument() : m_refCount(0)
37         {
38         }
39
40 public:
41         virtual ~IDocument()
42         {
43         }
44
45         virtual LONG AddRef()
46         {
47                 return InterlockedIncrement((long*)&m_refCount);
48         }
49
50         virtual LONG Release()
51         {
52                 //__assert__(m_refCount > 0);
53                 if (InterlockedDecrement((long*)&m_refCount) == 0)
54                 {
55                         delete this;
56                         return 0;
57                 }
58
59                 return m_refCount;
60         }
61
62         virtual HRESULT LoadFromStream(
63                 _Inout_ IStream* pStream,
64                 _In_ DWORD grfMode) = 0;
65         virtual void InitializeSearchContent() = 0;
66         virtual void BeginReadChunks() = 0;
67
68         virtual BOOL GetThumbnail(
69                 _In_ UINT cx,
70                 _Out_ HBITMAP* phbmp,
71                 _Out_ WTS_ALPHATYPE* pdwAlpha) = 0;
72
73         virtual void ClearChunkList() = 0;
74         virtual BOOL SetChunkValue(
75                 _In_ IFilterChunkValue* value) = 0;
76         virtual BOOL ReadNextChunkValue(
77                 _Deref_out_opt_ IFilterChunkValue** value) = 0;
78         virtual void RemoveChunk(
79                 _In_ REFCLSID guid,
80                 _In_ DWORD pid) = 0;
81         virtual POSITION FindChunk(
82                 _In_ REFCLSID guid,
83                 _In_ DWORD pid) = 0;
84
85         virtual LPVOID GetContainer() const = 0;
86
87 protected:
88         volatile LONG m_refCount;
89 };
90
91 #pragma argsused
92 bool MODIAvail();
93 int main(int argc, char* argv[])
94 {
95         if (MODIAvail())
96                 return 1;
97         return 0;
98 }
99
100 bool MODIAvail()
101 {
102         bool exist = false;
103         HRESULT hr = CoInitialize(0);
104         if (SUCCEEDED(hr)){
105                 IDocument *IDobj = NULL;
106                 hr = ::CoCreateInstance(CLSID_Document, NULL, CLSCTX_ALL, IID_IDocument, (void**)&IDobj);
107                 if (SUCCEEDED(hr)){
108 #if 0
109                         hr = IDobj->Create(AsciiToBSTR("H:\\temp\\nishikawat\\amodi\\2014-12-02-151156.bmp"));
110                         if (SUCCEEDED(hr){
111                                 
112                         }
113 #endif
114                         exist = true;
115                         IDobj->Release();       //TODO: stack\82ð\89ó\82µ\82Ä\82µ\82Ü\82¤
116                 }
117         }
118         CoUninitialize();
119
120         return exist;
121 }
122
123