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