Jacek Caban : vbscript: Added support for a few more constants.

Alexandre Julliard julliard at winehq.org
Fri Feb 15 11:19:16 CST 2013


Module: wine
Branch: master
Commit: 97f2912965fae9aa33f10308ef5dc551c9f086b1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=97f2912965fae9aa33f10308ef5dc551c9f086b1

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Feb 15 10:29:42 2013 +0100

vbscript: Added support for a few more constants.

---

 dlls/vbscript/global.c      |   32 ++++----------------------------
 dlls/vbscript/tests/api.vbs |    9 +++++++++
 dlls/vbscript/vbdisp.c      |   11 ++++++++---
 3 files changed, 21 insertions(+), 31 deletions(-)

diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c
index 39b75ab..1a3dae7 100644
--- a/dlls/vbscript/global.c
+++ b/dlls/vbscript/global.c
@@ -1771,30 +1771,6 @@ static HRESULT Global_vbVerticalTab(vbdisp_t *This, VARIANT *arg, unsigned args_
     return E_NOTIMPL;
 }
 
-static HRESULT Global_vbMsgBoxHelpButton(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
-{
-    FIXME("\n");
-    return E_NOTIMPL;
-}
-
-static HRESULT Global_vbMsgBoxSetForeground(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
-{
-    FIXME("\n");
-    return E_NOTIMPL;
-}
-
-static HRESULT Global_vbMsgBoxRight(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
-{
-    FIXME("\n");
-    return E_NOTIMPL;
-}
-
-static HRESULT Global_vbMsgBoxRtlReading(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
-{
-    FIXME("\n");
-    return E_NOTIMPL;
-}
-
 static const builtin_prop_t global_props[] = {
     {DISPID_GLOBAL_VBUSESYSTEM,        NULL, BP_GET, 0},
     {DISPID_GLOBAL_USESYSTEMDAYOFWEEK, NULL, BP_GET, 0},
@@ -1984,10 +1960,10 @@ static const builtin_prop_t global_props[] = {
     {DISPID_GLOBAL_EXECUTE,                   Global_Execute, 0, 1},
     {DISPID_GLOBAL_EXECUTEGLOBAL,             Global_ExecuteGlobal, 0, 1},
     {DISPID_GLOBAL_GETREF,                    Global_GetRef, 0, 1},
-    {DISPID_GLOBAL_VBMSGBOXHELPBUTTON,     Global_vbMsgBoxHelpButton, BP_GET},
-    {DISPID_GLOBAL_VBMSGBOXSETFOREGROUND,  Global_vbMsgBoxSetForeground, BP_GET},
-    {DISPID_GLOBAL_VBMSGBOXRIGHT,          Global_vbMsgBoxRight, BP_GET},
-    {DISPID_GLOBAL_VBMSGBOXRTLREADING,     Global_vbMsgBoxRtlReading, BP_GET}
+    {DISPID_GLOBAL_VBMSGBOXHELPBUTTON,     NULL, BP_GET, MB_HELP},
+    {DISPID_GLOBAL_VBMSGBOXSETFOREGROUND,  NULL, BP_GET, MB_SETFOREGROUND},
+    {DISPID_GLOBAL_VBMSGBOXRIGHT,          NULL, BP_GET, MB_RIGHT},
+    {DISPID_GLOBAL_VBMSGBOXRTLREADING,     NULL, BP_GET, MB_RTLREADING}
 };
 
 HRESULT init_global(script_ctx_t *ctx)
diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs
index 966b256..6472b95 100644
--- a/dlls/vbscript/tests/api.vbs
+++ b/dlls/vbscript/tests/api.vbs
@@ -43,6 +43,11 @@ Sub TestConstant(name, val, exval)
     Call ok(getVT(val) = "VT_I2*", "getVT(" & name & ") = " & getVT(val))
 End Sub
 
+Sub TestConstantI4(name, val, exval)
+    Call ok(val = exval, name & " =  " & val & " expected " & exval)
+    Call ok(getVT(val) = "VT_I4*", "getVT(" & name & ") = " & getVT(val))
+End Sub
+
 TestConstant "vbEmpty", vbEmpty, 0
 TestConstant "vbNull", vbNull, 1
 TestConstant "vbLong", vbLong, 3
@@ -76,6 +81,10 @@ TestConstant "vbFirstFourDays", vbFirstFourDays, 2
 TestConstant "vbFirstFullWeek", vbFirstFullWeek, 3
 TestConstant "vbTrue", vbTrue, -1
 TestConstant "vbFalse", vbFalse, 0
+TestConstantI4 "vbMsgBoxHelpButton", vbMsgBoxHelpButton, 16384
+TestConstantI4 "vbMsgBoxSetForeground", vbMsgBoxSetForeground, 65536
+TestConstantI4 "vbMsgBoxRight", vbMsgBoxRight, 524288
+TestConstantI4 "vbMsgBoxRtlReading", vbMsgBoxRtlReading, 1048576
 
 Sub TestCStr(arg, exval)
     dim x
diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c
index b37caf6..843d5c8 100644
--- a/dlls/vbscript/vbdisp.c
+++ b/dlls/vbscript/vbdisp.c
@@ -150,9 +150,14 @@ static HRESULT invoke_builtin(vbdisp_t *This, const builtin_prop_t *prop, WORD f
         break;
     case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
         if(!prop->proc && prop->flags == BP_GET) {
-            assert((INT16)prop->min_args == prop->min_args);
-            V_VT(res) = VT_I2;
-            V_I2(res) = prop->min_args;
+            int val = prop->min_args;
+            if(val < 0x4000) {
+                V_VT(res) = VT_I2;
+                V_I2(res) = val;
+            }else {
+                V_VT(res) = VT_I4;
+                V_I4(res) = val;
+            }
             return S_OK;
         }
         break;




More information about the wine-cvs mailing list