OSDN Git Service

20021009版ソース
[seraphyscrtools/SeraphyScriptTools.git] / generic.cpp
1 #include "stdafx.h"
2 #include "SeraphyScriptTools.h"
3 #include "generic.h"
4
5 void ErrorInfo(int nMessageID)
6 {
7         ICreateErrorInfo *pCErrInfo;
8         if(CreateErrorInfo(&pCErrInfo) == S_OK){
9                 WCHAR wmes[MAX_PATH];
10                 CHAR mes[MAX_PATH];
11                 if(LoadString(_Module.m_hInst,nMessageID,mes,MAX_PATH)){
12                         MultiByteToWideChar(GetACP(),0,mes,-1,wmes,MAX_PATH);
13                         pCErrInfo->SetDescription(wmes);
14                         pCErrInfo->SetGUID(IID_IOverlappedWindow);
15                         pCErrInfo->SetSource(L"SeraphyScriptTools");
16                         IErrorInfo* perrinfo;
17                         if(pCErrInfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo) == S_OK){
18                                 SetErrorInfo(0, perrinfo);
19                                 perrinfo->Release();
20                         }
21                         pCErrInfo->Release();
22                 }
23         }
24 }
25
26 SAFEARRAY* GetArrayFromVariant(VARIANT& var,VARTYPE* pVt)
27 {
28         // \8c^\82Ì\8f\89\8aú\89»
29         if(pVt){
30                 *pVt = VT_ERROR;
31         }
32         VARIANT* pParseVariant = &var;
33         SAFEARRAY* pArray = NULL;
34         if(!(var.vt & VT_ARRAY) && (var.vt & (VT_BYREF|VT_VARIANT))){
35                 // \94z\97ñ\82Å\82Í\82È\82­\82Ä\81A\83o\83\8a\83A\83\93\83g\82Ì\8eQ\8fÆ\93n\82µ\82Å\82 \82ê\82Î\81A\82»\82Ì\83|\83C\83\93\83^\82É\89ð\90Í\82ð\82 \82í\82¹\82é
36                 pParseVariant = var.pvarVal;
37         }
38         if(!(pParseVariant->vt & VT_ARRAY)){
39                 // \94z\97ñ\88È\8aO\82È\82ç\8fI\97¹
40                 return NULL;
41         }
42         // \94z\97ñ\82Å\82 \82é
43         if(pParseVariant->vt & VT_BYREF){
44                 // \94z\97ñ\82Ì\8eQ\8fÆ\93n\82µ\82Å\82 \82é
45                 pArray = *pParseVariant->pparray;
46         }
47         else{
48                 // \94z\97ñ\82»\82Ì\82à\82Ì\82Å\82 \82é
49                 pArray = pParseVariant->parray;
50         }
51         // \8c^\8fî\95ñ\82Ì\8eæ\82è\8fo\82µ (SafeArray\82É\82Í\8c^\8fî\95ñ\82Í\95K\90{\82Å\82Í\82È\82¢\82½\82ß)
52         if(pVt){
53                 *pVt = (pParseVariant->vt & VT_TYPEMASK);
54         }
55         return pArray;
56 }
57
58